Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

XVIII. Основные понятия. Алфавит. Синтаксис. Семантика

Конец программы

Начало программы

Конец функции

Конец цикла

СУММА=S

писать("введите значения массива А")

начало цикла для j=1 до 15

читать А(j)

конец цикла

Р:= СУММА(G,W)*СУММА(T,L)

писать ("произведение равно",Р:6)

В программу введены константы: G=1; W=12;T=8;L=15.

Ответ. Результатом работы программы является произведение сумм элементов массива с 1 по 12 и с 8 по 15

9. Задан фрагмент алгоритма:

1. Если А<В, то С=В-А иначе С=2*(А-В)

2. D=0

3, Пока С>А выполнять: D=D+1;C=C-1

Ответ. При А=8; В=3 на выходе из этого фрагмента переменные D и C примут значения: D=2; C=8

10. Представлен алгоритм (div(x,y) - целочисленное деление х на у, mod(х,у) - целый остаток от деления):

k=50

Выбор

при div(k,12)=4: D:=k

при mod(k,12)<5: D:=2

при mod(k,12)>9: D:=3

иначе D:=1

Всё

Ответ. Значение переменной D после выполнения алгоритма равно 2

11. Представлен алгоритм (mod(х,у) - целый остаток от деления):

k=70

Выбор

при mod(k,12)=7: D:=k

при mod(k,12)<5: D:=2

при mod(k,12)>9: D:=3

иначе D:=1

Всё

Ответ. Значение переменной D после выполнения алгоритма равно 3

12. Представлен фрагмент программы:

X:=9; Y:=7; P:=X=Y; Q:=Y>X; P:=P and Q

Ответ. В результате выполнения фрагмента программы переменные P и Q примут значения P=false; Q=false

Раздел 7.
Языки программирования высокого уровня

Эволюция и классификация языков программирования. Основные понятия языков программирования. Структуры и типы данных языка программирования

В истории программирования можно выделить несколько этапов по способу программирования алгоритмов задач:

1. Программирование в машинных командах.

2. Машинно-ориентированные языки низкого уровня.

3. Языки высокого уровня.

4. Языки структурного программирования.

5. Объектно-ориентированные языки.

 

Для того, чтобы ЭВМ могла выполнять программу, программа должна быть записана по строгим правилам в виде, доступном процессору, т. е. представлять собой последовательность двоичных чисел и кодов. Такие коды называются машинными кодами, а программа, написанная на машинном языке, – исполняемым модулем. Записывать программу на машинном языке неудобно. Это нудная и долгая работа не обходилась без ошибок, которые было очень непросто найти.

Поэтому возникла идея записывать программу на так называемом алгоритмическом языке или языке программирования. Языки программирования – специально разработанные искусственные языки, предназначенные исключительно для записи алгоритмов, исполнение которых поручается ЭВМ.

Обычный разговорный язык состоит из четырех основных элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания - выражениями, предложения - операторами. Алгоритмический язык (как и любой другой язык), образуют три его составляющие: алфавит, синтаксис и семантика.

Алфавит – фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.

Синтаксис - правила построения из символов алфавита специальных конструкций, с помощью которых составляется алгоритм.

Семантика - система правил толкования конструкций языка. Таким образом, программа составляется с помощью соединения символов алфавита в соответствии с синтаксическими правилами и с учетом правил семантики.

XIX. Краткая история и классификация
алгоритмических языков программирования

Ассемблер – язык низкого уровня, в котором каждая конструкция заменяется одной или несколькими (не больше пяти) машинными командами, но они записываются не в двоичном коде, а с помощью удобных для человека символов.

Язык высокого уровня – каждая конструкция реализуется через много (более пяти) машинных команд.

Первые языки программирования были очень примитивными и мало чем отличались от формализованных упорядоченных последовательностей единиц и нулей, понятных компьютеру. Использование таких языков было крайне неудобно с точки зрения программиста, так как он должен был знать числовые коды всех машинных команд, должен был сам распределять память под команды программы и данные.

Для того, чтобы облегчить общение человека с ЭВМ были созданы языки программирования типа Ассемблер. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические обозначения, которые легче запомнить. Язык программирования приблизился к человеческому языку, и отдалился от языка машинных команд.

