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

Методические рекомендации 1_2 семПГС_2012

.pdf
Скачиваний:
4
Добавлен:
18.02.2016
Размер:
2.26 Mб
Скачать

Кафедра информационных систем и технологий

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

 

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

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

 

Program …….;

(Наименование программы)

Uses ………...;

(Имена используемых модулей)

Label ………..;

(Метки. В качестве меток могут быть использованы

 

идентификаторы и числа от 0 до 999)

Const ………..;

(Различные константы)

Type ………...;

(Применяемые типы данных)

Var ...………...;

(Переменные)

Procedure ……;

(Выделенные в программе процедуры)

Function ……..;

(Выделенные в программе функции)

Begin

 

Оператор;

(Тело программы)

……

End

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

Первая обязательная фраза программы – заголовок программы имеет вид: PROGRAM имя программы;

Следующий блок является необязательным.

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

VAR

NAME: тип переменной;

Тело программы строится из набора фраз, ограниченных принятыми в языке разделителями. Само «ТЕЛО» обязательно заключается в скобки. Ключевые слова в начале – BEGIN и в конце - END.

Основные типы данных

1.Целый тип

Позволяет работать с целыми числами

ТИП

 

ДИАПАЗОН

 

 

 

 

ФОРМАТ

 

-32768..32768

 

 

 

16 бит со знаком

Integer

 

 

 

 

-128..127

 

8

бит со знаком

Shorting

 

 

-2147783648..2147783648

 

32

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

Longing

 

 

0..255

 

 

 

8 бит без знака

Byte

 

 

 

 

0..65535

 

 

 

16 бит без знака

Word

 

 

 

 

 

 

 

 

 

 

 

2.Вещественный тип

Тип

 

 

Диапазон

 

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

 

 

Байты

 

 

 

 

2.9E-39..1.7E+38

11-12

 

6

 

REAL

 

 

 

 

 

 

 

1.5E-40..3.4E+38

7-8

 

4

 

SINGLE

 

 

 

 

 

 

 

5.0E-324..1.7E+308

15-16

 

8

 

DOUBLE

 

 

 

 

 

 

 

3.4E-4932..1.1E+4932

19-20

 

10

 

EXTENDED

 

 

 

 

 

 

 

2E-63..2E+63

19-20

 

8

 

COMP

 

 

 

 

3.Булевский тип Имеет два значения:

1)true – истина,

2)false – ложь

4.Символьный тип (char)

Элементы связаны с кодовой таблицей ЭВМ. Таблица состоит из 256 элементов.

0..31 – специальные символы ($07 - гудок, $0a – перевод строки, $1a - EOF), 32..127 – постоянная часть (цифры, латинские буквы, символы), 128..255– переменная часть.

5. Скалярные типы пользователя Перечислимый:

type

<тип> = (<значение 1>, <значение 2>, …, <значение n>);

var

21

Кафедра информационных систем и технологий

<имя> : <тип>;

6.Интервальный тип

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

type

<тип> = <константа 1>..<константа 2>;

var

<имя> : <тип>;

7.Строковый тип (string)

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

Пример: ‘Computer IBM’

‘Республика Беларусь’ ‘aa’’aa’

Оператор присваивания Одним из базовых операторов является оператор присваивания. Синтаксически он представляется фразой:

ИМЯ переменной:=выражение При том должна соблюдаться определенная согласованность левой и правой частей, т.е. типов переменной и выражения.

Арифметические операторы Числовые значения (целые и вещественные) обрабатываются с помощью следующих арифметических

операторов

 

Обозначение оператора

 

Содержание действий оператора

 

 

 

 

+

 

Сложение

-

 

Вычитание

*

 

Умножение

/

 

Деление

 

Div

 

Деление нацело (дробная часть отбрасывается)

 

Mod

 

Остаток от целочисленного деления

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

 

 

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

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

READ (v1,v2,v3,…,vn);

где v1,v2,v3,…,vn – объекты данных, т.е. имена полей, в которые данные вводятся при наборе на

клавиатуре.

Как правило, вводу данных предшествует вывод на экран сообщения типа напоминания о предстоящем

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

WRITE(`выводимый на экран текст напоминания`);

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

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

Форматы записи обращения к эти процедурам: WRITE или WRITELN (v1,v2,v3,…,vn);

