Структура программы на
языке Турбо
Паскаль

| Program P1;
{заголовок, название программы} {±}
Uses………;{подключение
внешних модулей с расширением *.tpu}{±}
Const……...;
{описание констант}
{±}
Type………;
{задание типов}
{±}
Var………..;
{раздел объявления переменных}{±}
Function F1
….;
{описание функций}
{±}
Procedure Pr1
….; {описание процедур}
{±} |

| Begin{начало
основной программы}
{+} ….. {тело
основной программы} {±}
End. {конец основной программы}
{+}.
|
Примечание. {+} – обязательная часть программы,
{±} – необязательная
часть программы.
Рассмотрим
основные части программы
3.1. Uses – подключение внешних библиотек для расширения в
программе набора доступных операторов.
Пример:
UsesDOS, Crt, Graph, Printer; { Подключение четырех стандартных модулей:
DOS – использование в программе команд
операционной системы.
Crt – расширение возможностей
ввода-вывода, использование звукового генератора.
Graph – подключение графических
процедур и функций.
Printer – легкий доступ к печати.}
Пример. Следующая
программа обеспечивает реализацию легкого доступа к
печати.
UsesPrinter;
{ подключение модуля}
begin
Write(‘привет’);
{ выводится на экран слово "привет"}
Write(lst,‘привет’);
{ выводится на
принтер слово "привет"}
end.
3.2. Const (константы).
В этом разделе
описания идентификаторам задаются значения, которые не
меняются при выполнении программы.
Пример.
Const
a=4;
{численная константа}
b=’A’;
{символьная константа }
s=’ABBA’;
{строковая константа }
b1=false;
{логическая константа }
M:array[1..4]
of integer=(1,5,6,7); {массив констант }.
3.3.
Type (тип данных) определяет
множество допустимых значений, которые принимает идентификатор и множество
операций, которые с ним можно производить.
На рисунке приведены основные типы
данных языка Турбо Паскаль.
Основные типы данных ТП |