Один из первых языков программирования высокого уровня – Фортран (For mula Tran slation) был создан в середине 50-х годов. Благодаря своей простоте и тому, что на этом языке накоплены большие библиотеки программ Фортран и в наши дни остается одним из самых распространенных. Он используется для инженерных и научных расчетов, для решения задач физики и других наук с развитым математическим аппаратом.

Для решения экономических задач был создан язык программирования - Кобол.

Расширение областей применения ЭВМ влечет за собой создание языков, ориентированных на новые сферы применения: Снобол – алгоритмический язык для обработки текстовой информации, Лисп - алгоритмический язык для обработки символов. Лисп находит широкое применение в исследованиях по созданию искусственного интеллекта.

В 1968 г. был объявлен конкурс на лучший язык программирования для обучения студентов. Победителем стал язык Алгол-68, но широкого распространения не получил. Для этого конкурса Никлаус Вирт создал язык Паскаль, достаточно простой, удобный, с наличием мощных средств структурирования данных. Хотя Паскаль был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Для обучения младших школьников Самуэлем Пайпертом был разработан язык Лого. Он отличается простотой и богатыми возможностями.

Широкое распространение в школах в качестве обучающего языка получил язык Бейсик, позволяющий взаимодействовать с ЭВМ в режиме непосредственного диалога. Спустя много лет после изобретения Бейсика, он и сегодня самый простой для освоения из десятков языков общецелевого программирования.

Необходимость разработки больших программ, управляющих работой ЭВМ, потребовала создания специального языка программирования СИ в начале 70-х г. Он является одним из универсальных языков программирования. В отличии от Паскаля, в нем заложены возможности непосредственного обращения к некоторым машинным командам и к определенным участкам памяти компьютера. Си широко используется как инструментальный язык для разработки операционных систем, трансляторов, баз данных и других системных и прикладных программ. Си – это язык программирования общего назначения, хорошо известный своей эффективностью, экономичностью, и переносимостью. Во многих случаях программы, написанные на Си, сравнимы по скорости с программами, написанными на языке Ассемблера. При этом они имеют лучшую наглядность и их более просто сопровождать. Си сочетает эффективность и мощность в относительно малом по размеру языке.

Появление функционального программирования привело к созданию языка Пролог. Этот язык программирования разрабатывался для задач анализа и понимания естественных языков на основе языка формальной логики и методов автоматического доказательства теорем.

В 80-х г. 20 века был создан язык Ада. Этот язык в дополнение к классическим свойствам, обеспечивает программирование задач реального времени и моделирования параллельного решения задач.

Существуют различные классификации языков программирования. По наиболее распространенной классификации все языки программирования делят на языки низкого, высокого и сверхвысокого уровня.

В группу языков низкого уровня входят машинные языки и языки символического кодирования: (Автокод, Ассемблер). Операторы этого языка – это те же машинные команды, но записанные мнемоническими кодами, а в качестве операндов используются не конкретные адреса, а символические имена. Все языки низкого уровня ориентированы на определенный тип компьютера, т. е. являются машинно-зависимыми. Машинно-ориентированные языки – это языки, наборы операторов и изобразительные средства которых существенно зависят от особенностей ЭВМ (внутреннего языка, структуры памяти и т.д.).

Следующую, существенно более многочисленную группу составляют языки программирования высокого уровня. Это Фортран, Алгол, Кобол, Паскаль, Бейсик, Си, Пролог и т.д. Эти языки машинно-независимы, т.к. они ориентированы не на систему команд той или иной ЭВМ, а на систему операндов, характерных для записи определенного класса алгоритмов. Однако программы, написанные на языках высокого уровня, занимают больше памяти и медленнее выполняются, чем программы на машинных языках.

К языкам сверхвысокого уровня можно отнести лишь Алгол-68 и APL. Повышение уровня этих языков произошло за счет введения сверхмощных операций и операторов.

Другая классификация делит языки на вычислительные и языки символьной обработки. К первому типу относят Ф ортран, Паскаль, Алгол, Бейсик, Си, ко второму типу - Лисп, Пролог, Снобол и др.

В современной информатике можно выделить два основных направления развития языков программирования: процедурное и непроцедурное.

Процедурное программирование возникло на заре вычислительной техники и получило широкое распространение. В процедурных языках программа явно описывает действия, которые необходимо выполнить, а результат задается только способом получения его при помощи некоторой процедуры, которая представляет собой определенную последовательность действий.

