СПРАВОЧНИК
ОСНОВНЫЕ СИМВОЛЫ ЯЗЫКА ПРОГРАММИРОВАНИЯ Pascal
Основные символы языка — буквы, цифры и специальные символы — составляют его алфавит. ПАСКАЛЬ включает следующий набор основных символов:
1) 26 латинских обширных и 26 латинских строчных букв:
ABCDEFGHIJKLMNOPQRSTU VWXYZ
abcdefgh и jklmnopqrstuvwxyz
2) _ знак подчеркивания
3) +10 цифр:
0 1 2 3 4 5 6 7 8 9
4) знаки операций:
+ — * / = <> <= => @
5) ограничители:
. , ‘() [] (..) {} (*) ..:;
6) спецификаторы:
^ # $
7) служебные (зарезервированные) слова:
ABSOLUTE EXPORTS LIBRARY SET ASSEMBLER EXTERNAL MOD SHL AND FAR NAME SHR ARRAY FILE NIL STRING ASM FOR NEAR THEN ASSEMBLER FORWARD NOT TO BEGIN FUNCTION OBJECT TYPE CASE GOTO OF UNIT CONST IF OR UNTIL CONSTRUCTOR IMPLEMENTATION PACKED USES DESTRUCTOR IN PRIVATE VAR DIV INDEX PROCEDURE VIRTUAL DO INHERITED PROGRAM WHILE DOWNTO INLINE PUBLIC WITH ELSE INTERFACE RECORD XOR END INTERRUPT REPEAT EXPORT LABEL RESIDENT
Программа в Паскале состоит из установленных разделов, каждый из которых несет свою смысловую значение.
Uses ...; {Подключение библиотек модулей CRT, DOS, Graph, Overlay} Label ...; {Раздел описания меток} Const ...; {Раздел описания констант} Type ...; {Раздел описания типов данных} Var ...; {Раздел описания переменных} Function Name0; {Заголовок функции} Begin {Начало функции} ...; ...; ...; {Раздел указаний функции} End ; {Конец функции} Procedure Name1; {Заголовок процедуры} Begin {Начало процедуры} ...; ...; ...; {Раздел указаний процедуры} End ; {Конец процедуры} Begin {Начало программы} ...; ...; ...; {Раздел указаниям - тело программы} ...; ...; ...; {Раздел указаниям - тело программы} End . {Конец программы} |
На начальном уровне изучения программирования большинство этих разделов не будет использоваться. Оставим только следующие
Uses ...; {Подключение библиотек модулей CRT, Graph} Const ...; {Раздел описания констант} Var ...; {Раздел описания переменных} Function Name0; {Заголовок функции} Procedure Name1; {Заголовок процедуры} Begin {Начало программы} ...; ...; ...; {Раздел указаниям - тело программы} ...; ...; ...; {Раздел указаниям - тело программы} End . {Конец программы} |
Переменные
В Турбо – Паскале определены следующие стандартные простые типы данных, с которыми связаны соответствующие зарезервированные слова.
Числовые
Целый — integer
Вещественный — real
Байтовый — byte
Символьные
Литерный — char
Строчный — string
Логический — boolean
Для каждого из перечисленных выше типов данных могут определяться константы, составляться соответствующего типа выражения, определяться переменные.
Диапазоны значений для различных типов данных имеют ограничения. Integer имеет диапазон значений от –MaxInt до MaxInt, где MaxInt – предопределенная системой константа. Byte – 0..255. Char имеет значением один символ из таблицы символов компьютера. String – цепочка символов длинной от 0 до 255 (строго говоря – этот тип является не простым, а структурным (сложным)). Boolean имеет два значения — True (истина) и False (ложь).
Таблица символов отношений
Больше: А>B
Меньше: A<B
Больше или равно: A>=B
Меньше или равно: A<=B
Неравно: A<>B
Равно: A=B
Математика:
Здесь Вы встретите понятия «Функция «, «Процедура», «Аргумент»
Разница между ними заключается в том, что значение функции можно передать результат своей работы какой либо переменной
y := sin(x) | Вычисляем синус от Х и заносим результат в Y
Процедура же — просто выполняет некое действие с указанным аргументом не возвращая никому, и ничего. Совсем никаких результатов.
Dec(x) | Просто изменили значение Х.
Теперь что такое аргумент. Аргумент для функции и процедуры — это переменная/переменные которые заключены в скобки .
y := sin(x); х — это аргумент.
Dec(р); р — это аргумент.
Inc(x, n); x,n — это аргументы.
Теперь тип результата:
t := Round (x)
На входе как аргумент Х действительное число. Но в результате работы функции на выходе в t пойдет целое число.
(О чем нужно позаботится в разделе Var x:real; t:integer)
Таблица математических функций
Математическое выражение | Паскаль Функция |
Обьяснение | Тип аргументу | Тип результата |
y = | x | | y := abs(x) | Абсолютное значение «x» или модуль «х» |
integer, real | integer, real |
y = sin x | y := sin(x) | Синус «x» рад | integer, real | real |
y = cos x | y := cos(x) | Косинус «x» рад | integer, real | real |
y = arctg x | y := arctan(x) | арктангенс «х» ( -Pi/2 < y < td )< 2 Pi> | integer, real | real |
Квадратный корень с Х | y := Sqrt(x) | квадратный корень из «х»( x > 0) | integer, real | real |
y = х2 | y := Sqr(x) | значение «х» в квадрате ( х2 ) | integer, real | integer, real |
y = ех | y := Exp(x) | значение «е» в степени «х» ( ех, где e= 2. 718282. . . ) | integer, real | real |
y = Ln x | y := Ln(x) | натуральный логарифм «х» ( х > 0 ) | integer, real | real |
Дробная часть Х | y := Frac(x) | дробная часть «х» | real | real |
Целая часть Х | y := Int(x) | целая часть «х» | real | real |
Случайное число | t := Random(x) | случайное число 0 < =y < x ) |
integer | integer |
Округлить Х | t := Round (x) | Округляет Х к целому | real | integer |
Отбросить дробную часть Х |
t := Trunc(x) | Отбрасывает дробную часть от числа Х | real | integer |
Проверка на парность | f := odd(x) | integer | boolean true непарне false парне |
|
Xn |
Y := exp(ln(x)*n)
x — выражение
n — степень
|
Х в степени n | ||
ASCII код символа | Ord(s) | Код символа в ASCII | char | byte |
Символ по ASCII коду | Chr(s) | Возвращает символ по его коду | byte | Char |
Процедура | Тип аргументу | Тип значення | Результат |
Inc(x) | Integer |
Integer
|
Увеличивает «х» на 1 (x:=x+1;) |
Dec(x) | Integer | Integer | Уменьшает «х» на 1 ( x:=x-1; ) |
Inc(x, n) | Integer | Integer | Увеличивает «х» на n ( x:=x+n; ) |
Dec(x, n) | Integer | Integer | Уменьшает «х» на n ( x:=x-n; ) |
ПРОЦЕДУРЫ ИЗМЕНЕНИЯ ТИПОВ ПЕРЕМЕННЫХ | |||
Str(x, s) | x-Integer или Real |
s-символьный | Переводит число «x» в строку «s» |
Val(s, v, cod) | s-символьный | v-Integer или Real cod- Integer |
Переводит строку цифр «s» в число «v» cod=0 (код ошибки при неудачном преобразовании) |
Что касается использования процедур увеличения / уменьшения переменных — можно придерживаться правила расписывать их в соответствии с результатом.
То есть:
вместо команды Dec (x) написать x: = x-1;
Аналогично для Inc (х) написать x: = x + 1;
Процедуры ввода и вывода
Процедуры ввода являются предопределенными.
Формат процедур:
Ввод данных
Read[(<список ввода>)]; ReadLn[(<список ввода>]; |
Суффикс Ln означает, что после ввода значений курсор переходит на начало следующей строки экрана.
Список ввода состоит из идентификаторов переменных, отделенных друг от друга запятой.
Вывод данных
Write [(<список вывода>)]; WriteLn [(<список вывода>]; |
Суффикс Ln означает, что после вывода значений курсор переходит на начало следующей строки экрана.
Список вывода состоит из идентификаторов переменных и выражений, отделенных друг от друга запятой.
В списке вывода могут присутствовать параметры задающие формат вывода результатов. После идентификатора следует двоеточие и число определяющее число знакомест для вывода, после второго двоеточия указывается количество знаков после запятой.
Условный оператор
Условный оператор имеет две формы: полную и неполную.
Формат оператора
1. полная форма
If <логическое выражение> then <инструкция 1 > else <инструкция 2 >; |
Если логическое выражение имеет значение «истина», то выполняется инструкция1, иначе инструкция2.
2. неполная форма
If <логическое выражение> then <инструкция>; |
Если логическое выражение имеет значение «истина», то выполняется инструкция, иначе управление передается следующей после условного оператора команде. Обратите внимание на то, что логическое выражение может представлять собой логическую переменную или логическую функцию, сравнение их со значениями True или False не требуется.
Инструкция представляет собой либо одну команду, либо список команд, отделенных друг от друга символом точка с запятой и заключенный в так называемые инструктивные скобки begin — end. В Паскале имеются алгоритмические конструкции, которые сами выполняют роль инструктивных скобок, в этом случае внешние скобки begin – end могут быть опущены.
Повторения
Повторения (циклы) реализуются в Турбо – Паскале тремя видами операторов цикла.
1. Оператор цикла с предусловием (цикл пока)
Формат оператора
While <логическое выражение> do [<инструкция>]; |
Выполнение инструкция повторяется пока логическое выражение имеет значение «истина». Проверка условия производится перед выполнением инструкции.
2. Оператор цикла с постусловием (цикл до тех пор)
Формат оператора
Repeat <список команд> until <логическое выражение>; |
Инструкция выполняется, после этого происходит проверка значения логического выражения. Повторение выполнения инструкции прекращается когда логическое выражение получает значение «истина».
3. Цикл с параметром (цикл со счетчиком).
Форматы оператора
For <идентификатор переменной>:=<выражение 1 > to <выражение 2 > do [<инструкция>]; |
Для значений переменной от выражение1 до выражение2 выполняется инструкция, происходит переход к следующему значению переменной.
For <идентификатор переменной>:=<выражение 1 > downto <выражение 2 > do [<инструкция>]; |
Для значений переменной от выражение1 до выражение2 выполняется инструкция, происходит переход к предыдущему значению переменной.
Переменная должна быть перечисляемого типа (смотрите выше).
Операция имеет смысл, если для выражение1 и выражение2 выполняются соответственно отношения меньше или равно для первого варианта и больше или равно для второго.
Функции и процедуры в Паскале
Процедурой в Паскале является специально выделенная часть задачи представляющая собой специально оформленный самостоятельный фрагмент программы.
Введение процедур связано не столько с необходимостью избежания повторения одного и того же фрагмента программного кода, который встречается в различных частях программы, а с подходом к разработке программ называемым структурным программированием. Подход состоит в том, что задача разбивается на отдельные подзадачи, которые отдельно решаются, отлаживаются и тестируются, возможно разными программистами, затем строится главная программа.
Описание процедуры производится в разделе описаний и имеет следующий общий вид:
Procedure <идентификатор>[(описание формальных параметров)]; <раздел описаний> begin <список команд> end ; |
Вызов процедуры в программе или другой функции или процедуре производится указанием ее идентификатора и перечислением в круглых скобках фактических параметров, если они есть:
<идентификатор>[(<список фактических параметров>)].
Функцией в Паскале называется процедура, результатом выполнения которой является вычисление и передача в программу некоторого значения.
Описание функций производится в разделе описаний и имеет следующий общий вид:
Function <идентификатор>[(описание формальных параметров)]:<тип результата>; <раздел описаний> begin <список команд> end ; |
Для передачи результата в программу выполняется операция присваивания вида <идентификатор>:=<выражение>;
Вызов функции в программе или другой функции или процедуре производится указанием ее идентификатора и перечислением в круглых скобках фактических параметров, если они есть:
<идентификатор>[(<список фактических параметров>)].
Раздел описаний для функций и процедур имеет тот же смысл и структуру, что и для главной программы.
Если в разделе описаний процедуры или функции описаны некоторые элементы, то они являются определенным только для этой процедуры или функции и вложенных в них элементов.
Выполняется правило изменения описания элементов с одинаковыми идентификаторами во вложенных элементах. Действительным является самое последнее из предшествующих описаний.
Формальные параметры описываются в заголовке процедуры или функции и являются локальными. Они используются для программирования кода. При вызове процедуры или функции формальные параметры заменяются фактическими. При этом типы параметров должны совпадать. Типы совпадают, только если при описании формальных и фактических переменных использовались одни и те же имена типов (предопределенных или определенных программистом).
Параметры могут передаваться одним из двух способов по значению или по ссылке (как переменные). При передаче параметров по значению в памяти компьютера отводится место для их размещения и туда копируются значения параметров. При передаче параметров по ссылке для описанных формальных параметров устанавливается связь с соответствующими фактическими параметрами. При этом модификация параметра в процедуре или функции влечет за собой изменение значений указанных в списке фактических параметров переменных, чего не происходит при передаче параметров по значению.
Описанию формальных параметров – переменных (передаваемых по ссылке) перед ними должно стоять зарезервированное слово var.
Пример
Procedure pr1(x,y: real ; var z: integer ); |
Описаны формальные параметры – значения x и y и параметр — переменная z.
Function fn1(a,b: integer ): real ; |
Описаны формальные параметры – значения a и b.
Массивы
Массив является сложной переменной, представляющей собой связанный общим именем набор элементов одного базового типа, доступ к компонентам которой производится с использованием индексов.
Описание типа массив производится в разделе описаний и имеет следующий формат.
Type
<имя типа>=array <диапазон индексов> of <имя базового типа>;
Диапазон индексов определяет количество измерений и набор значений каждого из них.
Диапазон индексов задается перечисляемым типом и является чаще всего отрезком такого типа. Применение в качестве индексов отрезков типа Char или определенного пользователем перечисляемого типа повышает наглядность и, в некоторых случаях, упрощает программирование. Однако все реальные потребности могут быть покрыты применением отрезков целого типа.
Пример
Type Ar1= array [ 1..20 ] of real ; Ar2= array [ 'a' .. 'z' ] of integer ; Ar3= array [ 1..10 , 1..5 ] of integer ; Ar4= array [ 1..10 ] of ar1; |
Приведенный пример описывает типы одномерных массивов Ar1, Ar2, двумерный массив Ar3 и массив Ar4, компонентами которого являются одномерные массивы типа Ar1.
Описание переменных имеющих тип массив может выглядеть следующим образом:
Var A:ar1; B:ar4; C:ar3; |
Доступ к компонентам массивов производится указанием в квадратных скобках выражений, определяющих значение индекса.
Для приведенного выше примера описания переменных возможны следующими способами.
1 . A[ 1 ]:= 3.5 ; 2 . B[ 6 ]:=A; 3 . B[ 5 ][ 4 ]:=A[ 3 ]; 4 . C[ 2 , 4 ]:= 10 ; |
Для массива массивов возможны присваивания приведенные во втором примере. Для массива имеющего в качестве базового типа сложный (B типа Ar4) обращение к компонентам вложенного типа производится через приписывание справа дополнительных скобок с указанием индекса.
Множества
В Турбо – Паскале имеется специальный тип данных реализующий конечные множества. Модель множества представляется в виде двоичного числа. Если элемент принадлежит множеству, то соответствующий ему разряд двоичного числа имеет значение 1, если не принадлежит, то 0. Описание типа множества производится в разделе описаний типов и имеет следующий формат.
Type <имя типа>= set of <базовый тип>; |
Базовый тип является отрезком перечисляемого типа и имеет длину не более 256 элементов.
Пример описания
Type Mn1= set of byte ; Mn2= set of 1..10 ; Mn3= set of 'a' .. 'z' ; |
В первом случае определен тип множества состоящего из 256 элементов типа Byte, во втором из 10 элементов целого типа, в третьем из отрезка типа Char включающего все малые латинские литеры. Для определенных выше типов можно определить переменные.
Var C:Mn1; D:Mn2; E,F:Mn3; |
Для работы с множествами введены специальные операции и отношение принадлежности.
Операции над множествами в Паскале:
Объединение множеств (+): E:=E+F, в E включены все элементы которые были в множествах E и F.
Преобразование элементов базового типа в множество ( [ ] ): E:=[], пустое множество. F:=[‘a’..’z’], включены все элементы базового множества. C:=[2,6], входят только элементы 2 и 6. D:=[i], где i – целое число, множество состоящее из элемента со значением равным значению переменной i.
Пересечение множеств (*): E:=E*F, входят только те элементы, которые были как в первом, так и во втором множествах.
Разность множеств (-): E:=E-F, в E остаются только те элементы, которых нет в множестве F.
Отношение принадлежности имеет значение «истина» если элемент базового типа принадлежит множеству и «ложь» в противном случае.
Формат
<выражение базового типа> in <множество>
Например: i in D, где i – переменная целого типа.
Пример
Program mnog; Type Mn= Set of 1..20 ; Var I: integer ; D:Mn; Begin D:=[ 1..20 ]; For i:= 1 to 10 do D:=D-[ 2 *i]; For i:= 1 to 20 do If i in D then Writeln (i) End . |
В данном примере создается множество из 20 элементов, затем из него исключаются все четные элементы и распечатываются значения тех элементов, которые остались в множестве.
Файлы
Под файлом будем понимать специально организованную специфицированную структуру данных на внешнем устройстве.
Ниже справочно приводятся основные понятия, процедуры и функции для управления файлами.
Для управления файлами определяются специальные переменные файлового типа.
Текстовые файлы <имя файловой переменной>:text;
Типизированные файлы <имя файловой переменной>:file of <имя базового типа>;
Не типизированные файлы <имя файловой переменной>:file;
Отождествление файловой переменной с физическим файлом производится процедурой
assign(<имя файловой переменной>,<спецификация файла>). |
Открытие файла производится процедурами
reset(<имя файловой переменной>) для чтения rewrite(<имя файловой переменной>) для записи. |
Чтение данных из файла производится процедурами
read(<имя файловой переменной>,<список ввода>) readln(<имя файловой переменной>,<список ввода>) – только для чтения из текстового файла. |
Запись данных в файл производится процедурами
write (<имя файловой переменной>,<список вывода>) writeln (<имя файловой переменной>,<список вывода>) – только для записи в текстовый файл. |
Функция eof(<имя файловой переменной>) имеет значение «истина» если достигнут конец файла и «ложь» в противном случае.
Закрытие файла производиться процедурой close(<имя файловой переменной>).
Сообщить об опечатке
Текст, который будет отправлен нашим редакторам: