Меню
Разработки
Разработки  /  Информатика  /  Проверочные работы  /  Основы программирования на языке «Pascal»

Основы программирования на языке «Pascal»

Материал содержит теоретические сведения по данному языку программирования.
02.12.2013

Описание разработки

Общие сведения о языке «Pascal»

Язык программирования «Pascal» был разработан в конце 60-х годов профессором Высшего технического училища в Цюрихе (Швейцария) Никлаусом Виртом. Предложенный им алгоритмический язык он назвал именем французского ученого Блеза Паскаля (1623 – 1662), который создал первую в мире вычислительную машину. Язык предназначался для обучения студентов программированию.

Язык «Pascal», утвержденный в качестве стандартного в 1979 г., является наиболее совершенным по сравнению с такими универсальными языками программирования, как «Алгол», «Фортран», «Бейсик» и др.

В настоящее время «Pascal» является одним из самых развитых языков программирования.

В последнее время повсеместно используется расширенный вариант языка «Pascal», который называется «Turbo Pascal» и имеет больше возможностей в сравнении с утвержденным стандартом языка.

Благодаря своей эффективности, простоте и логичности «Pascal» быстро получил широкое распространение во всем мире. Тексты программ легко проверяются на правильность. Число операторов языка сведено до минимума. «Pascal» позволяет рационализировать рабочий процесс программирования, постепенно уточняя отдельные части программы и, наряду с небольшими несложными программами, создавать структурированные программы трудоемких и сложных вычислений.

Словарь языка «Pascal»

Любой естественный язык (русский, английский, французский и т.д.) состоит из четырех основных элементов: символов, слов, словосочетаний и предложений.

Символ языка – это элементарные знаки, используемые для составления любых текстов.

Набор таких символов называют алфавитом языка.

Алфавит языка «Pascal» включает в себя следующие символов:

1. Латинские буквы (заглавные и прописные).

2. Цифры от 0 до 9.

3. Знаки арифметических операций:

+ - сложение; ‑ - вычитание;          

* - умножение; / - деление.

4. Знаки отношений:

> - больше; < - меньше; = - равно; >= - больше или равно; <= - меньше или равно; <> - не равно.

5. Разделители:

. - для разделения целой и дробной части числа, обозначение конца программы, отделение полей в записи;

, - для разделения элементов в списке;

; - для разделения операторов;

: - для отделения переменной или константы от типа и метки от оператора;

‘ ‘ – выделение символа или строковой константы;

() – выделение выражений, списков параметров;

[] – выделение индексов массивов, элементов множеств;

{} – скобки комментариев.

6. Спецификаторы:

^ - значение величины по ее указателю;

@ - обозначение адреса переменной;

# - обозначение символа по его коду;

$ - обозначение директивы компилятора или знак 16-ричного числа.

7. _ - знак подчеркивания.

Последовательность символов образуют слова, группа слов – выражение, а определенные комбинации слов и выражений составляют словарь языка.

1. Указатели функций. В языке «Pascal» существует ряд стандартных функций, которые записываются следующим образом:

<имя функции> (<список параметров>)

Например,

SIN(Х) – синус х;

ABS(5) – модуль (абсолютная величина) числа 5;

Х MOD 2 – остаток от деления величины х на 2.

Язык «Pascal» также позволяет пользователю создавать свои собственные функции.

2. Имена величин (идентификаторы) обозначаются набором символов состоящих из латинских букв (A-Z, A-z) и цифр (0-9).

Имена указывают на элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. При указании имени на первом месте должна стоять буква. Можно использовать в именах переменных знак подчеркивания «_». Нельзя использовать в качестве имен величин служебные слова языка.

Например, В, Primer, G_18 – правильно заданные имена.

В качестве имен в языке «Pascal» не разрешено использовать служебные слова, стандартные константы, типы, процедуры, функции и файлы.

Весь материал - в документе.

