1
Здравствуйте, Гость!
Мы просим вас войти или зарегистрироваться у нас на сайте.
Но если вам не охото регистрироваться
вы можете воспользоваться формой Быстрой регистрации
Cool Text: Logo and Graphics Generator
Главная » Каталог сайтов » Компьютеры

Железо [0] Оцифрованный мир [0]
Компьютерная безопасность [0] Периферия [0]
Компьютерная документация [0] Программирование [17]
Компьютерные онлайн форумы [0] Программное обеспечение [0]
Мобильные ПК [0] Сети [0]
Операционные системы [0]

В разделе сайтов: 17
Показано сайтов: 11-15
Страницы: « 1 2 3 4 »

1.6. ТЕХНОЛОГИИ И ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ

Технологии программирования - это апробированные стратегии создания программ, которые излагаются в виде методик с информационными фондами, описаниями проектных процедур и проектных операций. Существуют технология структурного программирования, технология проектирования программ с рациональной структурой данных, технология объектно-ориентированного программирования, технология визуального программирования.
В каждой из этих технологий используется одна или несколько парадигм программирования (концепций, систем взглядов). Последние представляют собой разные подходы к написанию программ. Для каждой из них необходимы: свой тип мышления, особая школа обучения, приемы и способы программирования, определяемые используемым языком.
Существуют четыре основные парадигмы, которые описывают большинство сегодняшних методов программирования: императивная, аппликативная, основанная на системе правил и объектно-ориентированная.
Императивная парадигма. Эта модель вытекает из особенностей аппаратной части стандартного компьютера, выпол­няющей инструкции (команды) последовательно. Основным видом абстракции, используемым в данной парадигме, являются алгоритмы. На основе ее разработано множество операторно-ориентиро-ванных языков программирования. Программа на таком языке состоит из последовательности операторов, выполнение каждого из которых влечет за собой изменение значения в одной или нескольких ячейках памяти. В целом синтаксис такого языка имеет вид:
Оператор_1:
Оператор_2:
Обычно при первом знакомстве с концепциями программирования люди сталкиваются именно с этой моделью, и многие широко распространенные языки поддерживают именно ее (например, С, C++, FORTRAN, ALGOL, PL/I, Pascal, Ada, Smalltalk и COBOL).
Аппликативная парадигма. Представляет собой другой взгляд на вычисления, производимые с помощью языка про­граммирования. В основу этой парадигмы положено рассмотрение функции, которую выполняет программа. Здесь не рассматривается последовательность состояний, через которые должна пройти вычислительная машина. Вопрос ставится по-другому: какую функцию необходимо применить к начальному состоянию машины (путем выбора начального набора переменных и комбинирования их определенным образом), чтобы получить желаемый результат?
Языки, в которых акцентирован именно этот взгляд на вычисления, называются аппликативными, или функциональными. Синтаксис такого языка, как правило, выглядит следующим образом: 
Функция_n (... функция_2 (функция_1 (данные) )...) 
Такую модель поддерживают такие языки как ML и LISP.
Парадигма, основанная на системе правил. Языки, основанные на этой парадигме, осуществляют проверку наличия необходимого разрешающего условия и в случае его обнаружения выполняют соответствующее действие. Наиболее известным языком, основанным на системе правил, является Prolog. Он называется также языком логического программирования.
Выполнение программы на подобном языке похоже на выполнение программы, написанной на императивном языке. Однако операторы выполняются не в той последовательности, в которой они определены в программе. Порядок выполнения определяют разрешающие условия. Синтаксис таких языков выглядит следующим образом:
разрешающее условие_1 —> действие_1 разрешающее условие_2 —> действие__2
разрешающее условие_n —> действие _n
Иногда правила записываются в виде «действие if разрешающее условие», когда выполняемое действие записывается слева.
Объектно-ориентированная парадигма. В этой модели строятся сложные объекты данных. Для операций над ними определяется некоторый ограниченный набор методов. Создаваемые объекты могут наследовать свойства более простых объектов. Благодаря такой возможности объектно-ориентированные программы имеют высокую эффективность, свойственную программам, написанным на императивных языках. Возможность разработки различных классов, которые используют ограниченный набор объектов данных, обусловливает гибкость и надежность, которые свойственны аппликативному языку.
Существуют и другие парадигмы, что объясняется необходимостью решать разные задачи. Нельзя считать какую-либо парадигму наилучшей во всех областях практического применения. Например, для вычислительных задач более пригодна императивная парадигма, а для проектирования интеллектуальных систем применяется парадигма, ориентированная на правила. В последние годы особую популярность приобрела парадигма визуального программирования.
Программирование | Переходов: 200 | Добавил: programmirovanie | Дата: 20.06.2013

1.7. ТРАНСЛЯЦИЯ И ИНТЕРПРЕТАЦИЯ ПРОГРАММ