где v1,v2,v3,…,vn – объекты данных, т.е. имена полей, данные из которых выводятся на экран.

Действие оператора WRITELN отличается от действия оператора WRITE тем, что по завершении вывода

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

информации.

 

 

 

 

 

Стандартные арифметические функции

 

 

Abs(x)

Модуль х

Sqrt(x)

Корень от х

Ln(x)

Ln(x)

Sqr(x)

Х2

Exp(x)

ех

Pi

Число пи

Sin(x)

Sin(x)

Cos(x)

Cos(x)

 

 

Пример линейной программы.

Вычисление площади треугольника.

Program ploshad ;

Uses CRT;

Var

a, b : real; {длины сторон }

22

Кафедра информационных систем и технологий

angle : real; {величина угла в градусах}

 

area : real;{площадьтреугольника}

 

begin

 

ClrScr;

 

writeln(‘Вычислениеплощадитреугольника’);

 

write(‘Введите длины двух сторон треугольника в одной строке (см):’);

 

readln(a, b);

 

write(‘Введите угол между сторонами в градусах: ’);

 

readln(angle);

 

{переводим угол в р адианы}

 

angle := angle*pi/180;

 

{area=a*h/2, где h (высота треугольника) может быть { вычислена по формуле:

h=b*Sin(angle)}

area := a*b*Sin(angle)/2;

 

writeln(‘Площадь треугольника: ‘, area:7:3, ’кв. см.’);

 

readln;

 

end.

 

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

Если в программе, в зависимости от некоторого условия, требуется выбрать тот или иной вариант действий, можно воспользоваться одним из условных операторов. В TURBO PASCAL предусмотрены два условных оператора – IF и CASE.

Оператор IF:

Оператор имеет IF вид: If p then a1 else a2

При выполнении этого оператора сначала выполняется некоторое логическое выражение Р (условие), в

случае истинности которого выполняется оператор А1, а в случае ложности – оператор А2. Использованные здесь ключевые слова IF, THEN, ELSE имеют смысл если, то и иначе соответственно.

Возможен сокращенный вариант оператора If : If p then a1

Здесь если условие Р истинно, то выполняется оператор А1. Если же условие Р ложно, управление

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

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

служебных слов then

или else. Составной оператор представляет собой группу операторов, размещенную

между служебными

словами begin и end. При этом данная группа операторов будет восприниматься

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

If <условие> then begin

<оператор 1>; <оператор 2>; …<оператор n>; end

else

begin

<оператор 1>; <оператор 2>; …<оператор n>; end;

If <условие> then begin

<оператор 1>; <оператор 2>; …<оператор n>; end;

Во втором случае говорят о сокращенной форме условного оператора.

23

 

 

 

 

 

 

 

 

 

 

Кафедра информационных систем и технологий

Действие условного оператора можно пояснить с помощью блок -схемы:

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

условие

 

 

 

 

 

 

 

 

условие

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

оператор

 

 

Оператор 1

 

 

Оператор 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ветвление

Обход

Пример программы с использованием условного оператора if .

Программа, которая сравнивает возраст брата и сестры.

Program sravnenie;

Uses CRT;

Var

age1, age2 : integer; begin

ClrScr;

write(‘Введите возраст брата: ’); readln(age1);

write(‘Введите возраст сестры: ’); readln(age2);

if age1> age2 then writeln(‘ Брат старше .‘)

else if age1> age2 then writeln(‘Сес тра старше.‘) else writeln(‘Они близнецы. ‘);

readln;

end.

Оператор Case

Оператор Case имеет вид case p of

a:s1; b:s2;

n:sn; else sn+1

end;

При выполнении этого оператора сначала выполняется некоторое выражение Р, называемое селектором выбора, а затем, в зависимости от полученного значения (если оно равно одной и из констант A, B, …N, которые называются константами выбора), выполняется один из операторов: S1, S2,…, Sn, помеченный соответствующей константой. Причем каждый из этих операторов может быть составным. Операторы S1, S2,…, Sn отделяются один от другого точками с запятой.

Если значение Р не совпадает ни с одной из констант выбора, выполняется оператор Sn+1, содержащийся после ключевого слова ELSE , причем ветвь ELSE в операторе CASE необязательна. Использованные здесь слова CASE, OF, ELSE, END имеют смысл вариант , из, иначе и конец

соответственно.

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

Пример программы с использованием оператора выбора Case .

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

Program vibor;

Uses CRT;

 

Var

 

n, x, y : integer;

 

begin

 

ClrScr;

 

write(‘Введитезначение

n: ’);

readln(n);

 

write(‘Введите значение

x: ’);

24

Кафедра информационных систем и технологий

readln(х); Сase n of

3, 5, 7 : y:=x*x; 10 . . 20 : y:=x*x*x; 30 . . 60 : y:=x*x*x;

else y:=x

end; writeln(‘y= ‘, y); readln;

end.

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

Для многократного повторения одних и тех же действий в TURBO PASCAL предусмотрены три оператора цикла. Если число повторений цикла заранее неизвестно, однако известно условие завершения цикла, в таких случаях применяются оператора REPEAT и WHILE. Если же число повторений известно, то применяется оператор FOR.

Оператор WHILE :

Оператор цикла WHILE, известный как оператор цикла с предусловием имеет вид:

While p do s;

При выполнении этого оператора сначала вычисляется некоторое логическое выражение Р (условие),

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

повторяется до тех пор, пока выражение Р не становится равным FALSE. Затем управление передается следующему (после WHILE) оператору в программе. Использованные здесь ключевые слова WHILE, DO

имеют смысл пока и выполнить соответственно.

Если условие Р равно FALSE с самого начала, оператор S, который называется телом цикла, не выполнится ни разу. Если условие Р тождественно TRUE (while true do s), цикл будет бесконечным. Для того,

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

Оператор REPEAT :

Оператор цикла REPEAT, известный как оператор цикла с постусловием, имеет вид:

Repeat s until p;

При выполнении этого оператора сначала выполняется тело цикла (s), затем вычисляется некоторое

логическое выражение Р (условие), принадлежащее типу Boolean, в случае ложности которого вновь

выполняется тело цикла. Затем выполнение тела цикла, вычисление условия Р и его проверка повторяются до

тех пор, пока выражение Р на станет равным TRUE. После этого управление передается следующему (за

Repeat) оператору в программе. Использованные здесь зарезервированные слова Repeat и untiL имеют смысл повторять и пока соответственно.

Оператор цикла Repeat отличается от оператора WHILE, во-первых тем, что здесь условие проверяется после выполнения тела цикла. Иными словами, гарантируется хотя бы однократное его выполнение. Во-

вторых, оператор Repeat выполняется до тех пор, пока условие равно FALSE, и управление передается следующему (за Repeat) оператору, когда условие становится TRUE (для оператора WHILE имеет место обратная зависимость).

Даже если условие Р равно TRUE с самого начала, тело цикла выполняется хотя бы раз. Если условие Р тождественно FALSE (repeat s until false), цикл будет бесконечным.

Оператор FOR:

Оператор цикла FOR, известный как оператор цикла с параметром, имеет вид:

 

For i=a to b do s;

 

значение А, которое

При выполнении этого оператора сначала вычисляется некоторое начальное

присваивается переменной I, называемой параметром

цикла. Затем вычисляется

конечное число В и

проверяется, имеет место равенство I=B. Если равенства

нет, выполняется оператор S, который может быть

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

значению), выполнение оператора S и увеличение переменной I на единицу выполняется циклически до тех пор, пока не наступит равенство I=B. Параметр цикла I, а также начальное и конечное значения (А и В) могут принадлежать любому порядковому типу (например, Integer или Char). Но при этом они должны быть одного типа. Если начальное значение превышает или равно конечному значению с самого начала, то оператор S не выполняется ни разу.