Среди процедурных языков выделяют в свою очередь структурные и операционные языки. В структурных языках одним оператором записываются целые алгоритмические структуры: ветвления, циклы и т.д. В операционных языках для этого используются несколько операций. Широко распространены следующие структурные языки: Паскаль, Си, Ада, ПЛ/1. Среди операционных известны Фортран, Бейсик, Фокал.

Непроцедурное (декларативное) программирование появилось в начале 70-х годов 20 века, но стремительное его развитие началось в 80-е годы, когда был разработан японский проект создания ЭВМ пятого поколения, целью которого явилась подготовка почвы для создания интеллектуальных машин. К непроцедурному программированию относятся функциональные и логические языки.

В функциональных языках программа описывает вычисление некоторой функции. Обычно эта функция задается как композиция других, более простых, те в свою очередь разлагаются на еще более простые и т.д. Один из основных элементов в функциональных языках - рекурсия, то есть вычисление значения функции через значение этой же функции от других элементов. Присваивания и циклов в классических функциональных языках нет.

В логических языках программа вообще не описывает действий. Она задает данные и соотношения между ними. После этого системе можно задавать вопросы. Машина перебирает известные и заданные в программе данные и находит ответ на вопрос. Порядок перебора не описывается в программе, а неявно задается самим языком. Классическим языком логического программирования считается Пролог. Построение логической программы вообще не требует алгоритмического мышления, программа описывает статические отношения объектов, а динамика находится в механизме перебора и скрыта от программиста.

Можно выделить еще один класс языков программирования - объектно - ориентированные языки высокого уровня. На таких языках не описывают подробной последовательности действий для решения задачи, хотя они содержат элементы процедурного программирования. Объектно-ориентированные языки, благодаря богатому пользовательскому интерфейсу, предлагают человеку решить задачу в удобной для него форме. Примером такого языка может служить язык программирования визуального общения Object Pascal.

Языки описания сценариев, такие как Perl, Python, Rexx, Tcl и языки оболочек UNIX, предполагают стиль программирования, весьма отличный от характерного для языков системного уровня. Они предназначаются не для написания приложения с нуля, а для комбинирования компонентов, набор которых создается заранее при помощи других языков. Развитие и рост популярности Internet также способствовали распространению языков описания сценариев. Так, для написания сценариев широко употребляется язык Perl, а среди разработчиков Web-страниц популярен JavaScript.

XX. Основные типы данных
1. Целые:
– Byte- 0-256;
– Integer – -32768– 32767;
– Long – -2 147 483 648 – 2 147 483 647)/

2. Вещественные:
– Single – 7-8 значащих цифр от -1,4*10-45 до 3,4*1038;
– Double – 15-16 значащих цифр от -5,0*10-324 до 1,7*10308).

3. символьные

4. логические (Boolean)

 

XXI. Понятие о трансляции
Трансляция
– преобразование программы, написанной на алгоритмическом языке, в программу, написанную: в машинных командах (кодах процессора). В настоящее время применяются две технологии трансляции: интерпретация и компиляция. Программа, которая осуществляет трансляцию, называется транслятором или, с учётом технологии, интерпретатором или компилятором. В интегрированные среды программирования для языков высокого уровня обычно включают как интерпретаторы, так и компиляторы.

Исходный модуль – программа, написанная на алгоритмическом языке (обычно высокого уровня).

Интерпретатор – транслятор, который работает пошагово: переводит в машинные команды очередную строку исходного модуля, сразу же выполняет её, «забывает» и переходит к обработке следующей строки. Удобен на этапе отладки программы, так как если в ней есть ошибка, понятно, в какой она строке.

Компилятор – транслятор, преобразующая алгоритм, записанный на языке высокого уровня (исходный модуль), в программу, состоящую из машинных команд (исполняемый модуль). Удобен для расчётов по уже отлаженной и протестированной программе.

Процесс компиляции разбивается на два этапа: собственно компиляцию и компоновку.

 
 

Технология работы компилятора:

Объектный модуль – промежуточная программа, в которой конструкции исходного модуля переведены в машинные коды, но ещё не дополнены стандартными и служебными программами, необходимыми для её работы.

Исполняемый модуль – программа, написанная в машинных кодах и полностью готовая к работе.

------------------------------------------------------------------------------------------------------

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

<== предыдущая лекция | следующая лекция ==>
XVII. Основы алгоритмизации | Структурное программирование. XXII. Основные технологии программирования Модульное программирование
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 1284; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.