Компьютер представляет собой интегрированный набор алгоритмов и структур данных, способный хранить и выполнять программы. Компьютер может быть создан как реальное физическое устройство, которое называют просто компьютером. Но он также может быть построен с помощью программ, выполняемых на каком-то другом компьютере, тогда он называется программно-моделируемым или виртуальным компьютером, состоящим частично из аппаратуры и частично из программного обеспечения.
Подавляющее большинство программ пишется на языках программирования высокого уровня, существенно отличающихся от машинного языка реального компьютера. Теоретически можно создать аппаратный компьютер, использующий некий язык высокого уровня в качестве машинного, но это было бы очень сложно и дорого. К тому же он был бы крайне негибким, поскольку такой компьютер сложно (хотя и можно) использовать совместно с другими языками высокого уровня. Более практичное решение - аппаратно реализовать язык очень низкого уровня, что обеспечит выполнение наиболее распространенных элементарных операций и снабдить компьютер дополнительным программным обеспечением для взаимодействия с программами, написанными на языках высокого уровня.
Поэтому возникает вопрос: как организовать выполнение таких программ на конкретном компьютере? Для этой задачи существует два основных решения.
Трансляция (компиляция). Это метод перевода программ, написанных на языках высокого уровня, в эквивалентные програм­мы на машинном языке используемого компьютера. После этого интерпретатор, встроенный в аппаратную часть микропроцессора, непосредственно выполняет оттранслированную в машинный код программу. Преимущество этого метода - очень быстрое выполнение программы после завершения процесса трансляции.
Транслятор - это языковой процессор, который воспринимает программы на некотором исходном языке в качестве входных данных, а на выходе выдает эквивалентные по своей функциональности программы, но уже на другом, так называемом объектном языке (который также может быть произвольного уровня).
Ассемблер - это транслятор, у которого исходным языком является символическое представление машинного кода (ассемблер), а объектным языком является некая разновидность машинного языка какого-либо реального компьютера.
Компилятор — транслятор, для которого исходным является язык высокого уровня, а его объектный язык близок к машинному языку реального компьютера. Это либо язык ассемблера, либо какой-нибудь вариант машинного языка. Например, программы на языке С компилируются, как правило, в программы на языке ассемблера, которые затем транслируются ассемблером в машинный язык.
Программирование | Переходов: 200 | Добавил: programmirovanie | Дата: 20.06.2013

Программирование | Переходов: 209 | Добавил: avr | Дата: 09.06.2013


Please download the latest version of V-USB from the list below. The version number is the release date in ISO date format (YYYYMMDD). Versions older than 20080418 were distributed as part of the PowerSwitch project. Please download older versions there. V-USB was distributed under the name AVR-USB before April 2009.

V-USB's git repository is on github.com.

http://www.obdev.at/products/vusb/download.htmlFor release notes, see the list under the download box.
Программирование | Переходов: 248 | Добавил: AVR | Дата: 09.06.2013

Данный генератор я часто применяю для проверки прохождения сигнала через схему. Для мониторинга работоспособности того же конвертера уровней. Программа периодически, период задается вручную, отправляет определенное количество сообщений, количество сообщений и текст сообщений задаются вручную.
Единственное замечание по длине сообщения есть, так как объем оперативной памяти микроконтроллера AtMega8 ограничен соответственно и объем данных тоже, который данный микроконтроллер может обработать. Предел 12-13 символов. При необходимости отправки сообщения по нажатию кнопки, программа легко адаптируется. В общем поле для идей более чем широкое.

Собственно код программы:


//Подключаем стандартные библиотеки


#include <avr/io.h> //библиотека ввода_вывода



//перечисляем переменные необходимые для работы

int x,t,s,p,line;



//Задаем наши сообщения

unsigned char msg1[] = "Initializing";

unsigned char msg2[] = "done";

unsigned char msg3[] = "xxxxxxxxxx";

unsigned char msg4[] = "Hello from";

unsigned char msg5[] = "avrlab.com";

unsigned char msg6[] = "xxxxxxxxxx";



#define nop() {asm("nop");}//ассемблеровская функция необходимая для формирования задержки



//Функция задержки

void delay(int t)

{for (x=t; x>0 ;x--)

nop (); }



//Функция большой задержки

void long_delay ()

{for (p=1; p<23; p++)

{delay(5000); }

}



//Функция инициализации модуля USART микроконтроллера AtMega8

void USART_Init( unsigned int ubrr)

{

/* Set baud rate */

UBRRH = (unsigned char)( ubrr>>8 );//Декларируем переменную для скорости соединения

UBRRL = (unsigned char)ubrr;

UCSRB = ( 1<<RXEN )|( 1<<TXEN );//Разрешаем прием и передачу данных

UCSRC=0x86;//

UCSRC = ( 1<<URSEL )|( 1<<USBS ) | ( 3<<UCSZ0 );

}



//Функция приема данных

unsigned char USART_Receive( void )

{while ( !(UCSRA & (1<<RXC)) ); //Ожидание приема символа

return UDR; } //Возврат принятого символа



//Функция отправки данных

void USART_Transmit( unsigned char data )

{while ( !(UCSRA & (1<<UDRE)) ); //Ожидание опустошения буфера приема

UDR = data; //Начало передачи данных

}



//Функция отправки сообщения

void msgout (unsigned char msg[],int line)

{s=0;

for (;msg[s];s++)

{USART_Transmit(msg[s]);}



if (line ==1)//Переход на новую строку

{USART_Transmit(0x0d); //Отправляем команду перехода в начало строки

USART_Transmit(0x0a); }//Отправляем команду переходу на новую строку

}



//Главная функция

int main (void)

{

USART_Init (8);//Инициализируем модуль USART скорость подключения 115200 кбит/с при частоте 16MHz

while(1)//вечный цикл

{

msgout(msg1,1);//Отправляем первое сообщение

msgout(msg2,1);//...второе

msgout(msg3,1);//...третье

msgout(msg4,1);//...

msgout(msg5,1);//...

msgout(msg6,1);//Отправляем шестое сообщение

long_delay ();//Большая пауза между отправками сообщения

}

}

Данные снимаются с соответствующих выводов микроконтроллера ATmega8 и через преобразователь UART-RS232 передаются на персональный компьютер, где уже обрабатываются программой Terminal 1.9

Скачать файлы проекта "Генератор сообщений по USART"

Программирование | Переходов: 195 | Добавил: avr | Дата: 09.06.2013

1-5 6-10 11-15 16-17