Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ_Янченко Д.В

.pdf
Скачиваний:
15
Добавлен:
13.03.2016
Размер:
786.83 Кб
Скачать

10

Арифметические действия выполняются слева направо с соблюдением следующего старшинства (приоритета):

1)NOT

2)*, /, DIV, MOD, AND

3)+, -, OR

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

1.8 Структура Паскаль-программы

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

Схематично структуру Паскаль-программы можно представить так:

Заголовок

 

Описание

BEGIN

Оператор

END

 

 

меток

 

 

 

 

 

О

Ч

Описание

 

;

 

П

А

констант

 

 

 

И

С

Описание

 

Исполнительная часть

С

Т

 

 

 

типов данных

 

 

 

А

Ь

 

 

 

 

 

 

 

Т

 

Описание

 

 

 

Е

 

 

 

 

 

переменных

 

 

 

Л

 

 

 

 

 

 

 

 

 

ЬОписание

Нфункций

А Я Описание

процедур

Рисунок 1 - Структура Паскаль-программы.

1.8.1 Заголовок программы

Заголовок программы имеет вид:

PROGRAM <Имя>;

Например, PROGRAM PROBA;

В заголовке определяется имя программы.

11

1.8.2 Раздел описаний

Раздел описаний состоит из шести основных разделов:

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

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

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

-раздел описания переменных;

-раздел описания функций;

-раздел описания процедур.

Раздел ОПИСАНИЯ МЕТОК используется если возникает необходимость перехода к какому либо оператору. Раздел начинается со служебного слова LABEL за которым следует перечисление меток используемых в программе. Например, LABEL A1, L2. Сама метка ставиться перед нужным оператором и определяется двоеточием. Например, А1: <оператор>;.

Раздел ОПИСАНИЯ КОНСТАНТ используется, если в программе используются константы. Раздел начинается со служебного слова CONST, после которого перечисляются имена констант и их значения.

Например, CONST Pi = 3.14; Name = ‘Студент’;.

Раздел ОПИСАНИЯ ТИПОВ ДАННЫХ применяется тогда, когда в программе будут использованы переменные нового типа, для адекватного отражения информационной природы задачи. Переменные нового типа состоят из комбинации переменных стандартных типов.

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

TYPE <Имя типа> = <Стандартный тип данных>;

Или (комбинированный тип)

TYPE <Имя типа> = RECORD

<Имя переменной>: <Стандартный тип данных>; <Имя переменной>: <Стандартный тип данных>;

.

.

.

.

.

.

.

.

.

 

END;

 

 

 

 

 

 

 

Например, TYPE MASSIV = ARRAY [1..20,1..20] OF REAL;

Например, в задаче необходимо описать переменную, которая будет содержать сведения о студентах: Факультет, курс, группа, ФИО.

TYPE STUDENT = RECORD

12

FAKULTET:STRING[10]; KURS, GRUPP : INTEGER; FIO : STRING[20];

END;

Раздел ОПИСАНИЯ ПЕРЕМЕННЫХ начинается со служебного слова VAR, за которым перечисляются все имена переменных используемых в программе и их тип.

Общий вид:

VAR <Имя переменной> : < Тип данных >;

Например,

VAR

 

A, B, I : INTEGER; SS : STRING[10];

 

MAX, MIN: REAL; SVED : STUDENT;

Раздел описания ФУНКЦИЙ и ПРОЦЕДУР.

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

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

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

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

Раздел ОПИСАНИЯ ПРОЦЕДУР.

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

PROCEDURE <Имя функции> (Параметры вход.; var Параметр выход.);

13

Рисунок 2 – Структурная схема описания процедуры.

Раздел ОПИСАНИЯ ФУНКЦИЙ.

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

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

FUNCTION <Имя функции> (Параметр вход.) : Тип данных;

Рисунок 3 – Структурная схема описания функции.

Например, в языке Паскаль нет оператора возведения в степень xy . Для этого можно использовать следующую формулу:

xy = ey ln x

Процедура для возведения в степень будет иметь вид:

procedure stepen(x, y : real; var a : real); begin

a:=exp(y*ln(x));

end;

Для вызова этой процедуры необходимо в теле программы указать: stepen(x,y,a); . Однако такая запись не очень удобна при записи формул, т.к. процедуру нельзя вызвать непосредственно из арифметического выражения.

Например, вычислить: Z = xy + 3 R .

 

14

Преобразуем в

Z = xy + R13 .

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

вид:

{вычисление x y }

stepen(x,y,a);

stepen(r,1/3,a2); {вычисление 3 R }

Z:=a+a2;

Тот же самый пример для функции:

function stepen(x,y:real):real; begin

stepen:=exp(y*ln(x));

end;

Текст программы: Z:=stepen(x,y)+stepen(r,1/3);

1.8.3 Раздел операторов

Раздел операторов начинается со служебного слова BEGIN и заканчивается словом END с точкой (.). В разделе записываются необходимые операторы в соответствии с алгоритмом решения поставленной задачи. Каждый оператор заканчивается символом точка с запятой (;).

15

2 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ ЛИНЕЙНОЙ СТРУКТУРЫ