Также имена величин не могут содержать: русских букв, знаков препинания, специальных символов (~, #, $, % и других).

Имя переменной может быть любой длины, не превышающей 250 символов. Также не учитывается регистр букв, то есть переменные с именами Primer и pRiMeR будут рассматриваться как одна и та же переменная.

3. Величины. Величина - это единица данных, представленная своим именем (идентификатором) либо своим значением. С величиной связывается определенное множество значений.

Например, физическая величина СКОРОСТЬ. Она может принимать различные значения 15 м/с, 200 км/ч и т.д.

Также каждая величина имеет свои допустимые значения (интервал значений). Например, величина РОСТ ЧЕЛОВЕКА может принимать значения 1 м 40 см, 2 м 2 см и т.д. Интервал значений данной величины находится в промежутке (приблизительно) от 40 см до 2 м.

Все величины языка «Pascal» можно условно разделить на две группы: постоянные и переменные.

Постоянные величины (константы) – это величины, принимающие в ходе выполнения программы только одно значение.

Постоянные величины делятся на числовые и литерные (символьные, строковые). Например, числовые величины - 5; -45.6; -45216; литерные величины - ‘стол’; ‘125’.

Литерные величины всегда берутся в одиночные кавычки (апострофы).

Переменные величины в ходе выполнения программы могут принимать разное количество значений. Переменные величины могут иметь буквенное обозначение или с индексом. Например, простые - Х; DF; с индексом - Х1; DF25.

4. Типы величин. В зависимости от значения величины подразделяются на целые, вещественные, литерные, табличные и логические, которые, в свою очередь имеют деление и обозначение в зависимости от размерности значения величины.

целые INTEGER, SHORTING, BYTE, WORD, LONGINT;

вещественные REAL, SINGLE, DOUBLE, EXTENDED, COMP;

литерные CHAR, STRING;

табличные  ARRAY;

логические BOOLEAN.

5. Выражения. Выражения языка «Pascal» задают правила вычисления некоторого значения. Все выражения языка «Pascal» можно разделить на арифметические и литерные.

Арифметические выражения записываются с помощью знаков арифметических операций по определенным правилам. Например, 15+2; 12.3*12.8; D-F.

Весь материал - смотрите документ.

Содержимое разработки

Основы программирования на языке «Pascal»

Оглавление

Общие сведения о языке «Pascal» 3

Словарь языка «Pascal» 3

Типы величин языка «Pascal» 6

Числовые величины 6

Логические величины 7

Литерные величины 7

Табличные величины 8

Запись арифметических выражений 8

Стандартные функции языка «Pascal» 9

Стандартные процедуры и функции 10

Структура программы 10

Использование знака «;» в программе 12

Использование пробелов при построении конструкций 12

Использование комментариев к программе 13

Организация ввода и вывода данных 13

Ввод данных на языке «Pascal» 13

Ввод данных в процессе исполнения программы 14

Вывод данных на языке «Pascal» 15

Форматы вывода данных 16

Оператор присваивания 16

Величины логического типа 17

Логические выражения 17

Условный оператор 18

Оператор IF 18

Оператор выбора CASE 20

Оператор безусловного перехода GOTO 21

Операторы цикла 22

Цикл с предусловием WHILE 22

Цикл с постусловием REPEAT 23

Оператор цикла с параметром FOR 24

Массивы 25

Одномерные массивы 25

Операции над элементами одномерного массива 26

Двумерные массивы 27

Операции над элементами двумерного массива 27

Литерные величины 28

Символьный тип данных 28

Обработка символьных величин 28

Строковый тип данных 29

Процедуры и функции работы со строковыми величинами 29

Преобразование типов 32

Процедуры и функции 33

Процедуры 33

Функции 34

Множества 35

Записи 38

Файловый тип данных 38

Использование программы Turbo Pascal 39

Выбор пунктов главного меню 39

Описание пунктов главного меню 40

Структура окон на рабочем поле 41

Работа с окнами 41

Общая характеристика текстового редактора системы 41

Начало работы с текстом программы 41

Основные режимы ввода и редактирования 42

Удаление, вставка и восстановление 42

Копирование и перемещение фрагментов текста 42

Сохранение и загрузка программы 43

Типы ошибок в программах 44

Основные режимы работы системы 44

Процедуры управления вводом-выводом в текстовом режиме 45

Автоматизация процесса отладки в системе программирования 45

Компиляция программы и поиск синтаксических ошибок 46

Исполнение программы и поиск ошибок исполнения 46

Поиск логических ошибок. Контрольный просчет 46







Общие сведения о языке «Pascal»

Язык программирования «Pascal» был разработан в конце 60-х годов профессором Высшего технического училища в Цюрихе (Швейцария) Никлаусом Виртом. Предложенный им алгоритмический язык он назвал именем французского ученого Блеза Паскаля (1623 – 1662), который создал первую в мире вычислительную машину. Язык предназначался для обучения студентов программированию.

Язык «Pascal», утвержденный в качестве стандартного в 1979 г., является наиболее совершенным по сравнению с такими универсальными языками программирования, как «Алгол», «Фортран», «Бейсик» и др.

В настоящее время «Pascal» является одним из самых развитых языков программирования.

В последнее время повсеместно используется расширенный вариант языка «Pascal», который называется «Turbo Pascal» и имеет больше возможностей в сравнении с утвержденным стандартом языка.

Благодаря своей эффективности, простоте и логичности «Pascal» быстро получил широкое распространение во всем мире. Тексты программ легко проверяются на правильность. Число операторов языка сведено до минимума. «Pascal» позволяет рационализировать рабочий процесс программирования, постепенно уточняя отдельные части программы и, наряду с небольшими несложными программами, создавать структурированные программы трудоемких и сложных вычислений.

Словарь языка «Pascal»

Любой естественный язык (русский, английский, французский и т.д.) состоит из четырех основных элементов: символов, слов, словосочетаний и предложений.

Символ языка – это элементарные знаки, используемые для составления любых текстов.

Набор таких символов называют алфавитом языка.

Алфавит языка «Pascal» включает в себя следующие символов:

1. Латинские буквы (заглавные и прописные).

2. Цифры от 0 до 9.

3. Знаки арифметических операций:

+ - сложение; ‑ - вычитание; * - умножение; / - деление.

4. Знаки отношений:

- больше; = - больше или равно; - не равно.

5. Разделители:

. - для разделения целой и дробной части числа, обозначение конца программы, отделение полей в записи;

, - для разделения элементов в списке;

; - для разделения операторов;

: - для отделения переменной или константы от типа и метки от оператора;

‘ ‘ – выделение символа или строковой константы;

() – выделение выражений, списков параметров;

[] – выделение индексов массивов, элементов множеств;

{} – скобки комментариев.

6. Спецификаторы:

^ - значение величины по ее указателю;

@ - обозначение адреса переменной;

# - обозначение символа по его коду;

$ - обозначение директивы компилятора или знак 16-ричного числа.

7. _ - знак подчеркивания.

Последовательность символов образуют слова, группа слов – выражение, а определенные комбинации слов и выражений составляют словарь языка.

1. Указатели функций. В языке «Pascal» существует ряд стандартных функций, которые записываются следующим образом:

()

Например,

SIN(Х) – синус х;

ABS(5) – модуль (абсолютная величина) числа 5;

Х MOD 2 – остаток от деления величины х на 2.

Язык «Pascal» также позволяет пользователю создавать свои собственные функции.

2. Имена величин (идентификаторы) обозначаются набором символов состоящих из латинских букв (A-Z, A-z) и цифр (0-9).

Имена указывают на элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. При указании имени на первом месте должна стоять буква. Можно использовать в именах переменных знак подчеркивания «_». Нельзя использовать в качестве имен величин служебные слова языка.

Например, В, Primer, G_18 – правильно заданные имена.

В качестве имен в языке «Pascal» не разрешено использовать служебные слова, стандартные константы, типы, процедуры, функции и файлы.

Также имена величин не могут содержать: русских букв, знаков препинания, специальных символов (~, #, $, % и других).

Имя переменной может быть любой длины, не превышающей 250 символов. Также не учитывается регистр букв, то есть переменные с именами Primer и pRiMeR будут рассматриваться как одна и та же переменная.

3. Величины. Величина - это единица данных, представленная своим именем (идентификатором) либо своим значением. С величиной связывается определенное множество значений.

Например, физическая величина СКОРОСТЬ. Она может принимать различные значения 15 м/с, 200 км/ч и т.д.

Также каждая величина имеет свои допустимые значения (интервал значений). Например, величина РОСТ ЧЕЛОВЕКА может принимать значения 1 м 40 см, 2 м 2 см и т.д. Интервал значений данной величины находится в промежутке (приблизительно) от 40 см до 2 м.

Все величины языка «Pascal» можно условно разделить на две группы: постоянные и переменные.

Постоянные величины (константы) – это величины, принимающие в ходе выполнения программы только одно значение.

Постоянные величины делятся на числовые и литерные (символьные, строковые). Например, числовые величины - 5; -45.6; -45216; литерные величины - ‘стол’; ‘125’.

Литерные величины всегда берутся в одиночные кавычки (апострофы).

Переменные величины в ходе выполнения программы могут принимать разное количество значений. Переменные величины могут иметь буквенное обозначение или с индексом. Например, простые - Х; DF; с индексом - Х1; DF25.

4. Типы величин. В зависимости от значения величины подразделяются на целые, вещественные, литерные, табличные и логические, которые, в свою очередь имеют деление и обозначение в зависимости от размерности значения величины.

целые INTEGER, SHORTING, BYTE, WORD, LONGINT;

вещественные REAL, SINGLE, DOUBLE, EXTENDED, COMP;

литерные CHAR, STRING;

табличные ARRAY;

логические BOOLEAN.

5. Выражения. Выражения языка «Pascal» задают правила вычисления некоторого значения. Все выражения языка «Pascal» можно разделить на арифметические и литерные.

Арифметические выражения записываются с помощью знаков арифметических операций по определенным правилам. Например, 15+2; 12.3*12.8; D-F.

К литерным выражениям относится операция слияния (соединения), которое обозначается знаком сложения (+), но имеет несколько другой смысл, нежели обычное сложение двух чисел. Например, сто’+’л’

6. Условия. Условия на языке «Pascal» бывают простые и составные.

Простые условия записываются с помощью знаков отношения в виде:

Например, F5; H=2; name’ваня’.

Составные условия включают в себя несколько простых условий соединенных с помощью служебных слов NOT (не), AND (и), OR (или):

{AND, OR}

Например, D50 AND T

7. Служебные слова (операторы). Все служебные слова языка являются словами английского языка. Операторы задают последовательность некоторых действий (команд), которые необходимо выполнить. Для описания сложных действий используют группу операторов. В этом случае операторы объединяются в составной оператор или блок.

В записи программы на языке «Pascal» обычно не различают малые и большие латинские буквы (PROGRAM, program, Program – одно и то же).

Примеры некоторых операторов языка «Pascal»:

PROGRAM (программа) – название программы;

BEGIN (начало) – начало программы;

END (конец) – конец программы;

VAR (variable – переменная величина);

LABEL (метка);

CONST (константа);

TYPE (тип);

IF (если)… THEN (то) … ELSE (иначе) – условный оператор (команда ветвления);

CASE – оператор выбора;

GOTO – оператор безусловного перехода;

FORTODO – оператор повторения (цикла);

REPEAT (повторять)… UNTIL (до тех пор, пока не) – оператор повторения;

WHILE (пока)… DO – оператор повторения (цикла);

PROCEDURE (процедура);

FUNCTION (функция).

По ходу усовершенствования языка в словарь могут добавляться новые типы величин и оператор.

Типы величин языка «Pascal»

В языке «Pascal» существует несколько основных типов величин: числовые (целые и действительные), логические, литерные, табличные.

Типы величин отличаются ограничениями на область значений величины соответствующего типа. Правильный выбор целого типа для величины позволяет экономично расходовать ресурсы памяти компьютера.

Числовые величины

Числовые величины в языке «Pascal» подразделяются на целые и действительные.

Целые числа (натуральные, им противоположные и ноль) описываются с помощью служебного слова INTEGER.

В зависимости от значения целые числа могут описываться другими типами, приведенными в таблице:

Тип

Диапазон значений

Требуемая память

от

до

Integer

– 32768

32767

2 байта

Shorting

-128

127

1 байт

Byte

0

255

1 байт

Word

0

65535

2 байта

Longint

– 2147483648

2147483648

4 байта

Над целыми числами можно выполнять сложение, вычитание, умножение, деление, получение остатка от деления.

Результат арифметической операции над целыми операндами есть величина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых.

Операции отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE (истина или ложь).

К аргументам целого типа применимы следующие стандартные функции, результат выполнения которых имеет целый тип: ABS(), SQR().

Следующая группа стандартных функций для аргумента целого типа дает действительный результат: SIN(), COS(), ARCTAN(), LN(), EXP(), SQRT().

Результат выполнения функции проверки целой величины на нечетность ODD() имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный.

Вещественные числа на языке «Pascal» описываются с помощью служебного слова REAL.

В зависимости от значения, вещественные числа можно описывать и с помощью других типов, приведенных в таблице.

Тип

Диапазон

Значащие цифры

Требуемая память

от

до

Real

2.910-39

1.71038

11-12

6 байт

Single

1.510-45

3.41038

4

6 байт

Double

1.510-45

3.41038

15-16

8 байт

Extended

3.410-4932

1.1104932

19-20

10 байт

Comp

-263 + 1

263 - 1

19-20

8 байт

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

К величинам действительного типа применимы все операции отношения.

К действительным аргументам применимы функции, дающие действительный результат: ABS(), SQR(), SIN(), COS(), ARCTAN(), LN(), Exp(), SQRT(), INT(), PI.

К аргументам действительного типа применимы также функции TRUNC() и ROUND(), дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.

Логические величины

Для описания логических величин используется служебное слово BOOLEAN (булевская).

Логические величины принимают только два значения: TRUE (истинно) и FALSE (ложно).

Результатами обработки логических величин также являются величины логического типа.

Литерные величины

К литерным (символьным, строковым) величинам относятся все символы, слова, тексты и т.д. Литерные величины всегда берутся в одиночные кавычки.

Для описания литерных величин (строк символов) используется служебное слово STRING (строка), причем в описании можно сразу ограничить длину строки.

Например, f: String[25]; - длина строки до 25 символов

Если длина величина типа строка в описании не ограничена, то она может вмещать до 255 символов.

Если литерная величина имеет длину в один символ, то применяется более простой тип - CHAR. Переменная типа CHAR может хранить совершенно любой символ, в том числе и букву русского языка (знак кириллицы).

Переменной типа CHAR можно прямо в программе присвоить значение. Это делается посредством знака присваивания: «:=», после которого должен находиться символ, заключенный в одиночные кавычки (апострофы). Например, t:=’A’;

Табличные величины

Табличные величины или массивы используются, когда приходится иметь дело с большим количеством однотипных величин.

Для описания табличных величин используют служебное слово ARRAY (таблица).

Например: Var x: array [1..5] of integer; - массив х, состоящий из 5 целочисленных элементов.

Массивы бывают линейные (элементы нумеруются с помощью одного индекса) и прямоугольные (для нумерации элементов используется два индекса).

Прямоугольные массивы на языке «Pascal» записываются в виде:

Var y: array[1..6, 1..5] of real; - прямоугольный массив, состоящий из 6 строк и 5 столбцов (всего 30 элементов).

Запись арифметических выражений

Выражения входят в состав многих операторов языка «Pascal», а также могут быть аргументами встроенных функций. Выражение состоит из констант, переменных, указателей функций, знаков операций и скобок и задает правило вычисления некоторого значения.

Все выражения на языке «Pascal» записываются в одну строку.

Числа на языке «Pascal» обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки. Например, 217, -45.

Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е. В такой записи буква E означает «умножить на 10 в степени». Например, 28.6, -0.018, 5Е12, -1.72Е9, 3.1Е-16.

«Pascal» допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатеричной системе счисления. Например, $7F, $ABC0.

Литерные величины в языке «Pascal» - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Например, 'СТРОКА', 'STRING'.

Сложение обозначается символом «+», вычитание «», умножение «*», деление «/». Например, математическая запись на языке «Pascal» примет вид: (1/2-3/4)*5.

При вычислении операции выполняются в следующем порядке:

- возведение в степень, изменение знака;

- логическое NOT;

- арифметические умножение и деление, логическое AND;

- арифметические сложение и вычитание, логическое OR;

- операции отношения.

Рядом стоящие умножение и деления выполняются слева направо, равно как и рядом стоящие сложения и вычитания. Для определения порядка действий используются скобки. Число скобок не ограничено. Единственное правило – количество открывающихся скобок должно быть равно количеству закрывающихся. Например, выражение A*B/C*D означает то же, что и (A*B/C)*D. Чтобы C*D было в знаменателе, нужно написать A*B/(C*D).

Также по особым правилам записываются и операции отношений (сравнений). Например, математическое выражение 1≤ Х ≤50 будет записано следующим образом: (1≤Х) AND (Х≤50).

Стандартные функции языка «Pascal»

Для обозначения математических функций применяются следующие обозначения:

PI – возвращает значение 3,14159…

SIN() - функция синуса; аргумент задается в радианах; функция возвращает вещественное значение. Например, SIN(0)=1, SIN(PI/2)=0.

COS() – функция косинуса; значение аргумента в радианах; функция возвращает вещественное значение. Например, COS(0)=0, COS(PI/2)=1.

ARCTAN () – функция арктангенса; тип результата – вещественный.

ABS() – абсолютная величина аргумента. Например, ABS(-5)=5, ABS(146)=146. Аргумент для данной функции может быть целым либо вещественным; тип возвращаемого значения определяется типом аргумента.

SQRT() – корень квадратный из аргумента. Например, SQRT(9)=3.

A MOD B – остаток от деления числа А на B. A и B – целые числа. Например, 123 MOD 10 = 3; 17 MOD 12 = 5.

A DIV B – вычисление целой части частного от деления числа A на B. Например, 123 DIV 10 = 12, 5 DIV 8=0.

TRUNK() – нахождение целой части аргумента. Например, TRUNK(23.45)=23, TRUNK(125)=125.

INT () – возвращает целую часть аргумента в виде вещественного значения. Например, INT (23.5)=23.

FRAC() – дробная часть аргумента. Например, FRAC (23.45)=0.45.

ROUND()- округляет аргумент до целого значения; тип результата – Longint. Например, ROUND(12.15)=12, ROUND(12.51)=13.

EXP() – вычисляет значение ex (экспоненциальная функция); тип результата – вещественный.

LN() – натуральный логарифм аргумента. Тип функции – вещественный.

SQR() – возведение аргумента в квадрат. Аргумент может быть как целого, так и вещественного типа; результат имеет вещественный тип. Например, SQR(2)=4, SQR(-5)=25.

DEC (Х,[А]) - уменьшает значение Х на заданное число или на другую переменную. Параметр Х может быть значением любого типа. Например, для целочисленного аргумента Х процедура DEC(Х;1) аналогична оператору Х:=Х-1. Параметр А является необязательным. При его отсутствии значение Х уменьшается на единицу. Например, DEC(5)=4, DEC(5, 3)=2.

INC (Х, [А]) - увеличивает переменную на заданное число или на другую переменную. Например, INC(6)=7, INC(3,10)=13.

ODD () – проверяет аргумент на четность; возвращает значение TRUE, если аргумент – нечетное число, и FALSE – в противном случае. Тип функции – Boolean. Например, ODD (12)=TRUE, ODD (15)=FALSE.

В языке «Pascal» нет обозначения для операции возведения в степень. Эта операция строится с помощью функций EXP() и LN(). Например, Y:=EXP(LN(X)*5) – возведение числа Х в степень 5.

RANDOM() - данная функция возвращает от своей работы случайное число. В качестве параметра задается максимальное значение случайного числа. Инициализация датчика случайных чисел происходит вызовом процедуры Randomize.

Язык «Pascal» предусматривает и создание новых пользовательских функций.

Стандартные процедуры и функции

Описания и реализация стандартных процедур и функций помещены в библиотечный файл TURBO.TPL и имеет модульную структуру. Она содержит несколько основных модулей: SYSTEM, CRT, PRINTER, GRAPH.

Для подключения к программе того или иного раздела библиотеки используется оператор USES разделы библиотеки (через запятую) который записывается сразу после первой строки с заголовком программы.

Например, объявление USES CRT, CRAPH; означает, что модули библиотеки CRT и GRAPH будут подсоединены к программе и можно пользоваться всеми сделанными в них определениями.

Раздел библиотеки SYSTEM включает встроенные процедуры и функции языка «Pascal», которые используются наиболее часто (подпрограммы для работы с файлами, обработки строк символов, математические функции и др.). Этот модуль подключается к любой компилируемой программе без дополнительного объявления в строке USES.

Модуль CRT содержит набор определений, необходимых для работы с экраном в текстовом режиме (создание экранных окон, прямое управление курсором, установка цвета фона и символов, подача звукового сигнала и др.).

В разделе библиотеки PRINTER объявляется файловая переменная LST, которой ставится в соответствие текстовой файл, используемый для переадресации результатов работы программы на принтер.

В библиотечный раздел GRAPH включены встроенные процедуры и функции для работы в графическом режиме и все необходимые для этого объявления.

Структура программы

Программа на языке «Pascal» имеет строгую структуру и несколько обязательных разделов, которые следуют один за другим в определенном порядке.

Program имя программы; - заголовок программы

Var

описание величин - раздел описаний

begin

{Операторы} - раздел операторов

End.

Под заголовком программы понимается имя, помогающее определить ее назначение. Заголовок программы состоит из служебного слова PROGRAM и имени программы. Имя программы, или идентификатор, может начинаться с большой или малой буквы латинского алфавита или знака «_», далее могут следовать буквы, цифры или знак «_». Имя (идентификатор) программы не должно содержать пробелов. После имени программы ставится «;».

Например,

Program zadanie;

Program test2;

Имя программы может не совпадать с именем соответствующего файла на диске.

В разделе описаний может быть несколько подразделов, которые записываются в следующем порядке:

1. описание типов данных (обязательный подраздел)

2. описания процедур и функций.

3. описание модулей

При описании типов данных придерживаются следующей последовательности:

Label …; - метки

Const …; - константы

Type …; - типы пользователя.

Var …; - переменные

Метки в программах используются для того, чтобы пометить какой-либо оператор. В качестве метки используются произвольные целые без знака, содержащие не более четырех цифр, либо имена. Метка ставится перед оператором и отделяется от него двоеточием. Все метки, используемые в программе, должны быть перечислены в разделе описания меток. Например, LABEL 3, 471, 29, QUIT.

Описание констант позволяет использовать имена как синонимы констант, которые необходимо определить в разделе описаний констант. После служебного слова CONST помещаются описания величин, которые будут использованы в программе.

Например,

Const Zero = 0;

my_const = -1.5;

В разделе описания переменных необходимо определить тип всех переменных, используемых в программе. Переменные могут хранить данные различной природы: числа, строки текста, отдельные символы и т.п.

Например,

Var P, Q, R: Integer;

F1, F2: Boolean;

Если описываются несколько переменных одного типа, то достаточно записать их имена через запятую, а после двоеточия поставить общий тип.

Var Number: integer;

d, l: real;

Name: string[20];

При записи функции в заголовке используется служебное слово FUNCTION. Далее записывается имя подпрограммы, после которого в скобках описываются вводимые параметры (аргументы). В следующих после FUNCTION строках с помощью операторов, расположенных между словами BEGIN и END, описывается процесс вычисления функции. Среди операторов обязательно должен быть оператор присваивания, задающий функции какое-либо значение.

Например,

Function f(x, y: integer): integer;

Begin

If x0 Then f:=y Else f:= y*y;

End;

Для записи процедур используется служебное слово PROCEDURE, после которого идет имя процедуры, а сама процедура записывается в виде:

Procedure MyProc;

Begin

{действия}

End;

Раздел операторов представляет собой последовательность операторов, заключенных между служебными словами BEGIN и END.

Выполнение операторов осуществляется последовательно.

Использование знака «;» в программе

При записи программ знак «;» нужно ставить после каждого оператора. Из этого правила есть только три исключения:

1. Знак «;» не ставится перед служебным словом ELSE;

2. Знак «;» может не ставиться перед служебным словом END;

3. В конце программы после служебного слова END ставится точка.

Обязательность знака «;» связана с тем, что «Pascal» не контролирует размещение операторов по строкам. Знак окончания строки (невидимый в текстовом редакторе) система приравнивает к пробелу. Вся программа как бы размещена в одной длинной строке, и операторы должны отделяться один от другого знаком «;». Лишний знак «;» в программе повредить не может, поскольку воспринимается как знак, который отделяет «пустой оператор».

Использование пробелов при построении конструкций

Возможность построения конструкций обеспечивается тем, что «Pascal» автоматически игнорирует лишние пробелы между служебными словами, именами величин и знаками. Используя пробелы, можно произвольно менять расположения оператора в строке. Так как знак окончания строки в системе программирования приравнивается к пробелу, можно произвольно менять расположение операторов по строкам.

Одна и та же программа может быть записана различными способами.

Например,

Program NOD;

Var a, b, H, x, y: integer;

Begin

a:=34; b:=50;

x:=a; y:=b;

While x y Do

If xy

Then x:=x-y

Else y:=y-x;

H:=x;

End.

Program NOD;

Var a, b, H, x, y: integer;

Begin a:=34; b:=50; x:=a; y:=b;

While x y Do if xy Then x:=x-y

Else y:=y-x; H:=x; End.

Эти две записи аналогичны.

Таким образом, «Pascal» не имеет ограничений при размещении операторов в строках и по строкам. Программист пользуется этой свободой для достижения правильности записи сложных операторов.

Использование комментариев к программе

Для того чтобы программа была более ясной и понятной, в тексте программы используются комментарии. Комментарии записываются между знаками { и } и могут располагаться в любом месте текста программы. Для записи комментариев вместо знаков { и } могут использоваться пары знаков (* и *) соответственно.

Например,

Program NOD; {заголовок программы}

Var a, b, H, x, y: integer;

Begin

a:=34; b:=50; x:=a; y:=b;

while x y do {организация цикла}

if xy

then x:=x-y

else y:=y-x;

H:=x;

End.

Организация ввода и вывода данных Ввод данных на языке «Pascal»

При построении алгоритмов решения задач выделяются следующие составные части программы:

- ввод исходных данных;

- обработка данных;

- вывод результатов.

Исходные данные на языке «Pascal» можно вводить в тексте программы или в процессе ее исполнения. Результаты выводятся в процессе исполнения программы, и их вывод организуется специальным образом. Для ввода данных можно воспользоваться возможностями оператора присваивания.

Например,

Program Summa;

Var i, j: integer;

Begin

i:=25;

j:=2*i+1;

End.

Ввод данных возможен не только с помощью операторов присваивания. На языке «Pascal» можно одновременно описать величину и ее начальное значение с помощью типа данных, который называется «константа» со служебным словом CONST. В тексте программе тип данных CONST описывается раньше типа VAR.

Например,

Program Summa;

Const x: real=2.3; y: real=5.8;

Var z: real;

Begin

z:=x+y;

End.

Ввод данных непосредственно в тексте программы обычно используют на этапе отладки, когда добиваются правильности исполнения алгоритма при одних и тех же данных. При завершении работы над программой ввод в тексте программы заменяют вводом в процессе исполнения.

Ввод данных в процессе исполнения программы

Ввод данных в процессе исполнения программы организуется с помощью операторов READ и READLN. Операторы ввода записываются в следующем виде:

READ (список ввода);

READLN (список ввода);

READLN;

Первые два оператора различаются несущественно, поэтому обычно используется оператор READLN().

Список ввода представляет собой список величин, которые предварительно описаны в разделе описаний программы и в списке записаны через запятую. С помощью операторов READ() и READLN() этим величинам присваиваются значения.

Например,

Program Test;

Var t: string; i: integer;

Begin

Readln (i, t);

End.

Когда при исполнении программы встречается оператор ввода, компьютер останавливает работу программы и ждет, когда пользователь введет данные с клавиатуры.

В случае операторов READ() и READLN() со списком ввода вводимые данные отображаются на экране пользователя и последовательно становятся значениями величин из списка ввода. Тип вводимых данных должен соответствовать типу величин списка, иначе исполнение программы прерывается и выдается сообщение об ошибке.

Если в списке ввода несколько числовых величин, то вводимые значения отделяются одно от другого либо знаком «пробел», либо нажатием клавиши ENTER. Если числа разделять пробелами, то они будут располагаться в одной строке экрана пользователя. Если числа разделять нажатием клавиши ENTER, то на экране пользователя вводимые числа будут последовательно занимать новые строки.

Если в списке ввода есть величина типа STRING, то ввод каждой строки символов обязательно должен заканчиваться нажатием клавиши ENTER.

Оператор READLN не имеет списка ввода, поэтому его называют оператором «пустого» ввода и обычно используют в программе для организации задержки ее исполнения до нажатия клавиши ENTER.

Вывод данных на языке «Pascal»

Для вывода данных используются операторы WRITE и WRITELN. Второй оператор отличается от первого только тем, что после вывода данных переводит курсор на экране пользователя в начало новой строки.

Операторы вывода записываются в следующем виде:

WRITE (список вывода);

WRITELN (список вывода);

WRITELN;

В списке вывода через запятую можно задавать числа, величины, арифметические выражения и функции (они автоматически вычисляются), строки символов (ограниченные знаками апостроф «’»).

Между WRITE и WRITELN существует единственное различие: после выполнения оператора WRITELN курсор переходит на новую строку.

Оператор WRITELN, который не имеет списка вывода, просто переводит курсор на экране пользователя на новую строку.

Например,

Program Test;

Var t: string; i: integer;

Begin

Readln (i, t);

Write (‘Результат=’, 2*x);

Write (‘Текст-‘, t);

End.

В данной программе для оформления вывода использованы строки символов (пояснительные тексты), которые через запятую идут наравне с именами величин и выражениями.

Поскольку экран пользователя отображается только при исполнении программы, то в конце программы удобно добавлять оператор пустого ввода READLN, который задерживает на экране отображение результатов программы до нажатия клавиши ENTER.

Например,

Program Test;

Var t: string; i: integer;

Begin

Readln (i, t);

Write (‘Результат=’, 2*x);

Write (‘Текст-‘, t);

Readln;

End.

Если оператор READLN не дописывать, то для оценки результата экран пользователя нужно вызывать блицкомандой ALT+F5.

Форматы вывода данных

Форму вывода отдельных значений можно задавать с помощью форматов.

Формат - это количество позиций строки экрана, которые отводятся на выводимое значение.

По умолчанию на целое число при выводе отводится столько позиций, сколько цифр содержит запись числа. Например, оператор WRITE(А, B, С) в одной строке выведет три целых числа подряд. На экране пользователя они сольются в одно число. Чтобы избежать этого, можно в операторе вывода задать количество позиций для каждого числа.

Например, WRITE(А:7, B:7, С:8).

Для записи значений величин А и B отводится по 7 позиций, а для записи значения величины С 8. Если длина выводимого числа меньше заданного формата, то число сдвигается к правой границе выделенных позиций, а левые позиции остаются пустыми. Если длина числа превысит заданный формат, то число выводится полностью.

Дробные десятичные числа по умолчанию выводятся на экран пользователя в нормализованной форме. Например, число 0,4 выведется на экран пользователя в виде 4.0000000000Е-01.

Чтобы вывести на экран текстовую строку - необходимо ее заключить в одинарные кавычки. Например, WRITE(‘ЭТО СТРОКА’). Между символами кавычек могут быть абсолютно любые символы. Если надо вывести сам символ кавычек, то его просто удваивают: WRITE(‘ ‘ ‘ ‘).

Такую запись удобно использовать для вывода значений с комментариями.

Например, WRITE(‘ЗНАЧЕНИЕ ПЕРЕМЕННОЙ NAME=’, NAME);

При выводе данных можно использовать любое количество параметров, располагая их в любом порядке: WRITE(‘ЗНАЧЕНИЕ ПЕРЕМЕННОЙ NAME’, NAME, ‘NAME+5=’, NAME+5).

Имена переменных и вычисления в кавычки не заключаются.

Также с помощью оператора вывода можно выводить на экран результат вычислений. Например, WRITE('5+12=', 5+12).

Оператор присваивания

Оператор присваивания служит для изменения состояния памяти. Каждая инструкция присваивания предписывает изменить значение одной переменной и записывается в виде:

:=

Выполнение этой команды приведет к изменению значения переменной, имя которой указано слева от знака присваивания :=.

Справа записывается выражение, определяющее новое значение переменной. Например, запись вида А:=5 означает, что переменная А принимает значение 5. Запись вида A:=B+C означает, что величина А принимает значение суммы величин B и C.

Тип переменной и тип выражения должны совпадать кроме случая, когда выражение относится к целому типу, а переменная - к действительному. При этом происходит преобразование значения выражения к действительному типу.

Также в операторе присваивания можно использовать одну и ту же переменную. Например, запись А:=А+1 означает, что величина А получает новое значение, увеличенное на 1. Записи такого рода являются обычными для языка «Pascal».

Величины логического типа

Логическая величина (или величина логического типа) – это величина, принимающая одно из двух значений: TRUE (Истина) или FALSE (Ложь).

Тип логической величины указывается в разделе описания величин с помощью слова BOOLEAN.

Для задания значения логической величине используется оператор присваивания. Например,

Program ff;

Var а, b : Boolean;

Begin

а: = true; b: = false;

End.

Логические выражения

Логические выражения строятся из логических величин, функций, выражений, отношений и логических операций.

Основными логическими операциями являются NOT (НЕ), AND (И), OR (ИЛИ). Эти операции являются фундаментом булевой логики, разработанной в XIX веке математиком Джорджем Булем.

Например, (С+15) ORNOT((А3) AND

Операция NOT изменяет значение величины на обратное. Действие операции NOT: Not true = false; Not false = true.

Результаты действия операций OR и AND над величинами А и В приведены в таблице:

А

В

А OR В

А AND В

True

True

True

True

True

False

True

False

False

True

True

False

False

False

False

False

Для простоты запоминания действий операций OR и AND необходимо усвоить два основных правила:

1. Логическое выражение А OR В истинно, если хотя бы одно из условий А или В истинно.

2. Логическое выражение А AND В истинно, когда оба условия А и В истинны.

В ходе исполнения программы в первую очередь выполняется операция NOT, затем AND и в последнюю очередь - OR. Изменить порядок действия можно с помощью скобок. В логических выражениях могут встречаться и арифметические операции: +, -, *, /, mod, div, а также знаки сравнения.

Условный оператор

Иногда требуется, чтобы часть программы выполнялась лишь при выполнении некоторого условия (а при невыполнении этого условия выполнялась другая часть программы). В этом случае используют условный оператор.

Язык «Pascal» допускает использование трех типов условных операторов:

1. Условный оператор IF;

2. Оператор выбора CASE;

3. Оператор безусловного перехода GOTO.

Оператор IF

Оператор IF используется для проверки каких-либо условий (простых или составных) и записывается в одном из двух видов:

1. Неполная форма записи

IF THEN ;

2. Полная форма записи

IF

THEN ELSE ;

В виде блок схемы полный условный оператор выглядит:

В виде блок схемы неполный условный оператор выглядит:

Проверяемые условия могут быть простыми, составными или величиной типа BOOLEAN.

Простые условия получаются с помощью знаков отношений.

Например, U=Z-2*8; X=S.

Составные условия образуются из простых с использованием служебных слов AND (и), OR (или), NOT (не). Простые условия, входящие в составные, заключаются в круглые скобки. Например, (sf+3) OR (s0).

Если проверяемое условие верное, то выполняется оператор, указанный после слова THEN. Если же условие не верное, то выполняется оператор, указанный после слова ELSE.

Например,

Program Primer;

Var A, B: integer;

Begin

Readln (A, В);

If A+B50 Then A:=A+В Else A:=A-B;

Write(A);

End.

Знак «;» перед служебным словом ELSE не ставится.

Слова ELSE может и не быть. Это используется тогда, когда нужно выполнить проверку только одного условия.

Например,

Program Primer;

Var A, B: integer;

Begin

Readln (A, В);

If A+B50 Then A:=A+В;

Write(A);

End.

Если после проверки условия нужно выполнить не один, а несколько операторов применяются служебные слова BEGIN и END. В таком случае после слова END ставится точка с запятой, а не точка.

Например,

Program Primer;

Var A, B: integer;

Begin

Readln (A, В);

If A+B50 Then

Begin

A:=A+10; В:=В-5;

End;

Else A:=A-B;

Write(A);

End.

В качестве выполняемого оператора можно использовать и сам оператор IF. В таком случае оператор называется вложенным.

Например,

Program SqEquation;

Var a, b, c, d: real;

Begin

Write ('Введите коэффициенты a, b, c квадратного уравнения: ');

Readln (a, b, c);

d:=sqr(b)-4*a*c;

If d=0 Then

If d=0 Then Writeln ('Единственный корень: x=', -b/(2*a))

Else Writeln ('Два корня: x1=', (-b+sqrt(d))/(2*a), 'x2=', (-b-sqrt(d))/(2*a))

Else dWriteln ('Корней нет');

End.

Чтобы не запутаться в структуре программы, следует помнить правило: ELSE всегда относится к последнему оператору IF. Если же в программе требуется, чтобы ELSE относилось к одному из предыдущих IF, то придется воспользоваться составным оператором.

Оператор выбора CASE

Оператор выбора CASE применяется для выполнения каких-либо действий при соответствии определенному условию. Другими словами оператор CASE заменяет многократное использование оператора IF...THEN...ELSE.

Например, запись

If a=1 Then ..... Else;

If a=2 Then .... Else;

If a=3 Then ....;

можно заменить записью

Case C of

'1': Readln(I);

'2': Readln(C1);

'3': Readln(S);

End;

Конструкция CASE имеет собственный закрывающий END, который должен присутствовать обязательно. В общем виде его можно записать так:

Case Выражение of

Вариант1: Оператор1;

Вариант2: Оператор2;

...

ВариантN: ОператорN;

Else ОператорN1;

End;

В качестве вариантов можно использовать:

1. Константное выражение такого же типа, как и выражение после CASE.

2. Интервал, например: 1..5, 'A'..'Z'.

3. Список значений или интервалов, например: 1, 3, 5..8, 10, 12.

Выполняется оператор CASE следующим образом: вычисляется выражение после слова CASE и по порядку проверяется, подходит полученное значение под какой-либо вариант, или нет. Если подходит, то выполняется соответствующий этому варианту оператор, иначе если в операторе CASE записана часть ELSE, то выполняется оператор после ELSE, если же этой части нет, то не происходит вообще ничего.

Оператор безусловного перехода GOTO

Оператор безусловного перехода GOTO осуществляет переход к определенному месту, которое помечается метками с помощью служебного слова LABEL, после которого через запятую идут имена меток.

Program Primer;

Label First;

Var A, B: integer;

Begin

First;

Readln (A); Readln (B);

If A B Then Goto First; End.

При выполнении этой программы, в случае, когда AB происходит переход на место помеченное словом First.

Операторы цикла

При составлении программ часто приходится выполнять одни и те же операторы несколько раз. Чтобы избавиться от многократной записи одинаковых операторов «Pascal» предусматривает использование трех вариантов циклов.

1. Цикл с предусловием;

2. Цикл с постусловием;

3. Цикл с параметром.

Цикл с предусловием WHILE

Оператор WHILE (пока), записывается в виде:

WHILE DO ;

Оператор WHILE может в своем составе содержать только один исполняемый оператор. Чтобы выполнить любое число операторов, их можно объединять с помощью служебных слов BEGIN и END по следующей форме:

BEGIN оператор 1; оператор 2; …; оператор n END;

Чтобы не запутаться при записи составных операторов, операторные скобки в тексте программы обычно записывают одну под другой, оставляя промежуточные строки для записи входящих операторов:

Например,

BEGIN

оператор 1;

оператор 2;

…;

оператор n

END;

Особенностью работы оператора WHILE является то, что действие выполняются до тех пор, пока выполняется заданное условие.

Например,

Program Primer;

Var i, s: integer;

Begin

s:=2; i:=10;

While i5 Do

Begin

s:=s+2; i:=i-1;

End;

Writeln (s);

End.

В данном примере начальные значения переменных i и s равны 10 и 2 соответственно. Выполняется проверка условия i5. Условие выполняется, производятся действия: s увеличивается на 2, i – уменьшается на 1. Значение переменной s становится равным 4, переменной i9. Снова выполняется проверка условия i5 и выполняются действия. Так происходит до тех пор, пока значение переменной i не становится равным 5. В этом случае цикл завершается и на экран выдается значение переменной s.

В виде блок схемы цикл с предусловием выглядит так:

Цикл с постусловием REPEAT

Действие этого оператора аналогично действиям программы, описанной с помощью оператора WHILE за исключением того, что проверка условия осуществляется не в начале, а в конце и записывается в виде:

REPEAT

оператор 1

оператор 2

оператор n

UNTIL ;

Оператор REPEAT (повторять) … UNTIL (до тех пор, пока не) содержит логическое выражение (после UNTIL), которое управляет повторением последовательности операторов, записанных между REPEAT и UNTIL.

Повторение продолжается до тех пор, пока логическое выражение не примет значение TRUE. Последовательность операторов выполняется, по меньшей мере, один раз, ибо логическое выражение вычисляется после выполнения данной последовательности (поэтому данный цикл называют циклом с постусловием).

При использовании оператора REPEATUNTIL необходимо учитывать следующее:

  • последовательность операторов должна содержать хотя бы один оператор, влияющий на значение логического выражения;

  • для того чтобы цикл завершился, логическое выражение рано или поздно должно принять значение TRUE.

В случае если после UNTIL записать FALSE цикл будет повторяться бесконечное число раз.

Например,

Program Primer;

Var i, s: integer;

Begin

s:=2;

i:=10;

Repeat

s:=s+2; i:=i-1;

Until i5;

Writeln (s);

End.

В виде блок схемы цикл с постусловием выглядит так:

Оператор цикла с параметром FOR

В случае, когда заранее известно число повторений можно использовать другой оператор повторения – FOR, который записывается в виде:

FOR i:=1 TO n DO оператор;

Вместо величины n может быть записано конкретное целое число.

Например, FOR i:=1 TO 5 DO А:=А+1;

При выполнении цикла переменная i вначале приравнивается к единице; затем она будет увеличиваться на единицу с каждым новым началом цикла (это называется итерацией), пока не станет равна 5.

В случае необходимости уменьшения переменной i вместо DO используется служебное слово DOWNTO.

Например, FOR i:= 10 DOWNTO 1 DO

Работая с циклом FOR, программа повторяется всегда фиксированное количество раз, изменять его в ходе выполнения цикла нельзя.

Если необходимо выполнить несколько операторов, используется конструкция BEGIN ... END;

Например,

Program Primer;

Var i; s, a: integer;

Begin

s:=2; a:=10;

For i:=1 To 10 Do

Begin

s:=s+2; a:=a-s;

End;

Writeln(s, a);

End.

Цикл FOR удобно использовать при каких-нибудь математических расчетах или внутреннем выполнении действий.

Массивы

Массив - это набор элементов одного и того же типа (числа, строки, символы). Массивы можно разделить на одномерные (линейные) и двумерные (прямоугольные).

Примером массива может служить набор значений температуры воздуха за неделю:

1

2

3

4

5

6

7

- день (номер элемента в массиве)

22

20

25

21

25

27

18

- значения температуры

Для упрощения работы с такими величинами их обозначают символами или словами с индексом.

Например, А1, А2, … А7. – массив А, состоящий из семи элементов.

Номера значений элементов массива называются индексом массива. Индекс обозначается целым числом.

Каждому элементу массива соответствует определенное значение.

Например, в данной таблице элементу с номером 5 соответствует значение 25.

Пример прямоугольного массива, состоящего из 6 элементов:

5

14

17

12

26

31

Элементу массива с номером 2, 1 соответствует значение 12 (элемент 2-ой строки, 1-ого столбца).

Одномерные массивы

Для описания массивов используется служебное слово ARRAY. Сам массив задается в виде:

VAR : ARRAY [диапазон индекса] OF ;

Например, VAR Temp : ARRAY [1..7] OF INTEGER; - массив с именем Temp, состоящий из семи элементов целочисленного типа.

Доступ к отдельным элементам массива осуществляется по индексу.

Например, доступ к третьему элементу - Temp[3], к пятому- Temp[5], и т.д.

Имя массива, так же, как и имена величин, выбирается произвольно.

Операции над элементами одномерного массива

Практически во всех алгоритмах, связанных с обработкой данных в массивах, можно выделить четыре этапа:

- задание исходных значений элементам массива (инициализация);

- ввод значений элементов исходного массива;

- обработка данных и получение результирующего массива;

- вывод на экран результирующего массива.

Инициализация

Инициализация - это присваивание всем элементам массива одного и того же значения. Выполняется в цикле.

Например,

For I:= 1 To 7 Do Temp[I]:=0; { все элементы массива Temp равны 0 }

Ввод

Ввод элементов массива также осуществляется в цикле:

For I:= 1 To 7 Do

Begin

Writeln('Введите ',I,'-ый элемент массива');

Readln(Temp[I]);

End;

Вывод

Вывод значений элементов массива выполняется аналогично:

For I:= 1 To 7 Do

Writeln(Temp[I]); {вывод всего массива}

Writeln(Temp[6]); {вывод 6-го элемента}

Обработка элементов массива

Под обработкой массива понимаются любые действия с элементами массива.

Например, требуется получить среднее значение температуры воздуха за 7 дней.

Program primer;

Var A: Array[1..7] Of integer; sum: real; i: integer;

Begin

For i:= 1 To 7 Do

Begin

Writeln ('Введите ', i ,'-ый элемент массива');

Readln (A[i]);

End;

sum:=0;

For i:= 1 To 7 Do Sum:=sum+Temp[i];

Writeln ('Средняя температура за 7 дней =', Sum/7);

End.

Двумерные массивы

Если для указания положения элемента в таблице используется не один, а два порядковых номера, то такие таблицы называются прямоугольными или двумерными массивами. Первым индексом массива служит строка, вторым - столбец.


1

2

3

первый индекс

1

25

45

15

2

46

59

61

3

82

34

73

4

24

25

54

второй индекс

Описывается двумерный массив следующим образом:

VAR : ARRAY [диапазон строк, диапазон столбцов] OF ;

Например, VAR Temp : ARRAY [1..4, 1…3] OF INTEGER; - массив с именем Temp, состоящий из четырех строк, трех столбцов целочисленного типа.

Операции над элементами двумерного массива

Инициализация

Присваивание всем элементам двумерного массива одного и того же значения выполняется в цикле.

Например,

For i:= 1 To 4 Do

For j:= 1 To 3 Do

Temp[i, j]:=0;

Ввод элементов двумерного массива

Ввод элементов двумерного массива также осуществляется в цикле:

Например,

For i:= 1 To 4 Do

For j:= 1 To 3 Do

Readln (Temp[i, j]);

Вывод элементов двумерного массива

Вывод значений двумерного массива выполняется аналогично.

Например,

For i:= 1 To 4 Do

For j:= 1 To 3 Do

Writeln (Temp[i, j]); - вывод всего массива

Writeln (Temp[2, 3]); - вывод элемента 2-й строки 3-го столбца.

Литерные величины

Литерные величины предназначены для обработки последовательностей символов. Иногда их подразделяют на символьные и строковые.

Символьным называется тип данных, переменные которого хранят один символ. Символьные величины описываются с помощью служебного слова CHAR. Значениями переменных этого типа являются отдельные символы - буквы, цифры, знаки и т.д.

Значениями строковых переменных могут быть последовательности различной длины (от нуля и более, длине 0 соответствует пустая строка). Описываются строковые величины с помощью служебного слова STRING.

Символьный тип данных

Символьные переменные на языке «Pascal» описываются типом CHAR.

Значения символьных констант и переменных заключаются в апострофы (одинарные кавычки).

Например, 'A', 'B', 'C', '4', '7', ' ' (пробел).

Если нужен сам апостроф, то он удваивается: В := ’’’’ .

Символьные значения можно задавать и их числовыми кодами. Например, код пробела равен 32, код ‘A’ - 65, ‘B’ - 66, ‘C’ - 67, код символа ‘1’ - 48, ‘2’ - 49, ‘.’ - 46 и т.п.

В случае использования кода перед ним записывают знак #.

Обработка символьных величин

Над символьными величинами можно выполнять следующие действия: присваивание, ввод и вывод, сравнение.

Примеры присваивания символьных значений:

a:= 'A'; aa:= #65;

Вывод символьных величин выполняется с помощью стандартных процедур WRITE() и WRITELN().

Ввод символьных переменных выполняется с помощью стандартных процедур READ() и READLN().

Сравнение символьных величин производится по тем же правилам, что и сравнение чисел с использованием знаков отношений =, , , =. В этом случае сравнивает не сами символы, а их коды. Таблица кодов ASCII составлена таким образом, что коды букв (латинских и большинства русских) возрастают при движении в алфавитном порядке, а коды цифр расположены по порядку.

Из двух символов большим считается тот, код которого больше. Например, '1' A' B', 'б' .

«Pascal» также содержит несколько стандартных функций для работы с символьными величинами.

ORD() – определяет код символа. Например, ORD(2)=49.

CHR() - возвращает символ с указанным кодом. Например, CHR(С)=67.

SUCC () - выдает символ со следующим кодом.

PRED () - символ с предыдущим кодом.

Записи вида SUCC(#255) или PRED(#0) приводят к ошибкам в программе.

Строковый тип данных

Строка - это набор символов, идущих один за другим. При этом они все нумеруются по порядку, и каждый из них имеет свой номер. В этом отношении строку можно сравнить с одномерным массивом.

Например, возьмем строку, содержащую слово «СТРОКА»:

1

2

3

4

5

6

С

Т

Р

О

К

А

Для того чтобы обратиться к символу «С», нужно обратиться к 1-му элементу, к символу «Р» - ко второму.

Для обращения к нужному символу нужно написать переменную-строку, с номером символа в ней, указанным в квадратных скобках. Например, обращения к символу «C» - S[1];

Переменные строкового типа описываются с помощью служебного слова STRING. Переменная такого типа может хранить любые символы, в т.ч. и буквы русского алфавита. Тип STRING может хранить до 255 символов, то есть максимальная длина строки - 255 знаков.

Основные действия, которые можно выполнять над строковыми переменными: ввод и вывод, присваивание, сравнение, соединение.

Ввод строковых переменных выполняется с помощью стандартных процедур READ()и READLN(). При вводе значений нескольких строковых переменных ввод каждого значения всегда завершают нажатием клавиши ENTER.

Вывод строковых переменных выполняется с помощью стандартных процедур WRITE() и WRITELN() и не отличается от вывода данных других типов.

Процедура WRITE выводит значения в одну строку. При этом выводимые значения необходимо отделять пробелами или иными символами (например, запятой, точкой с запятой), иначе все они будут напечатаны слитно. Процедура WRITELN выводит каждое значение с новой строки (в столбец).

Процедуры и функции работы со строковыми величинами

Сравнение строк

Сравнение строк выполняется посимвольным сравнением кодов соответствующих символов до первого несовпадения. Строки считаются равными, если все символы в них совпадают. Для сравнения строк используются те же знаки отношений, что и для числовых величин.

Из двух строк меньшей считается та, в которой первый отличающий символ имеет код меньше, чем соответствующий символ другой строки. Прописные буквы больше заглавных.

Например, строка ‘стол’ меньше строки ‘стул’ (первые два символа совпадают, третий символ 'о’

Сравнивать можно строки и разной длины. Например, строка ‘пар’ меньше строки ‘парад’, 'ABC' .

Команда присваивания

Значение литерной величины в алгоритме обычно задается командой присваивания.

Например, А: = «Информатика», В: = «Инфо95», С: = «1995»

В результате значениями литерных величин А, В и С станут последовательности символов, заключенные в кавычки.

Длина строковой величины

Длиной строковой величины называется целое число, равное количеству символов в значении этой величины.

Для определения длины строковой величины используется функция LENGTH ().

Например, LENGTH (Информатика)=11.

Функцию LENGTH () можно использовать в команде присваивания.

Например,

Program primer;

Var S: String; S1: Integer;

Begin

S := 'АБВГДЕ';

S1 := Length (S);

Write (S1);

End.

В результате получится 6.

Строковая величина может не содержать ни одного символа.

Она обозначается двумя подряд идущими символами «» и называется пустым текстом. Ее длина равна 0.

Строковая величина, состоящая из одного пробела, имеет длину 1.

Соединение строк

Операция соединения позволяет соединять значения литерных величин и констант. Операция соединения обозначается знаком «+».

Результат операции соединения присваивается величине литерного типа.

Например, 'пар'+ 'о' +'ход' дает в результате 'пароход'.

Также для соединения строк используется функция CONCAT (S1, S2, ..., Sx);. где, S1, S2, ..., Sx - список строк, которые будут сложены.

Эта функция - аналог операции сложения.

Например, запись S := S + S1 + S2; аналогична записи CONCAT(S, S1, S2);

Использование сложения строк через «+» гораздо лучше, чем использование CONCAT, так как занимает меньше места в программе.

Определение позиции вхождения подстроки

Для определения поиска строки в строке используется функция POS (S, S1); где S - это искомая строка, то есть та, которую функция пытается найти, S1 - строка, в которой производится поиск. Если строка S в S1 не обнаружена, то функция принимает значение ноль.

Например,

Program primer;

Var S, S1: String;

I: Integer;

Begin

S:= 'Информатика';

S1:=’форм’

I:= Pos (S1, S);

Write (I);

End.

В результате I=3.

Выделение части строки

Функция COPY (S; I; C); – выделяет из строки S подстроку длиной C символов, начиная с позиции I.

Например,

Program primer;

Var S, S1: String;

Begin

S:= 'АБВГДЕ';

S1:= Copy (S, 2, 3);

Write (S1);

End.

В результате S1=БВГ.

Удаление и вставка символов

Для удаления подстроки длиной C символов в строке S с позиции с номером I используется функция DELETE (S; I; C);

Например,

Program primer;

Var S, S1: String;

I, J: Integer;

Begin

S:= 'Информатика';

I:=3; J:=5;

S1:= Delete (S, I, J);

Write (S1);

End.

В результате S1=форма.

INSERT (X; S; I); – используется для вставки подстроки X в строку S начиная с позиции с номером I.

Например,

Program primer;

Var S, S1, S2: String;

I: Integer;

Begin

S1:= 'Ре';

S2:=’форма ‘

I=:1;

S:= Insert (S2, S1, I);

Write (S);

End.

В результате S=Реформа.

Преобразование типов

Преобразование типов подразумевает переход из одного типа к другому. Например, перевод числа типа INTEGER в строку, то есть преобразовать его в тип STRING. При этом надо понимать, что на самом деле переменная не меняет свой тип. Преобразование типов сводится к возможности поместить значение переменной одного типа в переменную другого типа в том виде, в котором оно этой переменной соответствует. То есть, переводя INTEGER в STRING, мы всего лишь будем заполнять переменную типа STRING символами, которые соответствуют цифрам переменной типа INTEGER.

Для взаимного преобразования типов в «Pascal» существует две процедуры:

STR (X; S); – преобразует вещественное число X в строку S.

Например,

Program primer;

Var S: String;

I, Code: Integer;

Begin

Write ('Введите число: ');

Readln (I);

Str (I, S);

Writeln ('Получилась строка: ', S);

End.

VAL (S; X; код); - преобразует строку S в вещественное число Х. Код - переменная для указания ошибки. При наличии ошибки указывает номер символа в строке, в котором содержится ошибка, в случае отсутствия таковых устанавливается в 0.

Например,

Program primer;

Var S: String;

I, Code: Integer;

Begin

Write ('Введите строку: ');

Readln (S);

Val (S, I, Code);

Writeln ('Получилось число: ', I);

End.

Процедуры и функции

При составлении сложных программ часто используются подпрограммы.

Подпрограмма - это часть программы, к которой потом можно обратиться из любого места основной программы (вызвать ее). Она может иметь свои переменные, метки, константы, равно как и вложенные подпрограммы. Она может использовать переменные, общие для всей программы (глобальные переменные), с учетом того, что они были описаны в основной программе до самой подпрограммы.

Подпрограммы могут быть оформлены в виде процедур и функций.

Процедуры используются для передачи из основной программы в процедуру некоторых параметров (аргументов процедуры), а другие параметры после обработки передаются из процедуры в основную программу (результаты процедуры). Возможны процедуры, которые вообще не связаны с передачей параметров из основной программы и в основную программу.

Если из процедуры в программу передается только один параметр (результат), то такую процедуру можно оформить в виде функции.

Процедуры и функции имеют такую же структуру, как и основная программа. Особенности состоят в том, что в заголовке вместо служебного слова PROGRAM используют служебные слова PROCEDURE или FUNCTION (процедура или функция), а в конце текста процедуры и функции после слова END ставится знак «;», а не точка.

Процедуры

Создаваемая процедура имеет следующую структуру:

Procedure имя процедуры ();

Label ;

Const ;

Type ;

Var ;

;

Begin

End;

Параметры, передаваемые программе, указываются в скобках сразу после имени. Список переменных-параметров может отсутствовать - в том случае, если подпрограмме они не требуется. Параметров может быть сколько угодно, причем любых типов. Тогда они разбиваются на группы по отдельным типам и разделяются точкой с запятой.

При описании параметров вводимые параметры (аргументы) описывают по правилам описания типов, но без служебного слова VAR.

Например, РROCEDURE MIN(i, j: INTEGER; x, y: REAL);

Выводимые параметры (результаты) записываются с использованием служебного слова VAR, точно как в разделе описания типов данных.

Например, РROCEDURE MIN(i, j: INTEGER; VAR x, y: REAL);

В основной программе для вызова процедуры используется оператор вызова. Оператор вызова имеет вид имени процедуры, после которого в круглых скобках вместо формальных параметров записываются фактические параметры. Фактические параметры – это величины, которые используются в основной программе, а также конкретные числа, текстовые строки и т.д.

Главное при записи оператора вызова процедуры – это совпадение типов величин и значений, которые записаны в операторе вызова с типами, которые определены в заголовке процедуры.

Например, программа определения наименьшей длины стороны треугольника, заданного координатами вершин.

Program z;

procedure dl(x, y, h, g: real; var d:real);

begin

d:=sqrt((h-x)*(h-x)+(g-y)*(g-y));

end;

Var x1, x2, x3, y1, y2, y3: real;

a, b, c, min: real;

Begin

Readln (x1, y1, x2, y2, x3, y3);

dl(x1, y1, x2, y2, a);

dl(x1, y1, x3, y3, b);

dl(x2, y2, x3, y3, c);

min:=a;

if bthen min:=b;

if cthen min:=c;

writeln ('min=', min);

End.

Нахождение длины стороны треугольника по координатам его вершин описывается как процедура dl(x, y, h, g: real; var d:real), где x, y, h, g – координаты вершин, d – вычисляемое значение длины.

Вызов процедуры осуществляется непосредственно в программе: dl(x1, y1, x2, y2, a), где x1, y1, x2, y2 – вводимые значения, а – результат работы процедуры.

Функции

При записи функции в заголовке используется служебное слово FUNCTION. Далее записывается имя (идентификатор) подпрограммы, после которого в круглых скобках описываются вводимые параметры (аргументы).

FUNCTION ():;

где - имя функции;

- тип значений, вычисляемых функцией;

- перечень переменных, от которых зависит значение функции, с указанием их типов.

Например, FUNCTION MAX(I, J: INTEGER; U: REAL): REAL;

При использовании функций следует обращать внимание на совпадение типов величин и значений, которые записаны в основной программе после имени функции с типами, которые были определены при записи заголовка подпрограммы.

В основной программе имя функции используется в выражениях как величина. После имени функции в скобках вместо формальных параметров через запятую записываются фактические величины или значения.

В тексте функции выводимое значение присваивается имени функции с помощью оператора присваивания. Имя функции записывается без параметров.

Например,

Function f(x, y: integer): integer

Begin

If x0 Then f:=y Else f:= y*y;

End;

В тексте программы описывать величины, которые введены в заголовке функции, не надо.

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

Program z;

Function dl(x, y, h, g: real): real;

begin

dl:=sqrt((h-x)*(h-x)+(g-y)*(g-y));

end;

Var x1, x2, x3, y1, y2, y3: real;

a, b, c, min: real;

Begin

Readln (x1, y1, x2, y2, x3, y3);

a:=dl(x1, y1, x2, y2);

b:=dl(x1, y1, x3, y3);

c:=dl(x2, y2, x3, y3);

min:=a;

if bthen min:=b;

if cthen min:=c;

writeln ('min=', min);

End.

Как и стандартные, собственные функции могут быть использованы внутри процедур.

Множества

«Pascal» – один из немногих алгоритмических языков, который имеет встроенные средства для работы с множествами. В языке «Pascal» рассматриваются только конечные множества.

Элементами множеств могут быть величины одного из следующих типов: INTEGER, CHAR, BOOLEAN, а также величины перечисляемого и интервального типов.

Величины множественного типа не могут быть элементами списка ввода - вывода.

Постоянные множества (константы) в языке «Pascal» задаются перечислением их элементов и записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми.

Например,

[1, 2, 3, 4, 5];

[ ] - пустое множество,

[1..100];

['A', 'C'].

В квадратных скобках могут находиться не только константы, но и любые выражения, имеющие тип элементов данного множества.

Количество элементов базового типа, на котором строится множество, ограничено. В Turbo Pascal количество базовых элементов не должно превышать 256.

Для задания типа множество используются служебные слова SET и OF, а затем указываются элементы этого множества, как правило, в виде перечисления или диапазона.

Например,

Type

Alfa=set of ‘A’..’Z’;

Ten = set of 0..9;

Count = set of (Plus, Minus);

Введя тип множество, можно задавать переменные этого типа.

Var

CAlfa: Alfa;

U233: Ten;

Так же как и для других типов тип множество можно задать непосредственно при задании переменных.

Var

Calfa: set of ‘A’..’Z’;

Operation: set of (Plus, Minus);

U233: set of 0..9;

Множество включает в себя набор элементов базового типа, все подмножества данного множества, а также пустое подмножество. Если базовый тип, на котором строится множество, имеет К элементов, то число подмножеств, входящих в это множество, равно 2 в степени К.

Пусть имеется переменная Р интервального типа: var P: 1..3; Эта переменная может принимать три различных значения - либо 1, либо 2, либо 3.

Переменная Т множественного типа var T: Set of 1..3; может принимать восемь различных значений: [ ], [1, 2], [1], [1, 3], [2], [2, 3], [3], [1, 2, 3]. Порядок перечисления элементов базового типа в константах безразличен.

Присвоение для переменных типа множество

Множеству в программе можно присвоить то или иное значение. Обычно значение задается с помощью, так называемого конструктора множества. Конструктор задает множество элементов с помощью перечисления в квадратных скобках выражений, значения которого дают элементы этого множества. Допустимо использовать диапазоны элементов.

CAlfa:=[‘A’, ‘B’, ‘C’];

C:=[chr(0)..chr(31), ‘D’, ‘F’]

Операции над множествами

Для множеств применимы операции присваивания (:=), объединения (+), пересечения (*) и вычитания (разности) (-). С их помощью можно строить различные выражения множественного типа. Результат выполнения этих операций есть величина множественного типа.

Объединением двух множеств называется множество элементов, принадлежащих обоим множествам. + - объединение множеств. С := А+В; Каждый элемент множества С является элементом либо множества А, либо множества В.

Например, ['A', 'B'] + ['A', 'D'] даст ['A', 'B', 'D']

Пересечением двух множеств называется множество тех элементов, которые принадлежат одновременно двум множествам. * - пересечение множеств. С :=А*В; Каждый элемент множества С является элементом множества А и В одновременно.

Например, ['A'] * ['A', 'B', 'C'] даст ['A']

Разностью двух множеств называется множество, содержащие те элементы первого множества, которые не являются элементами второго. - - разность множеств. С :=А-В; Каждый элемент множества С является элементом множества А, но не является элементом множества В.

Например, ['A', 'B', 'C'] - ['A', 'B'] даст ['C'].

К множественным величинам применимы операции: тождественность (=), нетождественность (), содержится в (=). Результат выполнения этих операций имеет логический тип.

= - проверка эквивалентности двух множеств. А=В; Множество А равно множеству В, если каждый элемент множества А является элементом множества В, и наоборот, каждый элемент множества В является элементом множества А.

Результат операции логическая величина. ['A', 'B'] = ['A', 'C'] даст FALSE

- проверка неэквивалентности двух множеств. АВ; Множество А не равно множеству В, если множество А содержит хотя бы один элемент, не являющийся элементом множества В, или (и) наоборот, множество В содержит хотя бы один элемент, не являющийся элементом множества А.

Результат операции логическая величина. ['A', 'B'] ['A', 'C'] даст TRUE

- проверка, является ли левое множество подмножеством правого. А

Результат операции логическая величина. ['B']

= - проверка, является ли правее множество подмножеством левого. А = В; Действие операции аналогично действию предыдущей операции.

Результат операции логическая величина. ['C', 'D'] = ['A'] даст FALSE.

Кроме этих операций для работы с величинами множественного типа используется операция IN проверяющая принадлежность элемента базового типа, стоящего слева от знака операции, множеству, стоящему справа от знака операции. Результат выполнения этой операции - булевский. Операция проверки принадлежности элемента множеству часто используется вместо операций отношения.

Например,

A in ['A', 'B'] даст TRUE;

2 in [1, 3, 6] даст FALSE.

Записи





Файловый тип данных







Использование программы Turbo Pascal

Для начала работы с системой программирования Turbo Pascal запускают на исполнение файл turbo.exe. Необходимо, чтобы в том же каталоге диска находился и служебный файл turbo.tpl.

После загрузки на экране отображается основной экран системы, первая строка которого является строкой главного меню.

Система управляется с помощью меню и блицкоманд. Среди блицкоманд управления системой встречаются команды, которые определяются нажатием одной клавиши (например, F1, Esc) или двух и более (например, Alt + X).

После загрузки системы основной экран принимает вид, приведенный на рисунке.





















Ниже строки меню расположено прямоугольное поле Desktop (рабочий стол системы), в котором могут располагаться окна, в том числе несколько окон текстового редактора, с которыми велась работа в предыдущем сеансе.

В последней строке приведены подсказки для некоторых блицкоманд. В разных режимах в этой строке появляются подсказки и сообщения.

Выбор пунктов главного меню

Для входа в главное меню используют блицкоманду F10. В строке главного меню появляется курсор в виде контрастного прямоугольника. Курсор меню перемещается по пунктам клавишами управления курсором. Выбрать пункт меню – это значит переместить на него курсор меню и нажать клавишу ВВОД. Выход из меню и переход в режим ввода и редактирования – блицкоманда Esc.

Существуют и другие способы выбора пункта меню:

- после входа в меню (F10) можно просто нажать на клавиатуре заглавную букву пункта меню.

- пункт меню можно выбрать, не входя в меню. Для этого достаточно ввести блицкоманду Alt+. Например, Alt+F – выбор пункта File.

- можно выбирать пункты меню с помощью мыши (щелчок левой кнопкой по пункту меню).

При выборе пункта меню обычно открывается новое выпадающее меню, в котором выбор делается так же. В выпадающем меню против некоторых пунктов записаны блицкоманды, которые можно использовать, чтобы без обращения к главному меню произвести те же операции. После выбора пункта выпадающего меню могут открываться другие окна и меню.

Описание пунктов главного меню

Пункты меню предназначены для выполнения операций в системе.

File (файл) – меню работы с файлами.

Выпадающее меню содержит пункты, связанные с загрузкой и сохранением файлов на диске. Пункт Open (блицкоманда F3) выводит на экран окно для ввода имени файла для загрузки. Здесь же расположен пункт Exit выхода из системы (блицкоманда Alt+X). В нижней части выпадающего меню приведен список 5 последних файлов, с которыми работали в системе и которые можно загрузить непосредственно из выпадающего меню.

Edit (редактировать) – меню редактирования.

Выпадающее меню позволяет проводить ряд операций с фрагментами текста программы в текстовом редакторе. В частности, здесь приведены пункты работы с электронным карманом Clipboard.

Search (поиск) – меню поиска информации.

Выпадающее меню также содержит операции редактирования текста программы. Эти операции связаны с поиском и заменой фрагментов текста.

Run (исполнить) – меню исполнения программы.

Выпадающее меню содержит пункты включения режимов исполнения программы: автоматического Run (Ctrl+F9), управляемого построчного Step over (F8 – исполнение одной строки текста программы).

Compile (компилировать) – меню компиляции.

Выпадающее меню, в частности, содержит пункт Compile включения режима компиляции (Alt+F9) и пункт Destination (размещение), который определяет, куда будет компилироваться программа: в оперативную память (Memory) или в файл на диске (Disk). В начале работы с текстом программы включают режим компиляции в оперативную память. После успешной отладки включают второй режим и получают на диске exe-файл.

Debug (отладка) – меню отладки.

Выпадающее меню содержит пункты, которые позволяют определить и изменять значения величин в процессе отладки. Здесь же размещены пункты, которые открывают при отладке вспомогательные окна: Watch – окно просмотра значений величин, User screen – включение отображения экрана пользователя (Alt+F5), Output – окно отображения части экрана пользователя.

Tools (инструменты) – меню инструментальных средств.

Выпадающее меню помогает вводить имена программ и запускать готовые программы в операционной системе, не выходя из системы программирования.

Options (параметры) – меню параметров системы.

Выпадающее меню содержит несколько пунктов, с помощью которых открываются диалоговые окна для задания параметров. В частности, с помощью пункта Editor определяются параметры текстового редактора, с помощью пункта Directories – каталоги, в которых записываются файлы с текстами программ и служебные файлы, с помощью пункта Auto save определяются условия автоматического сохранения файлов с состоянием рабочего стола системы.

Window (окно) – меню окон.

Выпадающее меню позволяет открывать, закрывать, активизировать окна и размещать их на поле системы.

Help (помощь) – меню информационной помощи.

Выпадающее меню позволяет выводить на экран справочную информацию по языку Паскаль и по системе программирования.

Структура окон на рабочем поле

Тексты программ отображаются в окнах редактирования, которые имеют одинаковую конструкцию.

Информационные элементы окна размещены по верхней линии рамки (имя файла и номер окна, нумеруются только первые 9 окон) и слева по нижней линии (положение курсора по форме : .

Остальные элементы рамки предназначены для управления окном с помощью мыши. Левый верхний элемент – значок закрытия окна, верхний правый – значок раскрытия окна на все рабочее поле, справа и снизу – линейки «прокрутки» для перемещения текста в окне.

Работа с окнами

Окна на основном экране системы могут быть в активном и в пассивном состоянии (с окном можно работать непосредственно или нет). Активным может быть только одно окно.

Когда окно является активным, его контур ограничен двойной линией. Если окно в пассивном состоянии – его контур ограничен одинарной линией.

Блицкомандой F6 окна на рабочем поле последовательно активизируются. Для активизации окна можно использовать и другие пути:

- окно можно активизировать по списку команды меню Windows/List.

- окно с номером активизируется блицкомандой Alt+

- окно можно активизировать щелчком мыши по любому месту площади окна.

Активное окно можно раскрыть на весь экран командой меню Windows/Zoom, блицкомандой F5 или щелчком левой кнопки мыши по значку раскрытия окна. Повторная команда возвращает прежние размеры окна. Окно можно перемещать по рабочему полю с помощью мыши, захватив левой кнопкой мыши верхнюю рамку окна. Можно менять размеры окна, захватив левой кнопкой мыши правый нижний угол окна. Активное окно можно закрыть командой меню Windows/Close, блицкомандой Alt+F3 или щелчком левой кнопки мыши по значку закрытия окна.

Экран пользователя активизируется блицкомандой Alt+F5 или командой меню Debug/User screen. Выход из экрана пользователя производится нажатием любой клавиши клавиатуры.

Общая характеристика текстового редактора системы

Встроенный текстовый редактор системы предназначен для ввода и редактирования текстов программ на языке Паскаль. Текстовый редактор системы является многооконным и дает возможность работать с несколькими текстами в разных окнах. Встроенный текстовый редактор системы обладает возможностями обычного текстового редактора за исключением функции автоматического разбиения текста на строки. Для перевода курсора на следующую строку необходимо нажать клавишу ВВОД. Строка программы может содержать до 127 символов. Обычно программы записывают так, чтобы строка не превышала длину строки экрана (72-74 символа).

Начало работы с текстом программы

Если система была настроена на автоматическое сохранение данных последнего сеанса работы, то после загрузки системы в нее автоматически загружается текст программы, с которым велась работы на предыдущем сеансе.

После загрузки система автоматически переходит в режим Edit. Окон с текстами может быть несколько. Система готова к продолжению работы по редактированию текста, если создание текста не было закончено на предыдущем сеансе.

Курсор перемещается по тексту программы клавишами перемещения курсора, обычными для текстовых редакторов. Курсор можно сразу переместить в начало текста и в его конец.

- в начало текста- Ctrl+PgUp

- в конец текста- Ctrl+PgDn

Из начального состояния системы всегда можно перейти к созданию нового текста программы командой меню File/New.

Основные режимы ввода и редактирования

Текстовый редактор может работать в режиме вставки и в режиме замены. Переключает режимы вставки и замены блицкоманда Ins.

В режиме вставки можно, установив курсор в середине строки и нажав клавишу ВВОД, разбить строку на две части.

Тексты программ удобно вводить в режиме автоматического отступа, который работает только в режиме вставки и носит название Indent (Autoindent mode). В этом режиме курсор после нажатия клавиши ВВОД автоматически переводится в следующую строку в позицию первого непробела предыдущей строки. Этот режим помогает строить сложные конструкции в тексте программы. Включает/выключает режим блицкоманда Ctrl+ O+I.

Существуют и другие режимы ввода и редактирования. Например, режим Unindent (Back Space Unindent), в котором курсор в пустой строке клавишей возврата на шаг (Back Space) переводится в позицию первого непробела предыдущей строки. Включает/выключает режим блицкоманда Ctrl+ O+U.

Удаление, вставка и восстановление

В режиме вставки символы вставляются по правилам, обычным для текстовых редакторов.

Для удаления символов пользуются клавишами удаления (Del) и возврата на шаг (Back Space). Клавишей удаления удаляют символ, на котором стоит курсор. Клавишей возврата удаляют символ слева от курсора. Курсор при этом сдвигается влево.

В режиме вставки можно клавишей ВВОД вставить пустую строку, если курсор находится в конце строки. Вставить пустую строку над курсором можно блицкомандой Ctrl+N.

Если курсор находится в конце строки, то клавишей удаления в режиме вставки можно склеить две строки (в которой находится курсор и следующую).

Удалить строку, в которой находится курсор можно блицкомандой Ctrl+Y. Если курсор находится в середине стоки, то можно удалить правую от него часть строки вместе с символом, на котором помещен курсор блицкомандой Ctrl+Q+Y.

После изменений в строке можно восстановить ее прежнее состояние, если курсор эту строку не покидал, блицкомандой Alt+BS или командой меню Edit/Undo.

Копирование и перемещение фрагментов текста

В системе фрагменты текста, предназначенные для копирования или перемещения, называются блоками и выделяются специальным образом на экране компьютера.

Курсор ставится на начало блока, вводится блицкоманда Ctrl+K+B, потом курсор переводится на конец блока и вводится Ctrl+K.

Блок выделяется на экране контрастным цветом. Причем, если начало и конец блока расположены в разных строках, то выделяется конец первой строки, все промежуточные строки (если они есть) и начало последней строки.

Далее курсором указывается место в программе, куда нужно скопировать или переместить блок. Блицкоманда копирования - Ctrl+K+C, блицкоманда перемещения - Ctrl+K+V.

Выделенный блок можно удалить блицкомандой Ctrl+K+Y.

Выделение с блока снимается блицкомандой Ctrl+K.

Выделять блоки можно и другими способами: мышью (при нажатой левой клавише) или клавишами-стрелками управления курсором (при нажатой клавише Shift).

Текстовый редактор системы имеет электронный карман команды для работы с электронным карманом собраны в пункте Edit главного меню, там же приведены блицкоманды:

- записать блок в электронный карман и удалить из текста – команда меню Edit/Cut, блицкоманда Shift+Del.

- скопировать блок в электронный карман – команда меню Edit/Copy (Ctrl+Ins).

- вывести блок из кармана – команда Edit/Paste (Shift+Ins).

- удалить блок – Edit/Clear (Ctrl+Del, Ctrl+K+Y).

- открыть окно Clipboard на рабочем столе – Edit/Show clipboard.

Для того чтобы скопировать строку в буфер, необходимо сделать следующее:

- Нажав и удерживая клавишу Shift, Вы передвигаете курсор клавишами-стрелками, вслед за ним текст выделяется белым цветом.

- Выделенный фрагмент текста далее должен быть помешен в буфер: Для этого нажмите комбинацию Ctrl+Ins (Insert).

- Теперь перемещайтесь в место, где хотите вставить текст и нажмите комбинацию Shft+Ins. (Вставка)

Сохранение и загрузка программы

При работе с текстом программы в текущем сеансе работы система обязательно хранит имя файла, из которого текст был загружен или в котором он был сохранен в текущем сеансе.

Текст можно сохранить в файле с тем же именем или изменить его.

Сохранение в файле с прежним именем проводится командой меню File/Save (F2).

Для сохранения текста программы в файле с новым именем вводится команда File/Save as и новое имя вводится. Имя файла вводится только латинскими буквами. Большие и малые буквы система не различает. Если расширение имени не вводится, то система автоматически добавляет расширение .pas. ввод имени завершается нажатием клавиши ВВОД.

В системе каждому новому тексту (после команды меню File/New) автоматически присваивается имя файла NONAME00.PAS, NONAME01.PAS и т.д. Независимо от этого при сохранении вновь созданного текста система еще раз запрашивает имя файла, в котором он должен быть сохранен.

Загрузить текст программы из файла на диске можно двумя способами: вводя полное имя файла или выбирая имя из списка файлов, с которыми работали на предыдущих сеансах.

Первый способ используют при загрузке файлов, к которым давно не обращались. Вводят команду меню File/Open (F3). Появляется окно диалога с несколькими полями. Перемещение курсора между полями делается клавишей табулирования (Tab) или мышью. В поле Files помещают курсор на нужное имя и нажимают ВВОД. Можно сделать двойной щелчок мышкой по имени файла.

Второй способ загрузки используют, когда работа над текстом продолжается на протяжении нескольких сеансов. Вводят команду меню File. В нижней части выпадающего меню находится список 5 последних рабочих файлов. Курсор помещают на нужное имя и нажимают клавишу ВВОД. Можно щелкнуть левой кнопкой мыши по имени в списке.

Типы ошибок в программах

Исходный текст достаточно сложных программ редко не содержит ошибок. Отладка программы – это процесс поиска и устранения ошибок в тексте программы. Именно отладка является основным этапом при создании программных средств. В программах различают три типа ошибок:

1. Синтаксические ошибки. (syntax error)

2. Ошибки исполнения (run-time error)

3. Логические ошибки

Синтаксические ошибки – это ошибки, которые приводят к остановке исполнения программы из-за недопустимых значений величин или параметров (например, в случае деления на ноль).

Логические ошибки – это ошибки самого алгоритма, которые приводят к неверным результатам. В процессе отладки устанавливают наличие ошибок в программе, находят место каждой ошибки в тексте программы и устраняют их.

Основные режимы работы системы

Система программирования Turbo Pascal обеспечивает ввод, автоматизированную отладку и компиляцию программ на языке Паскаль. Отладка – это процесс поиска и устранения ошибок в тексте программы. Компиляцией называют автоматический перевод алгоритма на языке программирования в программу с машинными кодами для процессора.

Система имеет следующие основные режимы работы:

- Работа с главным меню.

- Ввод и редактирование текста программы на языке Паскаль.

- Сборка и компиляция программы.

- Автоматическое исполнение программы.

- Управляемое построчное исполнение программы.

В режиме работы с главным меню проводится выбор режима работы системы, установка ее параметров и выполнение отдельных операций (например, операций сохранения и загрузки текста программы).

Ввод в память компьютера и редактирование текста программы производится с помощью текстового редактора системы. Возможности текстового редактора соответствуют обычным возможностям программных средств этого типа. Текст программы может быть сохранен в файле на диске. Стандартное расширение имени для таких файлов - .pas.

В режиме сборки и компиляции текст программы автоматически переводится в машинные коды для процессора. Если программа разбита на несколько частей (модулей), то в этом режиме автоматически проводится сборка из частей.

Возможны два способа компиляции: в память и на диск. В первом случае в оперативную память компьютера записывается программа в машинных кодах, которую система программирования позволяет исполнить. В случае компиляции на диск программа в машинных кодах записывается в файл с тем же именем, что имеет файл с текстом программы, но с другим расширением – exe или com.

В режиме автоматического исполнения система программирования запускает на исполнение программу в машинных кодах, которая хранится в оперативной памяти или в файле на диске. В режиме автоматического исполнения экран компьютера переводится в особый режим, который называется экраном пользователя.

Режим управляемого построчного исполнения программы позволяет исполнять программу с остановками, последовательно по одной строке за один шаг. Режим используется при поиске ошибок в программе.

Процедуры управления вводом-выводом в текстовом режиме

Система позволяет работать с экраном пользователя в текстовом и графическом режиме. Текстовый режим является основным и устанавливается автоматически. В этом режиме экран условно разбивается на прямоугольные участки (знакоместа). Каждое знакоместо расположено в пронумерованных строке (Row) и столбце (Column). Отсчет идет от левого верхнего угла экрана.

Система имеет ряд стандартных процедур, которые позволяют управлять выводом информации на экран пользователя в текстовом режиме. Они используются для того, чтобы изменить построчную форму вывода. Основные процедуры работы в текстовом режиме и с клавиатурой содержатся в модуле Crt. Для подключения модуля перед разделом описаний записывается строка user Crt.

Основные процедуры этого типа:

ClrScr – очистка экрана. После очистки курсор перемещается в левую верхнюю угловую позицию экрана.

GotoXY(X,Y:byte) – перемещение курсора к знакоместу с номером Х столбца и номером Y строки. Сначала идет номер столбца.

Например, GotoXY(45,15)

Автоматизация процесса отладки в системе программирования

Паскаль позволяет автоматизировать отдельные этапы процесса отладки. После ввода исходного текста переходят к компиляции программы.

Компиляция - это перевод программы с языка программирования на язык машинный, понятный компьютеру.

В процессе компиляции компилятор автоматически останавливается, если встречает в тексте синтаксическую ошибку. Место в тексте программы, после которого произошла остановка компилятора, автоматически отмечается курсором в окне текстового редактора. Синтаксическую ошибку устраняют и вновь запускают компилятор. И так, пока компиляция всего текста не пройдет успешно. После этого переходят к исполнению программы с заданными исходными данными (этап контрольного просчета). При наличии ошибки исполнения исполнение программы прекращается, и имеется возможность установить место в программе, где эта ошибка возникла. Ошибку устраняют, снова проводят компиляцию программы и снова запускают ее на исполнение. Таким способом постепенно устраняют все ошибки исполнения. Далее переходят к анализу правильности логики самого алгоритма, т.е. к поиску логических ошибок. Для этого задают различные исходные данные и сверяют результаты исполнения программы с известными результатами. Этот процесс еще называется тестированием программы. При тестировании нужно предусмотреть все варианты исходных данных и результатов, а так же случаи некорректного ввода данных. При поиске ошибок исполнения и логических ошибок большую помощь может оказать отладчик системы, который позволяет исполнять программу построчно с остановками.

Компиляция программы и поиск синтаксических ошибок

Для установки режима компиляции в память выбрать команду меню Compile/Destination и установить режим Memory. После установки режима переходят к компиляции программы. Команда меню Compile/Compile или блицкоманда Alt+F9. На экран выводится информационное табло. В случае обнаружения синтаксической ошибки компилятор прерывает работу. После возврата в режим редактирования курсор располагается в тексте после оператора (выражения), который записан с ошибкой. Ошибку следует искать до курсора. После исправления ошибки снова запускают компилятор. Компиляция завершается успешно, когда исправлены все синтаксические ошибки. В случае успешной компиляции на табло выводится сообщение «Compile successful: press any key». Нажатием любой клавиши возвращаются в режим Edit (редактирования. После отладки отредактированный текст программы обычно сохраняется в файле с тем же именем. Команда меню File/Save или блицкоманда F2.

Исполнение программы и поиск ошибок исполнения

После успешной компиляции переходят к исполнению программы. Команда меню Run/Run или блицкоманда Ctrl+F9. Экран переходит в режим экрана пользователя. При обнаружении ошибки исполнения исполнение программы прерывается и можно найти место в программе, которое привело к прерыванию. Система автоматически возвращается в режим редактирования. В верхней строке выводится сообщение о типе ошибки. Курсор находится в тексте программы после выражения, вычисление (исполнение) которого привело к ошибке. После успешного исполнения программы ее текст следует снова сохранить.

Поиск логических ошибок. Контрольный просчет

Успешное исполнение сложной программы еще не говорит о том, что она не содержит логических ошибок. Для обнаружения таких ошибок по известным исходным данным вручную делают расчет и получают численный результат.

Далее проводят контрольный просчет (тестирование). Контрольный просчет заключается в том, что те же исходные данные вводятся при исполнении программы. Совпадение результатов говорит о правильности работы программы. При наличии логической ошибки ее поиск существенно упрощается в режиме управляемого построчного исполнения программы. Программисту в этом режиме остается следить за тем, как последовательно вычисляются промежуточные результаты и в каком месте они становятся неправильными. После завершения отладки лишние промежуточные данные можно удалить и текст программы еще раз сохранить на диске. Далее можно установить режим компиляции на диск и провести компиляцию.

49


-75%
Курсы повышения квалификации

Внедрение современных педагогических технологий в условиях реализации ФГОС (в предметной области «Информатика»)

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
1000 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Основы программирования на языке «Pascal» (0.12 MB)

© 2008-2021, ООО «Мультиурок», ИНН 6732109381

Огромная база учебных материалов на каждый урок с возможностью удаленного управления

Тесты, видеоуроки, электронные тетради