25

Кафедра информационных систем и технологий

Использованные здесь зарезервированные слова FOR, TO и DO имеют смысл от, до и выполнять

соответственно.

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

§В теле цикла запрещается явно изменять значение параметра цикла (с помощью оператора присваивания, например);

§По завершении работы оператора цикла FOR, значение параметра I считается неопределенным.

Примеры программ, которые вычисляет значение S. Вычислить S=1+2+3+4+5.

используя оператор while.

используя оператор repeat.

используя оператор for.

Program podchet;

Program podchet;

Program podchet;

Uses CRT;

Uses CRT;

Uses CRT;

Var S, i: integer;

var S, i: integer;

var S, i: integer;

begin

begin

begin

ClrScr;

ClrScr;

ClrScr;

S:=0; i:=1;

S:=0; i:=1;

S:=0;

while i<=5 do

repeat

For i:=1 to 5 do

begin

S:=S+i;

S:=S+i;

S:=S+i;

i:=i+1;

writeln ('S= ', S);

i:=i+1;

until i>5;

readln;

end;

writeln ('S= ', S);

end.

writeln ('S= ', S);

readln;

 

readln;

end.

 

end.

 

 

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

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

Var

<имя массива>: array [<нижняя граница> … <верхняя граница>] of <тип элементов>;

