ЯП Паскаль
l l l Паскаль (Pascal) – высокоуровневый язык программирования общего назначения. Один из наиболее известных языков программирования, широко применяется в промышленном программировании, обучении программированию в высшей школе, является базой для большого числа других языков. Назван в честь французского математика и философа Блеза Паскаля (1623 -1662) и разработан в 1968 -1971 гг. Никлаусом Виртом.
Символы ЯП Паскаль Основные символы языка - буквы, цифры и специальные символы составляют его алфавит. ПАСКАЛЬ включает следующий набор основных символов:
Алфавит ЯП Паскаль 1) 26 латинских строчных и 26 латинских прописных букв 2) _ подчеркивание 3) 10 цифр: 0 1 2 3 4 5 6 7 8 9
Алфавит ЯП Паскаль 4) знаки операций: + - * / = <> < > <= >= : = @ 5) ограничители: . , ' ( ) [ ] (. . ) { } (* *). . : ; 6) спецификаторы: ^ # $
Алфавит ЯП Паскаль служебные (зарезервированные) слова: например MOD STRING FOR THEN NOT TO BEGIN CASE CONST IF OR UNTIL IN VAR DIV INDEX PROCEDURE DO PROGRAM WHILE DOWNTO ELSE END REPEAT
Алфавит ЯП Паскаль Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.
Элементарные конструкции ЯП Паскаль Элементарные конструкции языка ПАСКАЛЬ включают в себя имена, числа и строки. Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты.
Имя - это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются только 63 символа.
Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы. Примеры имен языка ПАСКАЛЬ: A b 12 r 1 m SIGMA gamma M 80_86 Неразрешенные имена: _аа 1 nb begin Вася
Числа в ЯП Паскаль Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например: 217 -45 8954 +483
Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е: 28. 6 0. 65 -0. 018 4. 0 5 Е 12 (5 • 1012) -1. 72 Е 9 (-1. 72 • 109)
Строки в ЯП Паскаль Строки в языке ПАСКАЛЬ – это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк: ‘строка' 'STRING' 'ПРОГРАММА'
Концепция типа для данных В математике принято классифицировать переменные в соответствии с некоторыми важными характеристиками. Производится строгое разграничение между вещественными, комплексными и логическими переменными, между переменными, представляющими отдельные значения и множество значений и так далее.
При обработке данных на ЭВМ такая классификация еще более важна. В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывают определенного типа.
Тип определяет: - возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу; - внутреннюю форму представления данных в ЭВМ; - операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство современных алгоритмических языков высокого уровня.
Типы данных В языке ПАСКАЛЬ существуют скалярные и структурированные типы данных.
Скалярные типы данных К cкалярным типам относятся стандартные типы и типы, определяемые пользователем. Стандартные типы включают целые, действительные, символьный, логические и адресный типы. Типы, определяемые пользователем, - перечисляемый и интервальный.
Структурированные типы имеют четыре разновидности: lмассивы, lмножества, lзаписи lфайлы.
Стандартные типы данных К стандартным относятся lцелые, lдействительные, lлогические, lсимвольный lтипы.
Целые типы данных ЦЕЛЫЕ типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.
Наименование типа Диапазон значений Shortint -128 … 127 Integer -32768 … 32767 Longint -2147483648 … 2147483647 Byte 0 … 255
Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, целочисленное деление, получение остатка от деления. Знаки этих операций: + - * div mod
Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. (div) Результат выполнения операции получения остатка от деления - остаток от деления целых. (mod) 17 div 2 = 8, 3 div 5 = 0. 17 mod 2 = 1, 3 mod 5 = 3.
К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип: Abs(X), Sqr(X), Succ(X), Pred(X), и которые определяют соответственно абсолютное значение Х, Х в квадрате, Х+1, Х-1.
Следующая группа стандартных функций для аргумента целого типа дает действительный результат: Sin(X), Cos(X), Arc. Tan(X), Ln(X) Exp(X), Sqrt(X). Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно.
Действительные типы данных ДЕЙСТВИТЕЛЬНЫЕ типы определяет те данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ.
Название типа данных Диапазон значений Real 2. 9 e-39 … 1. 7 e+38 Single 1. 5 e-45 … 3. 4 e+38 Double 5. 0 e-324 … 1. 7 e+308
Над действительными операндами можно выполнять следующие арифметические операции, дающие действительный результат: сложение + , вычитание - , умножение * , деление /.
К действительным аргументам применимы функции, дающие действительный результат: Abs(X), Sqr(X), Sin(X), Cos(X), Arc. Tan(X), Ln(X), Exp(X), Sqrt(X), Frac(X), Int(X), Pi. Функция Frac(X) возвращает дробную часть X, функция Int(X) – целую часть X. Безаргументная функция Pi возвращает значение числа Пи действительного типа.
К аргументам действительного типа применимы также функции Trunc(X) и Round(X) дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.
Логический тип данных ЛОГИЧЕСКИЙ тип (Boolean) определяет те данные, которые могут принимать логические значения TRUE и FALSE. К булевским операндам применимы следующие логические операции: not and or xor. Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения.
Символьный тип данных l l СИМВОЛЬНЫЙ тип (Char) определяет упорядоченную совокупность символов, допустимых в данной ЭВМ. Значение символьной переменной или константы - это один символ из допустимого набора.
Символьная константа может записываться в тексте программы тремя способами: 1. как один символ, заключенный в апострофы, например: 'A' 'a' 'Ю' 'ю'; 2. с помощью конструкции вида #K, где K - код соответствующего символа, при этом значение K должно находиться в пределах 0. . 255; 3. с помощью конструкции вида ^C, где C - код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа.
К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования Ord(C) Chr(K) Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип.
К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы: Pred(C) Succ(C). Например, Pred('F') = 'E' ; Succ('Y') = 'Z'. При отсутствии предыдущего или последующего символов значение соответствующих функций не определено.
Для литер из интервала 'a'. . 'z' применима функция Up. Case(C), которая переводит эти литеры в верхний регистр 'A'. . 'Z'. Например, Up. Case(n) = N.
Переменные l Тип переменных определяется пользователем в разделе описания переменных: l var имена переменных (через запятую): тип данных; l
Константы Тип констант в языке ПАСКАЛЬ определяется по их виду: константы целого типа - это целые числа, не содержащие десятичной точки; константы действительного типа - действительные числа, логические константы - логические значения TRUE и FALSE, символьные константы – либо строки длиной в один символ, либо конструкции вида #K или ^K.
l Константы описываются следующим образом: l const имена констант (через запятую): тип данных; l
Выражения Выражение состоит из констант, переменных, указателей функций, знаков операций и скобок. Выражение задает правило вычисления некоторого значения. Порядок вычисления определяется старшинством (приоритетом) содержащихся в нем операций.
В языке ПАСКАЛЬ принят следующий приоритет операций: 1. унарная операция not, унарный минус 2. операции типа умножения * / div mod and 3. операции типа сложения + - or xor 4. операции отношения = <> < > <= >= in {}
l Выражения входят в состав многих операторов языка ПАСКАЛЬ, а также могут быть аргументами встроенных функций.
Структура программы на языке Паскаль Program <Имя программы>; Label <раздел описания меток>; Const < раздел описания констант>; Type < раздел описания типов>; Var < раздел описания переменных>; Procedure (Function) < раздел описания подпрограмм>; Begin <раздел операторов> End.
l l Для любой программы обязательным является лишь раздел операторов. Все программные объекты(константы, переменные, типы и пр. ) должны быть описаны в соответствующих разделах описаний.
Простейшая программа на Паскале Begin End
Раздел описания операторов l l Содержит набор операторов, выполняющих алгоритм решения поставленной задачи и вывод результатов на экран. Операторы отделяются друг от друга точками с запятой.
Оператор присваивания можно назвать основным в любом языке программирования. <переменная>: = <выражение>
Тип переменной и тип выражения должны совпадать кроме случая, когда выражение относится к целому типу, а переменная - к действительному. При этом происходит преобразование значения выражения к действительному типу.
Примеры. y: =x-4*x*x; Sa: =sqr(a)-sqrt(a); Program prim; Var x: integer; y: real; Begin y: =x+sqr(x); End.
l l Выражение может включать в себя константы, переменные, знаки операций, функции, скобки. В результате вычисления выражения получается значение определенного типа. Тип выражения определяется типом полученного значения.
l l Арифметическое выражение – выражение числового типа (целого или вещественного). Идентификатор целого типа: integer, вещественного типа: real. Арифметические операции бывают унарными и бинарными. К унарным относятся операция изменения знака.
l l В следующей таблице представлены бинарные арифметические операции Паскаля. А и В обозначают операнды, для типов величин использованы обозначения: I – целый, R – вещественный.
Выражение А+В Типы операндов Тип рез-та R, R R I, I I I, R A-B Операция R, I R, R Сложение R R Вычитание I I, R R, I R, R R I, I A*B R I I, R A/B R, I Умножение R R, R R Вещественное I, I R деление I, R R, I R A div B I, I I Целое деление A mod B I, I I Остаток от целого деления
l Стандартные математические функции Паскаля представлены в следующей таблице:
Обращение Тип аргумента Тип рез-та Функция abs (x) I, R Модуль аргумента arctan (x) I, R R Арктангенс (радианы) cos (x) I, R R Косинус (х в радианах) exp(x) I, R R ех - экспонента frac (x) I, R R Дробная часть х int (x) I, R R Целая часть х ln (x) I, R R Натуральный логарифм R Псевдослучайное число в интервале [0, 1] random (x) I I Псевдослучайное число в интервале [0, х] round (x) R I Округление до ближайшего целого sin (x) I, R R Синус (х – в радианах) sqr (x) I, R R Квадрат х sqrt (x) I, R R Корень квадратный R I Ближайшее целое, не превышающее х по модулю trunc (x)
Старшинство операций (в порядке убывания приоритета): l. Вычисление функции; l. Унарный минус; l*, /, div, mod; l+, -
l l Возведение положительного числа в вещественную степень следует производить, используя следующее математическое тождество: xу = ey lnx. На Паскале это записывается так: exp(y*ln(x)).
Примеры Выражение x 2 -7 x + 6 На Паскале sqr(x) – 7*x +6 Выражение На Паскале (abs(x)-abs(y))/(1+abs(x*y))
Операторы ввода и вывода l l Ввод данных с клавиатуры производится путем обращения к стандартным процедурам: read(<список ввода>) readln(<список ввода >)
Элементы списка ввода – идентификаторы переменных. Вводимые значения отображаются на экране. При выполнении оператора пользователь набирает на клавиатуре соответствующую последовательность значений, разделяя их пробелами. Пример. Readln(a, c, m);
l l Вывод данных на экран производится путем обращения к стандартным процедурам: write(<список вывода>) writeln(<список вывода >)
Элементы списка вывода – константы, переменные, выражения, форматы вывода. Примеры. Writeln(a, b) writeln(‘Сумма равна’, S) Write(a+b) write(p: 4: 2)
l l Программу на Паскале, содержащую только операторы присваивания, ввода и вывода, называют линейной. Она реализует линейный (последовательный) алгоритм решения некой задачи.
Пример l Составьте блок-схему и запишите программу на языке Паскаль для вычисления периметра и площади прямоугольного треугольника, если известны длины его катетов a и b.
Начало а-ма Переменные a, b, c - целые S, P – вещ. Ввод a, b c : = sqrt (sqr(a) + sqr(b)) P : = a+b+c
S : =a*b/2 Вывод P, S Конец а-ма
Начало а-ма Переменные a, b, c - целые S, P – вещ. Ввод a, b c : = sqrt (sqr(a) + sqr(b)) P : = a+b+c Var a, b, c: integer; P, S: real; Readln(a, b); c : = sqrt (sqr(a) + sqr(b)); P : = a+b+c;
S : =a*b/2; Вывод P, S Writeln (‘периметр равен’, P, ’площадь равна’, S); readln Конец а-ма
Program Treug; Var a, b, c: integer; P, S: real; Begin Writeln (‘Ведите величины катетов треугольника’); Readln(a, b); c : = sqrt (sqr(a) + sqr(b)); P : = a+b+c; S : =a*b/2; Writeln (‘периметр равен’, P, ’площадь равна’, S); readln End.
Оператор ветвления (условный оператор) Для программирования ветвящихся алгоритмов применяются условный оператор (оператор ветвления) Условный оператор в полной форме имеет следующий формат: If <логическое выражение> then <оператор1> else <оператор2>;
Операторы 1 и 2 могут быть простыми или составными. Если логическое выражение, выступающее в качестве условия ветвления, истинно, то оператор 1, а если нет - то выполняется оператор 2.
Блок-схема:
Условный оператор в неполной форме Неполная форма условного оператора выглядит так: If <логическое выражение> then <оператор >;
Блок-схема
Замечание Если в условном операторе после Then или Else необходимо предусмотреть выполнение нескольких операторов, то вся последовательность этих операторов должна быть заключена в «скобки» begin – end.
Пример If d <> 0 Then begin x 1: =(-b + sqrt(d))/2*a; x 2: =(-b - sqrt(d))/2*a; end Else writeln (‘Действительных корней нет’);
Задания для самостоятельной работы 1. 2. Привести 2 примера идентификаторов в Паскале – какие можно использовать и какие нет. Записать для использования в языке Паскаль следующие выражения: x 3 – 2 x 4+|x|-sin(x) ycos(x) + xsin(y)-xy
Задания для самостоятельной работы Что выведется на экран после выполнения таких операторов: a) x: =3; writeln(x); в) x: =3; writeln(x+1); б) x: =3; writeln(‘x’); 3. 4. Составить блок-схему и программу на языке Паскаль для вычисления периметра и площади прямоугольника со сторонами a и b.
Домашнее задание l История языка Паскаль Языки программирования высокого и низкого уровня (с примерами) l www. nad-vasiluk. narod. ru l


