L1 ТПЧМ.ppt
- Количество слайдов: 44
Язык программирования Паскаль
Основные понятия и определения ¡ ¡ Язык программирования — формальная знаковая система, предназначенная для записи программ. Программа обычно представляет собой некоторый алгоритм в форме, понятной для исполнителя (например, компьютера). Язык программирования определяет набор лексических, синтаксических и семантических правил, используемых при составлении компьютерной программы. Он позволяет программисту точно определить: l l l на какие события будет реагировать компьютер, как будут храниться и передаваться данные, какие именно действия следует выполнять над этими данными при различных обстоятельствах.
¡ ¡ ¡ Паскаль - язык программирования, назван в честь французского математика и философа Блеза Паскаля (1623 -1662) и разработан в 1968 -1971 гг. Никлаусом Виртом. Первоначально был разработан для обучения, но вскоре стал использоваться для разработки программных средств в профессиональном программировании. Паскаль популярен среди программистов т. к. : l l l Прост для обучения. Отражает фундаментальные идеи алгоритмов в легко воспринимаемой форме. Позволяет четко реализовать идеи структурного программирования и структурной организации данных. Использование простых и гибких структур управления: ветвлений, циклов. Надежность разрабатываемых программ.
¡ ¡ ¡ Для решения задачи на компьютере требуется написать программу на соответствующем языке программирования. Программа на языке программирования Паскаль состоит из исполняемых операторов и операторов описания. Исполняемый оператор задает законченное действие, выполняемое над данными. Примеры исполняемых операторов: вывод на экран, занесение числа в память, выход из программы. Оператор описания описывает данные, над которыми в программе выполняются действия. Примером описания (на естественном языке) может служить предложение «В памяти следует отвести место для хранения целого числа, и это место обозначим А» .
¡ ¡ ¡ Исполняемые операторы называют просто операторами, а операторы описания — описаниями. Описания должны предшествовать операторам, в которых используются соответствующие данные. Операторы программы исполняются последовательно, один за другим, если явным образом не задан иной порядок.
Алфавит языка Паскаль ¡ ¡ Алфавит - совокупность допустимых в языке символов (или групп символов, рассматриваемых как единое целое). Алфавит языка программирования Паскаль включает: l l l прописные и строчные латинские буквы; знак подчеркивания; цифры от 0 до 9; специальные символы, например, +, *, {, @ и др. ; пробельные символы (пробел, табуляция, переход на новую строку).
Лексемы ¡ Из символов составляются лексемы, т. е. минимальные единицы языка, имеющие самостоятельный смысл: l l l ¡ ¡ ¡ идентификаторы (имена); константы; ключевые слова; знаки операций; разделители (скобки, точка с запятой, пробельные символы). Лексемы языка программирования аналогичны словам естественного языка. Например, лексемами являются число 128, имя summa 1, ключевое слово goto и знак операции сложения +. Компилятор при синтаксическом разборе текста программы определяет границы одних лексем по другим лексемам, например разделителям или знакам операций. Из лексем строятся выражения и операторы.
Правила составления идентификаторов ¡ ¡ Идентификатор - имя любого элемента программы. Идентификатор может включать: l l l ¡ ¡ ¡ латинские буквы, цифры, символ подчеркивания. Первым символом идентификатора может быть либо латинская буква, либо знак подчеркивания. В идентификаторе нельзя использовать пробел, русские буквы и т. п. Желательно, чтобы идентификатор нес определенную смысловую информацию об элементе программы, который он описывает, например: Window 1 (первое окно), Question_5 (пятый вопрос) и т. д.
¡ ¡ Язык Pascal не чувствителен к регистру, т. е. идентификаторы summa, SUMMA воспринимаются им как одинаковые. Если идентификатор представляет собой совокупность нескольких слов, рекомендуется каждое из включенных в него слов начинать с прописной буквы, например, My. Program, можно также использовать знак подчеркивания, например, my_program. Добавление к идентификатору символа подчеркивания создает новый идентификатор, неэквивалентный исходному. Например, My. Program, _My. Program, My_Program, My. Program_ являются различными идентификаторами.
Ключевые слова и знаки операций ¡ ¡ ¡ Ключевые (зарезервированные) слова идентификаторы, имеющие специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Например, для оператора перехода определено ключевое слово goto, а для описания переменных - var. Имена, создаваемые программистом, не должны совпадать с ключевыми словами. Примечание: ключевые слова в программе обычно выделяются жирным шрифтом.
¡ Знаки операций предназначены для обозначения арифметических, логических и других действий. Они бывают двух типов: l l ¡ ¡ состоящие из небуквенных символов (+, -, <= и т. д. ); буквенные операции (not, div, mod и т. д. ), представляющие собой зарезервированные слова. Внутри знака операции пробелы не допускаются, например знак «меньше или равно» обозначается <=, при написании < = компилятор выдаст ошибку. Все операции делятся на: l l унарные (с одним операндом); бинарные (с двумя операндами).
Структура программы ¡ ¡ ¡ Программа на языке программирования Паскаль состоит из заголовка программы, раздела описаний и раздела операторов. program заголовок_программы; разделы описаний begin раздел операторов end.
Разделы описаний раздел объявления (описания) используемых модулей; ¡ раздел объявления меток (практически не используется); ¡ раздел объявления констант; ¡ раздел объявления типов; ¡ раздел объявления переменных; ¡ раздел объявления процедур и функций. ¡
¡ ¡ ¡ Любой используемый раздел начинается с соответствующего зарезервированного слова. В языке Паскаль следующие друг за другом предложения отделяются точкой с запятой. Заголовок программы состоит из зарезервированного слова program и имени программы. Завершается заголовок точкой с запятой, например: program Example 1; Заголовок программы является необязательным элементом и игнорируется компилятором.
Раздел описания модулей ¡ ¡ Модуль – это подключаемая к программе библиотека ресурсов (подпрограмм, констант и т. п. ). Данный раздел должен находиться сразу после заголовка программы. Описание раздела начинается с ключевого слова uses, за которым через запятую перечисляются все используемые в программе модули – как стандартные, так и собственного изготовления. При создании консольного приложения данный раздел формируется автоматически. В списке модулей будет находиться только один модуль Sys. Utils.
¡ ¡ ¡ Количество и порядок следования остальных разделов произвольны, ограничение только одно: любая величина должна быть описана до ее использования. Признаком конца раздела описания является начало следующего раздела. В программе может быть несколько однотипных разделов описаний, но для упрощения структуры программы рекомендуется группировать все однотипные описания в один раздел.
Раздел описания констант ¡ ¡ Константа — величина, не изменяющая свое значение в процессе работы программы. В языке программирования Паскаль существуют следующие типы констант: l l ¡ целые; вещественные; символьные; строковые. Целые константы. Десятичные целые константы представляются в естественной форме (2, 17, 3089 и т. п. ).
Вещественные константы ¡ ¡ Константы с плавающей точкой записываются с точкой перед дробной частью: 123. 001 , -10. 55 Вещественная константа может представляться в виде мантиссы и порядка. Мантисса записывается слева от знака Е или е, порядок — справа от этого знака. (мантисса: 1, 2; порядок: 40) (мантисса: 0, 1; порядок: -50).
Символьные константы ¡ Символьные константы обычно записываются в одинарных кавычках: l ¡ ¡ 'a', '5' и т. п. Строковая константа. Это последовательность любых символов, расположенная на одной строке и заключенная в апострофы: 'abc', ‘Hello, world!'
Именованные константы ¡ Cлужат для того, чтобы вместо значений констант можно было использовать в программе их имена. ¡ const <имя_константы1> = <значение_константы1> ; <имя_константы2> = <значение_константы2> ; ¡ ¡ ¡ Пример. const a=5; b=3. 27; c=‘k’;
Раздел объявления переменных ¡ ¡ ¡ Переменная - это величина, которая во время работы программы может менять свое значение. Все переменные, используемые в программе, должны быть описаны в разделе описания переменных. Имя переменной определяет место в памяти, ячейку, в которой находится значение переменной. Имя переменной дает программист. Оно должно отражать смысл хранимой величины и быть легко распознаваемым. Например, если в программе вычисляется количество каких-либо предметов, лучше назвать соответствующую переменную Count или kolich.
Раздел объявления переменных ¡ ¡ ¡ ¡ ¡ Начинается с ключевого слова var. В нем определить все переменные, которые будут использоваться в основной программе с указанием их типов. var <имя_переменной 1> : <тип 1> ; <имя_переменной 2> : <тип 2> ; <имя_переменной 3>, <имя_переменной 4> : <тип 3> ; Пример: var x, y : integer; //целые числа z : real; //вещественное число c: char; //символ
Раздел операторов ¡ ¡ Оператор - фраза алгоритмического языка, определяющая законченный этап обработки данных. В состав операторов входят ключевые слова, данные, выражения и др. В разделе операторов (теле программы) записываются исполняемые операторы программы. Если все операторы программы выполняются последовательно, в том порядке, в котором они записаны, то такая программа называется линейной. Это самый простой вид программ.
Раздел операторов ¡ Различают два типа операторов: l l ¡ ¡ ¡ атомарные операторы, никакая часть которых не является самостоятельным оператором; структурные операторы, объединяющие другие операторы в новый, укрупненный оператор. Ключевые слова begin и end служат для объединения операторов в так называемый составной оператор или блок. Поэтому слова begin и end также часто называют операторными скобками. Блок может записываться в любом месте программы, где допустим обычный оператор.
Оператор присваивания ¡ Присваивание - это занесение значения в память. В общем виде оператор присваивания записывается так: l ¡ ¡ ¡ Символами : = обозначается операция присваивания. Внутри знака операции пробелы не допускаются. Механизм выполнения оператора присваивания: l l ¡ <имя_переменной> : = <выражение>; вычисляется выражение результат заносится в память по адресу, который определяется именем переменной, находящейся слева от знака операции. Схематично это можно представить так: l переменная выражение
Примеры операторов присваивания ¡ ¡ ¡ ¡ a: =b+c/2; a: =b; b: =a; x: =1; x: =x+0. 5; Обратите внимание: a: =b; и b: =a; - это совершенно разные действия! Константа и переменная являются частными случаями выражения.
¡ ¡ ¡ Начинающие часто делают ошибку, воспринимая присваивание как аналог равенства в математике. Чтобы избежать этой ошибки, надо четко понимать механизм работы оператора присваивания. Рассмотрим пример: х : = х + 0. 5. Шаг первый (вычисление выражения): из ячейки памяти, в которой хранится значение переменной х, берется это значение, затем к нему прибавляется число 0, 5. Шаг второй (занесение результата): получившийся результат записывается в ту же самую ячейку (с именем х). При этом значение, которое хранилось там ранее, теряется безвозвратно. Операторы такого вида применяются в программировании очень широко.
Выражение ¡ ¡ ¡ Выражение - это правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы, переменные и вызовы функций. Операции выполняются и определенном порядке в соответствии с приоритетами, как и в математике. Для изменения порядка выполнения операций используются круглые скобки, уровень их вложенности практически не ограничен.
¡ ¡ ¡ Результатом выражения всегда является значение определенного типа, которое определяется типами операндов. Величины, участвующие в выражении, должны, быть совместимых типов. Например, допускается использовать в одном выражении величины целых и вещественных типов. Результат такого выражения будет вещественным. Операции языка Паскаль, упорядоченные по убыванию приоритетов. 1. Унарная операция not, унарный минус -, взятие адреса @. 2. Операции типа умножения: *, /, div, mod, and, shl, shr. 3. Операции типа сложения: +, -, or, xor. 4. Операции отношения: =, <, >, <=, >=, in. ¡ Функции, используемые в выражении, вычисляются в первую очередь (x: =3+sin(a); ).
Процедуры ввода-вывода ¡ ¡ ¡ Любая программа при вводе исходных данных и выводе результатов взаимодействует с внешними устройствами. Совокупность стандартных устройств ввода и вывода, то есть клавиатуры и экрана монитора, называется консолью. Директива препроцессора l ¡ {$APPTYPE CONSOLE} записанная после заголовка программы, говорит о том, что ввод/вывод данных будет производиться с консоли.
Процедуры вывода ¡ ¡ При выводе на экран выполняется преобразование из внутреннего представления данных в символы, выводимые на экран. Для этого в языке Паскаль определены стандартные процедуры write и writeln. l l ¡ ¡ write (список_параметров); writeln [(список_параметров)]; Процедура write выводит указанные в списке величины на экран, а процедура writeln выполняет те же действия и переводит курсор на следующую строку. Процедура writeln без параметров просто переводит курсор на следующую строку.
Процедуры вывода ¡ ¡ ¡ Выводить на экран можно величины логических, целых, вещественных, символьного и строкового типов. В списке могут присутствовать не только имена переменных, но и выражения, а также константы. Для каждого выводимого значения можно задавать формат вывода, например: var а : integer; b : real; … writeln ( 'Значение а = ', а: 4, ' b= ', b: 6: 2. sin(а) + b); l В списке вывода пять элементов, разделенных запятыми. l В начале записана строковая константа в апострофах, которая выводится без изменений, со всеми пробелами.
Общие правила записи процедур вывода: 1. 2. 3. Список вывода разделяется запятыми. Список может содержать выражения, переменные и константы логических, целых, вещественных, символьного и строкового типов. После любого значения можно через двоеточие указать формат, то есть количество отводимых под него экранных позиций: 1. если значение короче, оно «прижимается» к правому краю отведенного поля; 2. если длиннее, поле «раздвигается» до необходимых размеров.
Общие правила записи процедур вывода: 4. 5. 6. Для вещественных чисел можно использовать формат вывода, в котором указывается: 1. общее количество позиций, отводимое под число, 2. сколько позиций из этого количества отводится под дробную часть числа (необходимо учитывать, что десятичная точка также занимает одну позицию), 3. если второй или оба формата не указаны, вещественное число выводится в форме с порядком. Если форматы не указаны, под целое число, символ и строку отводится минимально необходимое для их представления количество позиций. Форматы могут быть выражениями целого типа.
Ввод с клавиатуры ¡ Дли ввода с клавиатуры определены процедуры read и readln. ¡ read (список_параметров); readln [ (список_параметров)]; ¡ ¡ ¡ В скобках указывается список имен переменных через запятую. Квадратные скобки указывают на то, что список может отсутствовать. Например: l read (а, b, с); l readln (у); l readln; Вводить с консоли можно целые, вещественные, символьные и строковые величины. Вводимые знамения должны разделяться любым количеством пробельных символов (пробел, табуляция, перевод строки).
¡ Ввод значения каждой переменной выполняется следующим образом: l l l Значение переменной выделяется как группа символов, расположенных между разделителями. Эти символы преобразуются во внутреннюю форму представления, соответствующую типу переменной. Значение записывается в ячейку памяти, определяемую именем переменной.
Пример ¡ Рассмотрим процедуру readln(x, y, z); где x, z – переменные целого типа, y – переменная вещественного типа. Пусть пользователь ввел следующие значения:
¡ ¡ Значение 2 запишется в ячейку памяти, соответствующую переменной x, значение 4. 5 – в ячейку, соответствующую переменной у, а 3 – в - переменную z. Если пользователь ввел значение, не совпадающее с указанным типом данных, то программа завершится с ошибкой.
read и readln ¡ ¡ Процедуры read и readln имеет следующее отличие: процедура readln после ввода всех значений выполняет переход на следующую строку исходных данных. При использовании процедуры read очередные исходные данные будут взяты из той же строки. Процедура readln без параметров (readln; ) просто ожидает нажатия клавиши Enter. Этим оператором принято завершать программу в консольном приложении.
Особенность ввода символов и строк ¡ ¡ Пробельные символы в них ничем не отличаются от всех остальных, поэтому разделителями являться не могут. Например, пусть определены переменные l ¡ ¡ ¡ var а : integer; b : real; d : char; и в программе есть процедура ввода readln(а, b, d). Допустим, переменной а надо задать, значение, равное 2, переменной b — 3, 78, а в d записать символ #. Любой вариант расположения исходных данных приведет к неверному результату, поскольку после второго числа требуется поставить пробельный символ для того, чтобы его можно было распознать, и этот же символ будет воспринят как значение переменной d.
¡ Пусть пользователь ввел: l l l ¡ ¡ 2 3. 78# 2 3. 78→# 2 3. 78 # Символом → обозначено нажатие клавиши Tab. В первом случае будет выдана ошибка времени выполнения, а в двух оставшихся случаях переменной d будет присвоено значение символа табуляции и символа пробела соответственно. Правильным решением является ввод чисел и символов в разных процедурах и размещение символов в отдельной строке, например: readln(а, b); readln(d);
¡ ¡ Ввод данных выполняется через буфер — специальную область оперативной памяти. Фактически данные сначала заносятся в буфер, а затем считываются оттуда процедурами ввода. Занесение в буфер выполняется по нажатию клавиши Enter вместе с ее кодом (#13#10). Процедура read, в отличие от readln, не очищает буфер, поэтому следующий за ней ввод будет выполняться с того места, на котором закончился предыдущий, то есть начиная с символа конца строки.
read(a); {считывается целое число} write(‘Продолжить? (y/n)’); readln(d); {вместо ожидания ввода символа считывается символ #13 из предыдущего ввода} Чтобы избежать подобной ситуации, следует вместо процедуры read использовать readln.