где var, array и of – служебные слова. Array означает массив, предлог of в данном случае – из;

<нижняя граница> и <верхняя граница> - соответственно нижняя и верхняя граница диапазона значений индекса. Индексы элементов массива, в общем случае, используются порядкового типа. Обычно это тип integer, но возможны также типы char и boolean.

<имя массива> - задается согласно правилам именования переменных;

<тип элементов> - любой из стандартных или определенных пользователем типов.

Примеры описания массивов:

Var

a: array [1…20] of integer; a: array [‘a’…’m’] of real;

В программе можно работать не только со всем массивом целиком, но и с отдельными элементами. Для того, чтобы в программе обратиться к какому-либо элементу массива, нужно рядом с именем массива указать индекс содержащегося в нем элемента. Например, если вы встретите в программе следующую запись: a[10], то она означает, что мы обращаемся к элементу массива а с порядковым номером 10.

Пример 1. Ввод в столбец массива а из вещественных чисел с количеством элементов п<=10.

Var

a: array [1… 10] of real; n, i : integer;

Begin

ClrScr;

{Ввод размерности массива}

write(‘Введите количества элементов массива:’); readln (n);

{Ввод элементов массива} for i:=1 to n do

Begin

write (‘Введите a[’, i,’] =‘); readln(a[i]);

end.

Пример 2. Вывод в столбец массива а.

for i:=1 to n do

26

Кафедра информационных систем и технологий

writeln (‘a[’, i,’] =‘, а[ i]);

Пример 3. Вывод элементов массива а в строке через пробел.

for i:=1 to n do

writeln (a[ i] , ‘ ‘);

Пример программы.

В заданном одномерном массиве необходимо определить сумму всех его элементов. program symma;

uses CRT;

var a:array[1..5] of integer; i,s: integer;

begin clrScr;

writeln(' Введите массив '); s:=0;

for i:=1 to 5 do begin

readln (a[i]); {заполнение массива путем ввода значений с клавиатуры} s:=s+a[i]; { накопление суммы в s}

end; writeln('reshenie= ' ,s); readln;

end.

Литература

1.Информатика. Базовый курс под ред. Симоновича С.В., СПб, Питер, 2006.

2.Информатика. Учебник. Под ред. Проф. Н.В. Макаровой, М., Финансы и статистика, 2004.

3.Эдвард Виллетт, Дэвид Кроудер, Ронда Кроудер . «Microsoft Office 2000. Библия пользователя», М.Спб.К. Компьютерное издательство «Дилаектика».

4.Фигурнов В.С. IBM РС для пользователя.

5.Новейшая энциклопедия персонального компьютера. Леонтьев В.П. М. ОЛМА-ПРЕСС. Образование. 2004.

6.Г.Г. Рапаков, С.Ю. Ржеуцкая «Программирование на языке Pascal», СПб, «БХВ-Петербург», 2004 г.- 467с.

7.Епашников А.П., Епашников В.А. Программирование в среде Turbo Pascal 7.0 – М.: Диалог – МИФИ, 1993г. – 288с.

8.Фаронов В.В. Программирование на персональных ЭВМ в среде Турбо-Паскаль. – М.: Изд-во МГТУ, - 442с.

9.В.М. Пестриков, А.Н. Маслобоев «Turbo PASCAL 7.0 изучаем на примерах» «Наука и техника», СПб, 2004 г.-356с.

10.Н.Культин «Turbo PASCAL в задачах и примерах», СПб, «БХВ-Петербург», 2003 г.-254с.

11.А. Адаменко «Turbo PASCAL на примерах из математики»,СПб, «БХВ-Петербург», 2005 г.-397с.

12.С.А. Немюгин «Turbo PASCAL». Учебник. – СПб. Издательство «Питер», 2000. – 496с.

27