trains_hr.gif
 


В ПОМОЩЬ СТУДЕНТУ И ШКОЛЬНИКУ

 


Горбачев Л.И. Основы программирования в среде Turbo Pascal.

[НАЗАД]    [ДАЛЕЕ]

1. Простые операторы. Программирование алгоритмов линейной структуры

   Оператор - предписание в языке программирования, предназначенное для задания некоторого завершенного действия в процессе переработки информации на ПЭВМ.

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

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

Логическая структура операторов языка программирования
 Паскаль

1.1. Простые операторы.

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

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

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

Формат: имя_переменной := выражение;
Пример: Sort := 1; Cost := 15.23;
Name := 'Модель ВАЗ 2109';
Result := sin(A) + cos(B);
Y := Sqrt(X) + 1; L := M and N;

   1.1.2. Оператор безусловного перехода (goto).

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

Формат: goto метка;
Пример: ..........
Label Metka1, Metka2;
..........
Metka1:
goto Metka2;
Metka2:
goto Metka1;
..........

   Метка представляет собой идентификатор или любое целое число без знака в диапазоне от 0 до 9999. Метка должна быть описана в разделе label и записывается перед помечаемым оператором, от которого отделяется двоеточием. Между меткой и данным можно включать один или несколько пробелов.

Пример: goto D2;
10:
a := 2;
............
D2:
Y := x / a;
goto 10:

   При записи оператора goto необходимо отметить следующее:
а) метка, на которую передается управление, должна быть описана в разделе описания меток того блока процедуры, функции основной программы, в котором эта метка используется;
б) областью действия метки является тот блок, в котором она описана. Переход возможен только в пределах блока;
в) попытка выйти за пределы блока или передать управление внутрь другого блока вызывает программное прерывание.

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

Пример: Программа, реализующая оператор GoTo.
Program GoTo;
Uses CRT;
Label Finish; { Описание метки }
Var password : integer;
Begin
Finish:
ClrScr;
Write('Введите пароль: '); ReadLn(password);
{ 999 - правильное значение пароля }
if password <> 999 then
begin
WriteLn('Неверный пароль! Доступ запрещен!');
goto Finish
end
else WriteLn('Пароль верный! Доступ разрешен!');
ReadLn
End.

   1.1.3. Оператор вызова процедуры.

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

Формат: Имя_процедуры (фактические_параметры);
Пример:
Program Primer;
Procedure Vp1;
begin
....... {Тело процедуры Vp1}
end;
Procedure Vp2;
begin
...... {Тело процедуры Vp2}
end;
Begin
Vp1; {Вызов процедуры Vp1}
Vp2; {Вызов процедуры Vp2}
End.

   1.1.4. Пустой оператор.

   Пустой оператор не содержит никаких символов и не выполняет никаких действий. Он может быть расположен в любом месте программы, где синтаксис языка допускает наличие оператора. Как и все другие операторы, пустой оператор может быть помечен меткой. Чаще всего пустой оператор используется для организации выхода из середины программы или составного оператора:
begin
goto Metka; {Переход в конец блока}
......
Metka: {Пустой оператор помечен меткой}
end.

   Пустому оператору соответствует символ ";" на том месте, где по правилам должен быть какой-либо оператор.

Пример: A := B; ; M := 7.2;

   1.1.5. Операторы ввода-вывода.

   В любом языке программирования предусмотрена возможность обмена или пересылки информации между ОЗУ (оперативным запоминающим устройством) и внешними устройствами (принтер, дисплей, дисководы и т.д.).

   Для ввода в ОЗУ (чтения) и вывода из ОЗУ (записи) данных в Турбо Паскале существуют стандартные (встроенные) процедуры ввода-вывода, вызываемые соответственно, операторами Read и Write.

   Ввод данных. Для организации процедуры чтения данных с клавиатуры в ОЗУ используются три оператора:

  • Read(список_переменных); - каждое вводимое значение последовательно присваивается переменным из списка; вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;
  • ReadLn(список_переменных); - то же, что и оператор Read, только на экране после ввода данных происходит переход на новую строку (т.е. следующий оператор ввода будет вводить данные с новой строки); вводимые числа должны отделяться друг от друга при вводе пробелами или нажатием клавиши Enter;
  • ReadLn; - происходит переход на новую строку без ввода данных.

   Значения вводимых переменных должны соответствовать типам переменных из списка ввода. В Турбо Паскале допускается вводить значения следующих данных: целых (integer), вещественных (real), символьных (char), а также строковых переменных (string).

   С клавиатуры нельзя ввести:

  • значение логической переменной;
  • значение переменной типа "перечисление";
  • значение переменной типа "массив" (можно вводить значения отдельных элементов массива);
  • значение переменной типа "множество" (можно вводить значения отдельных элементов множества);
  • значение переменной типа "запись" (можно вводить значения отдельных полей записи);
