Вопрос 15.
Язык программирования.
В 1968–1971 гг. швейцарский ученый Никлаус Вирт в Цюрихском Институте информатики разработал язык программирования Паскаль. Он стремился создать средство, с помощью которого можно было бы эффективно обучать программированию.
Поднять ремесло программирования до уровня если не науки, то сложной инженерной деятельности - вот что входило в замысел создателя Паскаля. Язык должен определенным образом формировать мышление программистов, помогать им почувствовать законы программирования. Не случайно было выбрано и название: в честь выдающегося французского математика Блеза Паскаля (1623–1662), построившего первую вычислительную машину (1642).
Выйдя за чисто учебные рамки, Паскаль стал полноправным и очень популярным – особенно среди студентов и научных работников – алгоритмическим языком высокого уровня. Он в естественной форме отразил важнейшие современные концепции технологии разработки программ: развитая система типов, ориентация на принципы структурного программирования, поддержка процесса пошаговой разработки.
Работа на Паскале связана с большими затратами времени и мыслительных усилий, но это вознаграждается отточенностью и надежностью получаемого программного изделия. Паскаль дает средство для разработки больших и сложных программ с известной гарантией их надежности и безошибочности. Описание языка Паскаль было сделано в 1971 году, а в 1973 году появился первый транслятор с этого языка. Транслятор (переводчик) с языка высокого уровня на язык машины бывает двух видов: интерпретатор и компилятор. При работе на Паскале используется транслятор - компилятор, который переводит на язык машинных кодов набранную программу (исходный модуль) целиком при условии, что в программе нет синтаксических ошибок. Исходный модуль (программа) набирается в текстовом редакторе, встроенном в Турбо Паскаль. Откомпилированная программа называется объектным модулем, который исполняется с определенным набором входных данных. Различают язык Паскаль и интегрированную среду Турбо Паскаль.
Интегрированная среда Паскаль (версии 6.0, 7.0, разработанные фирмой Borland) – это набор ряда системных программ, обеспечивающих все действия, необходимые для прохождения программы на языке Паскаль через ЭВМ. Среда содержит универсальный текстовый редактор, компилятор входного языка, редактор связей и встроенный символьный отладчик. Многооконный интерфейс с развитой системой меню обеспечивает высокую производительность труда программиста.
Освоив Паскаль, относительно легко можно перейти к изучению любого другого языка: Модула, Си, Ада и т.д.
Организация ввода, вывода информации.
3.2.4. Организация ввода информации
Для ввода информации используются операторы обращения к процедурам:
а) Read(b1,b2,...,bn);
б) Readln(b1,b2,...,bn);
в) Readln;
где b1,b2,...,bn - имена переменных, подлежащих вводу.
Встретив в тексте программы первый раз оператор ввода, машина приостанавливает исполнение программы и ждет ввода данных с клавиатуры. Вводимые данные и формируют файл Input.
Оператор Read(b1,b2,...,bn) обеспечивает чтение данных из файла Input. При этом исходная информация преобразуется в информацию типа, соответствующего типу переменных, указанных в операторе Read. Переменным b1,b2,...,bn присваиваются значения из файла Input в соответствии с порядком их следования. Действие процедуры Read заканчивается, как только будет исчерпан список переменных b1,b2, ...,bn.
Оператор Readln(b1,b2,...,bn) обеспечивает ввод данных аналогично оператору Read(b1,b2,...,bn), но после ввода значения последней переменной осуществляется переход к началу новой строки файла Input (оставшиеся в предыдущей строке символы игнорируются).
Процедура Readln реализует переход к началу новой строки файла Input, т.е. игнорируются все символы, оставшиеся в текущей строке, и осуществляется переход к чтению данных из следующей.
По стандарту Турбо Паскаля переменные из списка оператора Read могут быть целого, вещественного, символьного типа и типа string.
В Паскале существует разница между вводом числовой и символьной информации.
Ввод числовой информации. Числа вводятся в одной строке через пробел (или пробелы). По окончании ввода нажимаем клавишу ввода. Можно после ввода каждого числа нажимать клавишу ввода. Примеры работы операторов ввода даны в таблице.
Примечание. В таблице и далее в тексте символом ‘¿’ будем обозначать клавишу ввода.
Запись оператора вызова процедуры ввода |
Ввод данных с клавиатуры (формирование файла Input) |
Значения переменных, полученные в результате исполнения оператора |
Read(A,B,C); Read(A2); |
5 4¿ 74 3.8¿ |
A=5, B=4 C=74, A2=3.8 |
Read(A,B); Readln(X,Y,Z); Read(M); |
5 6 7¿ 3 5 8 5¿ 1¿ |
A=5, B=6 X=7, Y=3, Z=5 M=1 |
Read(A,B,C); Readln; Read(K,T); |
0.5 6.2 –7.1¿ 3 48¿ |
A=0.5, B=6.2, C=–7.1 K=3, T=48 |
Read(A,B,C); Readln; Read(K,T); |
0.5¿ 6.2¿ –7.1¿ 3¿ 48¿ |
A=0.5 B=6.2 C=–7.1 K=3 T=48 |
Read(A,B,C); Readln; Read(K,T); |
0.5 6 –7.1 3 48¿ |
A=0.5, B=6, C=-7.1, переменные K и T значения не получили (см. работу оператора Readln) |
Замечание. При вводе чисел в строку число пробелов между числами произвольно, но лучше заказывать один пробел.
При вводе символьных данных следует учитывать:
1) пробел – это символ;
2) нажатие клавиши ввода присваивает очередной символьной переменной символ пробела, который при вводе числовой информации игнорируется.
Пусть переменные A и B – целого типа, C, D, E – символьного типа. В таблице даны примеры ввода информации.
Запись оператора вызова процедуры ввода |
Ввод данных с клавиатуры (формирование файла Input) |
Значения переменных, полученные в результате исполнения оператора |
Read(C,D,E); |
SNR¿ |
C='S', D='N', E='R' |
Read(C,D,E); |
S N R¿ |
C='S', D=' ', E='N' |
Read(A,B); Read(C,D); |
3 4¿ WF¿ |
A=3, B=4 C=' ', D='W' |
Read(A,B); Readln; Read(C,D); |
3 4¿ WF¿ |
A=3, B=4 C='W', D='F' |
Readln(A,B); Read(C,D); |
3 4¿ WF¿ |
A=3, B=4 C='W', D='F' |
Readln(C); Readln(D,E); Read(C); |
S¿ N5 ¿ K¿ |
C=' ' D='N', E='5' C='K' |
Замечание. Такие значения получат переменные, если после каждого оператора ввода будет стоять оператор вывода данных.
3.2.5. Организация вывода информации
Для вывода информации используются операторы обращения к процедурам:
а) Write(b1,b2,...,bn);
б) Writeln(b1,b2,...,bn);
в) Writeln;
где b1,b2,...,bn – имена переменных, значения которых выводятся.
Оператор Write(b1,b2,...,bn) выводит в стандартный файл Output в одну строку последовательно значения переменных b1,b2,...,bn.
Оператор Writeln(b1,b2,...,bn) делает то же, что и оператор Write, но после вывода последнего значения происходит переход к новой строке стандартного файла Output.
Оператор Writeln обеспечивает пропуск строки в файле Output, если он стоит после оператора Writeln(b1,b2,...,bn), и переход к новой строке, если стоит после оператора Write(b1,b2,...,bn).
Значения переменных b1,b2,...,bn могут быть целого, вещественного, символьного и логического типа, а также типа string.
Выводной список операторов вывода может содержать:
– текст, заключенный в апострофы;
– выражения, составленные из переменных, констант и стандартных функций.
В Турбо Паскале кроме стандартного вывода предусмотрен вывод данных в определенном формате.
Для значений вещественных переменных определен формат:
Write(a:m:n);
где a – вещественная переменная, значение которой выводится; m – общее поле выводимого числа (количество позиций для записи числа с учетом знака, целой части, десятичной точки и дробной части); n – поле дробной части (количество позиций для записи дробной части числа); m, n – выражения целого типа (параметрам m и n даем значения в соответствии с условием задачи).
Если выводимое число содержит меньше позиций, чем заказано в m, и его дробная часть содержит меньше позиций, чем заказано в n, то перед целой частью числа ставятся пробелы, а после дробной – нули.
Например, оператор Write('A=', A:10:4); при A=3.27 на экране выдаст сообщение: A= 3.2700, а при A=-3.84527 на экране появится сообщение: A= –3.8453.
Если для вывода вещественного числа не заказывается формат, то оно выводится в форме с плавающей точкой. Например, при Z=10.9 оператор Write('Z=', Z); выдаст на экране сообщение: Z= 1.090000E+01.
Для целых и символьных типов данных определен формат:
Write(b:m);
где b – имя переменной, значение которой выводится; m – количество позиций для записи значения переменной b.
Например, оператор Write('B=', B:6); при B=45 выдаст на экране сообщение: B= 45, а при B='mir' на экране появится сообщение: B= mir. Оператор Write(A, '':4, B); выдает на экране значения переменных A и B, разделенные четырьмя пробелами.
Для значений переменных, выводимых в стандартной форме, отводятся поля (максимальное количество позиций): 11 для целого типа; 23 для вещественного типа; 1 для символьного типа; 4 (5) для TRUE (FALSE); для переменной типа string – число позиций, равное числу символов в значении этой переменной.
Замечание. Ввод информации можно организовать так:
Write(‘x= ‘); Read(x);
Write(‘y= ‘); Read(y);
При исполнении этих операторов экран имеет вид:
x= 5¿
y= 10¿
Программирование линейных процессов. Простейшие алгоритмы обработки данных. Вычисления по формулам.
Линейная программа составляется для вычисления значения некоторого выражения. При организации программ линейной структуры используются операторы присваивания, ввода - вывода, комментарии.
Пример 1. Вычислить площадь треугольника по трем его сторонам.
program GERON;
var a, b, c: real; {стороны треугольника}
p, s: real; {p – полупериметр, s - площадь}
begin
Write('Введите длины сторон треугольника:');
Readln(a, b, c); p:=(a+b+c)/2;
s:=sqrt(p*(p-a)*(p-b)*(p-c));
Writeln('Площадь треугольника S=',s:8:2)
end.
Пример 2. Два вектора x и y заданы на плоскости своими координатами. Определить, являются ли векторы ортогональными.
program VECTOR;
var x1, y1, x2, y2: real; {координаты векторов x и y}
L: boolean;
begin
Write('Введите координаты векторов:');
Readln(x1, y1, x2, y2);
L:= (x1* y1+ x2* y2 = 0 );
Writeln( L )
end.
В результате выполнения программы на экране появится значение логической переменной L: true – если векторы ортогональны, false – в противном случае.
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.