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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



Во всяком языке программирования определены способы организации данных и способы организации действий над данными. Кроме того, существует понятие «элементы языка», включающее в себя множество символов (алфавит), лексемы и другие изобразительные средства языка программирования. Несмотря на разнообразие указанных языков, их изучение происходит приблизительно по одной схеме. Это связано с общностью структуры различных языков программирования высокого уровня, которая схематически отражена на рис. 5.

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

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

Компьютер же — автомат, воспринимающий все «всерьез». В текстах программ нет избыточности, компьютер сам не исправит даже очевидной (с точки зрения человека) ошибки. Он может лишь указать на место, которое «не понял», и вывести замечание о предполагаемом характере ошибки. Исправить же ошибку должен программист.4

Для описания синтаксиса языка программирования тоже нужен какой-то язык.

Задания массива элементы которого вводятся с клавиатуры.

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

Язык программирования — это способ записи программ решения различных задач на ЭВМ в понятной для компьютера форме. Процессор компьютера непосредственно понимает язык машинных команд (ЯМК). Программы на ЯМК программисты писали лишь для самых первых ламповых машин — ЭВМ первого поколения. Программирование на ЯМК — дело непростое. Программист должен знать числовые коды всех машинных команд, должен сам распределять память под команды программы и данные. В 1950-х гг. появляются первые средства автоматизации программирования — языки Автокоды. Позднее для языков этого

уровня стало применяться название «Ассемблеры». Появление языков типа Автокод-Ассемблер облегчило участь программистов. Переменные величины стали изображаться символическими именами. Числовые коды операций заменились на мнемонические (словесные) обозначения, которые легче запомнить. Язык программирования стал понятнее для человека, но при этом удалился от языка машинных команд. Чтобы компьютер мог исполнять программы на Автокоде, потребовался специальный переводчик — транслятор. Транслятор — это системная программа, переводящая текст программы на Автокоде в текст эквивалентной программы на ЯМК. Языки программирования высокого уровня (ЯПВУ) являются машинно-независимыми языками. Первыми популярными языками высокого уровня, появившимися в 1950-х гг., были Фортран, Кобол (в США) и Алгол (в Европе). Языки Фортран и Алгол были ориентированы на научно-технические расчеты математического характера. Кобол — язык для программирования экономических задач. В Коболе по сравнению с двумя другими названными языками слабее развиты математические средства, но зато хорошо развиты средства обработки текстов, организация вывода данных в форме требуемого документа. Для первых ЯПВУ предметная ориентация языков была характерной чертой. Большое количество языков программирования появилось в 1960—1970-х гг. А за всю историю ЭВМ их было создано более тысячи.

42. Операции со строковыми величинами, примеры.

Цикл с предусловием в Паскале.

В Паскале, существуют все три типа операторов

цикла: цикл с предусловием, цикл с постусловием и цикл с параметром.

Цикл с предусловием. Формат оператора цикла с предусловием:

while (выражение) оператор; Цикл повторяет свое выполнение, пока значение выражения отлично от нуля, т. е. заключенное в нем условие цикла истинно. В качестве примера использования оператора цикла рассмотрим программу вычисления факториала целого положительного числа NL Сопоставим программу решения этой задачи, написанную на Паскале.

Пример 1.

Программа на Паскале

Program Faktorial

Var F:Longint; i,N:Integer;

Begin write('N=');

ReadLn(N);

F:=l; i:=l;

While i<N Do

Begin

F:=F*i;

i:=i+l

End;

WriteLn(N,'!=',F)

End.

Обратите внимание на операторы в теле цикла. При практическом использовании этой программы не следует забывать, что факториал — очень быстро растущая функция, и поэтому при определенных значениях N выйдет из диапазона, соответствующего типу long int. Задав для переменной F тип unsigned long, можно сдвинуть эту границу, но этого может оказаться недостаточно. Предлагаем в качестве самостоятельного задания исследовать предельные значения N для двух указанных типов переменной F. Интересно свойство следующего оператора: while (1); Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается. Тело в этом цикле представляет собой пустой оператор. При исполнении такого оператора программа будет «топтаться на месте». Рассмотрим еще один пример использования оператора цикла while. Вернемся к задаче итерационного вычисления суммы гармонического ряда: 1 +1/2+1/3+... с заданной точностью г (см.\ разд. 3.10, пример 2

Пример 2.

Программа на Паскале Программа на Си++

Var n: Integer; S,eps: // Сумма

Real; //гармонического ряда

Begin finclude <iostream.h>

Write ('Точность:'); #include <limits.h>

ReadLn(eps); void main()

n:=l; S:=0; {int n=l;

While (l/n>eps) double S=0, eps;

And(n<MAXINT) Do cout«"To4HOCTb: ";

Begin S:=S+l/n; cin»eps;

n:=n+l while (1.0/n>eps &&

End; n<INT_MAX)

WriteLn('Сумма=',S) S+=l./n++;

End. cout<<"\nCyMMa="<<S;}

Файл l i m i t s. h, подключаемый препроцессором, содержит определения предельных констант для целых типов данных. В частности, константа с именем INT_MAX равна максимальному значению типа i n t в данной реализации компилятора. Если для типа int используется двухбайтовое представление, то INT_MAX=327 67. В этом же заголовочном файле определены и другие константы: INT_MIN=-327 68; LONG_MAX=2147483647 И Т.Д. Цикл с постусловием. Формат оператора цикла с постусловием: do оператор while (выражение); Цикл выполняется до тех пор, пока выражение отлично от Нуля, т.е. заключенное в нем условие цикла истинно. Выход из Цикла происходит после того, как значение выражения станет ложным, иными словами равным нулю. Таким образом, в отличие от оператора repeat... u n t i l, используемого в Паскале, где в конце пишется условие выхода из цикла, в операторе do... while в Си в конце пишется условие повторения цикла. В качестве примера рассмотрим программу вычисления N1, в которой используется цикл с постусловием, и сопоставим ее с аналогичной программой на Паскале.

Пример 3.

Программа на Паскале

Program Faktorial

Var F:Longint; i,N:

Integer;

Begin Write('N=');

ReadLn(N);

F:=l; i:=l;

Repeat

F:=F*i;

i:=i+l

Until i>N;

WriteLn(N,'!=',F)

End.



Поделиться:


Последнее изменение этой страницы: 2016-09-18; просмотров: 1160; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.63.174 (0.013 с.)