Пример: Пусть имеются переменные следующих типов: R: real; C1, C2, C3: char, которым необходимо присвоить соответствующие значения: 1.5, 'M', 'N', 'K'. Для этого используется оператор Read(R, C1, C2, C3). При вводе значения переменных можно расположить следующим образом: 1.5MNK или 1.5E0MNK (без апострофов), но нельзя после 1.5 поместить пробел, т.к. он воспринимается как значение символьной константы.

   Вывод данных. Вывод данных обычно принимает форму, которая зависит от выходного устройства: на экран, на запоминающие устройства, в порты ввода/вывода. Для организации процедуры чтения данных из ОЗУ и записи на экран используются три оператора:

  • Write(список_переменных); - выводит последовательно значения переменных из списка;
  • WriteLn(список_переменных); - то же, что и оператор Write, но после вывода значений на экране осуществляется переход на новую строку (следующий оператор вывода будет выводить данные с начала новой строки);
  • WriteLn; - осуществляет переход на новую строку без вывода данных (вывод "пустой" строки).

   В Турбо Паскале допустим вывод значений следующих данных:

  • целых переменных (integer);
  • вещественных переменных (real);
  • символьных переменных (char);
  • логических переменных (boolean);
  • символьных констант;
  • арифметических и логических выражений;
  • строковых переменных.

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

  • значение переменной типа "перечисление";
  • значение переменной типа "массив" (можно выводить значения отдельных элементов массива);
  • значение переменной типа "множество" (можно выводить значения отдельных элементов множества);
  • значение переменной типа "запись" (можно выводить значения отдельных полей записи);
Пример: Пусть в результате выполнения программы переменные получили значения: I = -5, R = 3.52, C = '+', B = True. Выведем их на дисплей:
program Pr;
var I: integer; R: real;
C: char; B: boolean;
................
Write('ПРИМЕР'); WriteLn;
WriteLn(' I =',I,' R =',R);
WriteLn(' Символ - ',C);
Write(' B =',B);

В результате выводимые значения будут такими:

ПРИМЕР
I =-5 R = 3.5200000000E+00
Символ - +
B =TRUE

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

   Для вещественных переменных формат может быть задан в таком виде: P:M:N (элемент : длина : количество цифр), где M - общее число позиций для выводимой переменной P, включая знак числа, целую часть, точку и дробную часть; N - число позиций дробной части. В этом случае переменная P выводится в виде константы с фиксированной точкой.

Пример: Используем форматированный вывод переменных из предыдущего примера:
..................
WriteLn(' I =',I:3,' R =',R:5:2);
WriteLn(' Символ - ',C:5);
Write(' B =',B:8);

Результат:
I = -5 R = 3.52
Символ - +
B = TRUE

   1.2. Примеры программ линейной структуры.

Пример: Осуществить вывод на принтер таблицы, в которой записаны значения сторон прямоугольника и его площадь.
Program DemoWriteln;
Uses CRT;
Var { A, B - стороны, Area - площадь }
A, B, Area : integer;
Begin
A := 8; B := 4;
Area := A * B;
{ Lst указывает, что вывод производится на принтер }
WriteLn(Lst, '-----------------------------------');
WriteLn(Lst, '| Сторона A | Сторона B | Площадь |');
WriteLn(Lst, '-----------------------------------');
WriteLn(Lst, '|', A:6, '|':6, B:6, '|':6, Area:6, '|':4);
WriteLn(Lst, '-----------------------------------');
End.

В результате работы программы получим таблицу:
----------------------------------------
| Сторона A | Сторона B | Площадь |
----------------------------------------
|         8         |         4         |      32       |
----------------------------------------
каждая строка которой будет печататься с первой позиции новой строки печатающего устройства.

Пример: Программа, пересчитывающая расстояние, выраженное в милях, в расстояние, выраженное в километрах.
program MilToKm;
uses CRT;
var Mil : real; { Расстояние в милях }
Km : real; { Расстояние в километрах }
Begin
ClrScr;
Write('Задайте расстояние в милях: '); ReadLn(Mil);
Km := Mil * 1.6;
WriteLn(Mil:5:2, ' миль это ', Km:5:2, ' километров');
ReadLn
End.

Примечание: Оператор ReadLn можно применить для задержки вывода результата работы программы на экране до нажатия на клавишу Enter.

[НАЗАД]    [ДАЛЕЕ]


Главная
Новости
TurboPascal
Учебное пособие
Лекции
Исходники
Математика
Книги
Лекции
Шпоры
ЦТ и ЕГЭ
Физика

Книги

Шпоры
ЦТ и ЕГЭ

Литература

Сочинения

Краткие содержания

Другое
Мой родной край
Фотогалерея
Форум
Ссылки

Гостевая






 

                                        © Copyright(c) 2004 Amro Group. All rights reserved

 

Hosted by uCoz