|
Типы данных, которые
далее будут использованы при написании программ, рассмотрим подробнее.
Простые типы
3.3.1 Численные типы
Тип | Размер, Байт | Диапазон значений |
Byte | 1
| 0…255 |
Shortint | 1 | -128…127 |
Word | 2 | 0…65535 |
Integer |
2 | -32768…32767 |
Longint |
4 | -2147483648…2147483647 |
Single | 4 |
7..8 значащих цифр
-45…38-диапазон десятичного порядка |
Real | 6 | 11..12 значащих цифр
-39…38-диапазон
десятичного порядка |
Double | 8 |
15..16
значащих цифр
-324…308-диапазон
десятичного порядка |
Extended | 10 |
19..20
значащих цифр
-4951…4932-диапазон
десятичного порядка
|
3.3.2. Символьные
переменные - char
Значениями символьного типа является
множество всех символов ПК. Каждому символу приписывается целое число в
диапазоне 0…255.
3.3.3. Логические
переменные - boolean
Значениями логического типа может
быть одна из предварительно объявленных констант (False – ложь, True – истина).
Сложные типы
3.3.4. Массивы- array.
Тип данных Массив
позволяет одному идентификатору задать несколько значений, которые
отличаются порядковым номером. Номер элемента массива указывается после
идентификатора в квадратных скобках {M[5] – пятый элемент массива М}. При описании массива
указывается диапазон номеров элементов массива и тип, к которому
относится каждый его элемент. Массивы могут быть одно-, двух- и многомерными.
Пример описания и заполнения
элементов массива.
Var
{описание массивов}
M: array [1..5] of integer; {одномерный массив М с номерами элементов от 1
до 5, состоящий из целых чисел}
M1: array [2..3,11..15] of char; {двумерный массив М1 с номерами строк от 2 до
3, с номерами столбцов от 11 до 15, состоящий из символов}
Begin
{заполнение массива}
М[2]:=100; {второму элементу численного массива М
присвоено значение 100}
М1[2,3]:=’d’; {элементу второй строки и третьего столбца символьного
двухмерного массива М1 присвоено значение ’d’}
End.
3.3.5. Строковые
переменные – string.
Переменные строкового типа состоят из
нескольких символов.
Пример.
Var s:string; {описание идентификатора s как строковую переменную}
Begin
s:=’Привет’; {задание значения строковой
переменной}
Writeln(s);
{распечатка на экране слова "Привет"}
end.
3.4. Var (Переменные).
Все идентификаторы, используемые в
программе, должны быть описаны. Описать идентификатор - указать тип
данных, к которому он относится.
Пример.
Var
x,y:real;
{идентификаторы x,y - переменные реального типа}
i,j,k:integer;
{ идентификаторы i,j,k – переменные целого типа }
M:array [1..4] of char; { M - одномерный символьный массив из 4 элементов}
M1:array [1..3,1..4] of byte; { M1 двухмерный массив из 12 элементовцелого
типа}
Type
re=real; { описание нового типа: идентификатор re - реальный тип}
Var
z:re;
{идентификатор z – переменная типа re, то есть реального типа}
{Четыре последние строки примера можно заменить следующим
образом: Var z:real;}
3.5. Основная программа
Основная программа, как правило,
состоит из трех частей:
- Ввод исходных данных.
- Расчет.
- Вывод результата.
Рассмотрим эти части
более подробно.
3.5.1. Ввод исходных данных.
Варианты ввода исходной
информации покажем на примерах:
- Const х=20; {идентификатору x задается постоянного значения в
разделе описания констант}
- y:=20; {идентификатору y присваивается численное значение в
теле основной программы}
- read(x); { выполнение программы приостанавливается для ввода
значения "x" с клавиатуры. Оператор аналогичен
оператору INPUT в Бейсике}
- readln(x); {ввод значения идентификатора с новой строки}
- read(x,y); {ввод двух значений x ,y. Одно значение
от другогоотделяется нажатием клавишей пробела или Enter}
- Write(‘x= ’); readln(x); {Ввод значения с пояснением. На экране в месте ввода
появляется сообщение: ‘х= ’}
3.5.2.Расчет.
Основные математические соотношения и
операции Турбо Паскаль:
- +
{ сложение}
- –
{ вычитание}
- *
{ умножение}
- /
{ деление}
- =
{равенство
(используется при описании констант, типов и т.д.)}
- :=
{присваивание}
- >
{ больше}
- <
{ меньше}
- >=
{ больше либо равно}
- <=
{ меньше либо равно}
- <>
{ не равно}.
Стандартные функции Турбо
Паскаля
- abs(x);
{модуль, абсолютная величина}
- exp(x);
{еx- экспонента}
- sqr(x);
{x2 - квадрат числа}
- sqrt(x);
{
- корень квадратный}
- ln(x); {вычисление натурального логарифма }
{
-
вычисление логарифма по произвольному основанию}
{xa=exp(a*ln(x)) - возведение в степень}
- sin(x);
{-вычисление синуса}
- cos(x);
{-вычисление косинуса}
{tg(x) = sin(x)/cos(x) - вычисление тангенса}
{ctg(x) = cos(x)/sin(x) - вычисление
котангенса}
- arctan(x);
{вычисление арктангенса}
- round(x); {округление: x=4.9; y=round(x), ⇒ y=5 }
- trunc(x); { выделение целой части: x=4.9; y=trunc(x), ⇒ y=4}
- i mod j; { остаток целочисленного деления 10 mod 3 → 1 {10:3=3(1)}
- i div j ; { целочисленное деление 10 div 3 → 3}
- chr(i) ; { по порядковому номеру i возвращает символ}
- ord(b); {функция, обратная предыдущей (возвращение
порядкового номера)}
- int(r) ;{возвращение целой части числа}
- frac(r) ;{возвращение дробной части числа}
Стандартные процедуры
- Dec(i);
{i:=i-1}
- inc(i); {i:=i+1}
- GotoXY(i,j); {перемещение курсора
в указанную точку экрана с координатами i, j}
- str(x,S); {идентификатор
численного типа x переводит в
строковую переменную S:
x→S. }{ Требуется модуль Crt}
- Clrscr; {очистка экрана} {Требуется
модуль Crt }
Константы
Pi{число
π = 3.14…}
3.5.3. Вывод результатов
- Write(x); {вывод на экран значения x: при реальном x=4, на экран
выводится "4.0000000000E+00"}
- Write(x:5:1); {вывод форматированных данных,
то есть выделение на экране заданного количества позиций для вывода
идентификатора: 5 показывает общее число позиций, 1 – число знаков после
запятой: при x=4 , на экран выводится "4.0"}
- Writeln(x); {вывод с новой строки}
- Writeln(x,y); {вывод двух значений идентификаторов}
- Writeln(‘x= ’,x:4:1); {вывод с комментариями и
форматированием: "x= 4.0"}
- Writeln(‘Площадь
круга радиусом 3 м равна’,3.14*sqr(3):4:1); {Вывод с комментариями
и выполнением расчетов: "Площадь круга радиусом 3 м равна 28.3"}
Технология
программирования
Включает пять технологических операций (этапов):
- Постановка задачи.
- Математическое описание.
- Алгоритм – структограмма.
- Написание текста программы.
- Отладка, получение результатов.
При разработке программ будем последовательно выполнять
технологические этапы программирования, для наглядности помещая их в таблицу.
Пример. Определить площадь круга.
Этапы разработки программы сведены в таблицу.
Таблица
N | Этапы программирования | Выполнение |
1. | Постановка задачи | Составить программу для вычисления площади круга радиусом R. |
2. | Математическое описание | Расчетная формула: S=πR2 |
3. | Разработка алгоритма
(структограммы) | Описание R,S | Ввод R
| Расчет S=πR2 | Вывод S |
|
4. |
Написание программы
|
Program P1; { программа вычисления
площади круга}
Var r,S:real; {Описание переменных}
Begin
Read(R); {в этом месте программа
останавливается, для ввода числового значения R}
{R:=4;}{другой вариант ввода исходных данных}
S:=3.14*Sqr(R); {расчет}
{S:=Pi*sqr(R);} {другой вариант расчета}
Writeln(‘R=’,R:3:1,
‘S=’,S:8:4); {Вывод}
end.
|
5. | Отладка и получение результатов | R= 4.0 S= 48.7654 |
Структурное
программирование
Структурное
программирование – это стиль программирования, позволяющий разрабатывать
хорошо структурированные программы.
Основные
положения структурного программирования:
- Программа разбивается на блоки,
каждый из которых имеет один "вход" и один "выход".
- Любая программа может быть составлена
из трех структур или блоков, которые представлены в таблице.
- Алгоритмы при
структурном программировании представляются в виде структоргамм, элементы
написания которых также приведены в таблице.
Таблица
Основные
типы структур и примеры их изображения на структограммах
Название | Алгоритм |
Блок-схема | Структограмма |
а) линейная структура | 
| 
|
б) Ветвящаяся структура | 
| 
|
в) циклическая структура: |
| |
с предусловием | 
| 
|
с постусловием | 
| 
|