2.1 Понятие алгоритма линейной структуры

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

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

Начало

Ввод

данных

Решение

Вывод

результата

Конец

Рисунок 4 – Блок-схема линейного процесса

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

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

Оператор присвоения служит для вычисления значения выражения и

присвоения его переменной, расположенной слева от символа :=. Общий вид оператора:

Р := А;

где Р - имя переменной; А - арифметическое выражение (в частном случае может быть константа либо имя переменной). Данный оператор так же называют арифметическим оператором, что подчеркивает арифметический характер вводимых в него объектов.

 

16

Например:

 

X := 0.37;

X := X + 0.49;

T := -26.7;

A := T;

F := 3 * C + 2 * SIN(X);

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

1)NOT

2)*, /, DIV, MOD, AND

3)+, -, OR

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

В операторе присвоения переменная Р и выражение А должны иметь один и тот же тип, за исключением:

REAL := INTEGER – (“маленький тип” присваивается в “большой”).

2.3 Операторы ввода и вывода

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

ОПЕРАТОР ВВОДА

Общий вид оператора ввода:

READ(перемен1, перемен2, ..., переменN); READLN(перемен1, перемен2, ..., переменN);

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

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

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

Например, необходимо ввести данные: x =1.5, α = −0.27, k = 5:

17

READ(X, ALFA, K); - оператор ввода в программе. При выполнении этого оператора экран “погаснет” станет черным и необходимо ввести данные с клавиатуры. Данные вводятся в строке, где мигает курсор:

_ 1.5 _ -0.27 _ 5 <Enter> После этого данные передадутся в переменные и программа продолжит свое выполнение.

READ(X, ALFA);

Вводится 1.5 _ -0.27 <Enter>

READ(K);

(и на следующей строке) 5 <Enter>.

ОПЕРАТОР ВЫВОДА

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

Общий вид оператора вывода:

WRITE(перемен1, перемен2, ..., переменN);

WRITELN(перемен1, перемен2, ..., переменN);

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

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

Оператор WRITELN отличается от оператора WRITE тем, что после окончания вывода, перемещает курсор на начало новой строки.

Пример: - все выводимые переменные имеют типа REAL

WRITE(X , ALFA, K);

1.50000000000000E+0000 -2.69999999999982E-0001 5.00000000000000E+0000

WRITE(X, ALFA); WRITE(K);

1.50000000000000E+0000 -2.69999999999982E-0001 5.00000000000000E+0000

WRITELN(X); WRITELN(ALFA, K);

1.50000000000000E+0000 -2.69999999999982E-0001 5.00000000000000E+0000

WRITELN(‘ЗНАЧЕНИЕ ПЕРЕМЕННОЙ Х = ‘,X);

ЗНАЧЕНИЕ ПЕРЕМЕННОЙ Х = 1.50000000000000E+0000

WRITELN(‘ПРИМЕР ’);

18

ПРИМЕР

Для более понятного восприятия выводимых значений используют формат. Формат записывается после переменной:

WRITE(ПЕРЕМЕННАЯ : ФОРМАТ);

Если выводимое значение является переменной типа REAL, то формат состоит из двух значений:

ПЕРЕМЕННАЯ : Всего символов : Кол-во символов после дес. точки

Для переменной типа INTEGER или STRING используется только одно значение:

ПЕРЕМЕННАЯ : Всего символов

Например,

WRITE(ALFA:10:3); - Оставить под выводимое значение 10 позиций, три из которых отводятся под дробную часть числа.

_ _ _ _ - 0 . 270 - Впереди 4 пробела, 1 минус, 0, точка и три знака под дробную часть.

Для организации диалога при вводе и выводе исходных данных часто используют совместно операторы ввода и вывода (диалоговый режим ввода):

WRITELN(‘ВВОД ИСХОДНЫХ ДАННЫХ’); WRITE(‘ВВОД X = ‘); READLN(X); WRITE(‘ВВОД С = ‘); READLN(C);

A := C + X;

WRITELN(‘ВЫВОД ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ’); WRITELN(‘ЗНАЧЕНИЕ A = ‘, A:8:3);

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

ВВОД ИСХОДНЫХ ДАННЫХ

ВВОД X = __ 3.2 <Enter> (после курсора вводим значение 3.2)

ВВОД С = -1.25 <Enter>

ВЫВОД ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ ЗНАЧЕНИЕ A = _ _ _ 1.950

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

19

3 ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ

3.1 Понятие разветвляющегося процесса

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

а)

б)

 

 

 

 

 

 

 

Рисунок 3 – Типы разветвляющихся процессов

Простые разветвляющие процессы могут быть двух типов (рисунок 3):

-вычисления предусматриваются по обеим ветвям (рисунок 3 а);

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

Для организации разветвления в программах используются операторы БЕЗУСЛОВНОГО ПЕРЕХОДА, УСЛОВНЫЙ ПЕРЕХОДА и ВЫБОРА.

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

Общий вид оператора: GOTO m;

где m - метка оператора, куда производится переход.

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

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

Например: GOTO a1;

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

Например: а1: Writeln(‘Решения нет’);