Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

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

Структура программы состоит из трех частей:

1

Заголовок (в интегрированной среде необязательно);

состоит из PROGRAM__<имя программы>;

<слово> - идентификатор;

это слово, состоящее из 8 символов, первый – латинская буква, в середине слова нет знаков препинание кроме «__».

2

Описательная часть – определяет выделяемый в памяти блок данных

Части:

~Раздел типов:

TYPE_<имя типа> = <описательный тип>;

<имя 2> = <опис.2>;

~Раздел переменных:

VAR_<имя П1>,<имя П2>,<имя типа>;

~Раздел констант:

CONST_<имя К> = значение;

3

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

Begin

операторы;

End.

Стандартные типы Паскаля.

диапазон

перечисл. тип

простые структурированные

порядковые непорядковые массивы

множества

целые числа вещественные записи

INTEGER числа (дробные) файлы

Символьные REAL динамические

CHAR переменные

Логические объектные

BOOLEAN переменные

Операторы в Паскале.

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

Чтобы в переменную разместить, присвоить ей какое-либо значение, используется оператор присвоения «:=»

Прим: одиночный знак «=» воспринимается как сравнение.

При использовании оператора присвоения:

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

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

2) тип переменной и выражения должны строго совпадать.

Искл.: присвоение реальному числу целого числа.

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

Операторы ввода информации с клавиатуры и вывода на экране.

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

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

Операторы ввода информации позволяют вводить информацию с клавиатуры, причем присвоение происходит при нажатии ENTER. Список ввода – перечисленные через запятую только переменные; список ввода носит позиционный характер.

Операторы вывода информации

  1. WRITE (вывод)

  2. WRITELN(вывод)

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

  1. курсор на рабочем столе – за последним символом, поэтому след. обращение будет с этой позиции (к рабочему окну).

  2. после вывода инф. на экран курсор переводится на новую строку.

Пример. Вычислить с=sin(x), х вводится с клавиатуры.

var x:integer;

c:real;

begin writeln;

write(‘Введите х ’);

readln(x);

c:=sin(x);

writeln(‘c=sin(x)= ‘,c:7:2);

readln;

end.

Комментарий: два первых оператора WRITE не несут нагрузки. Они необходимы для создания польз. интерфейса, участвуют в этом и последние WRITELN. Первая const из списка его вывода комментирует, что выводится на экран. Само же значение «с», т.к. оно является реальным (в машинном представлении – нормализованным), выводится в формате.

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

Операторы разветвляющихся процессов

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

В Паскале используется два оператора:

*Оператор условного перехода

*Оператор выхода

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

IF <условие> THEN оператор 1

ELSE оператор 2;

Примечание:

1. Сушествует правило оформления условия. Данное правило относиться только к неоднозначным условиям(несколько логических знаков).

Однозначные x>0

условия a<=1

Двухзначное

условие 0< x <100 (0<x) and (x<100).

Вместо условия можно использовать логическую переменную. В этом случае её не нужно приравнивать к значению TRY или FALSE.

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

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

Оператор условного перехода может быть не полным. В этом случае отсутствует отрицательная ветвь. На схеме нет оператора отрицательной ветви.

IF <условие> THEN оператор 1;

Пример Даны два целых числа. Вывести на экран большее из них. Если значения равны, то вывести их.

Program

Var a,b : integer;

Begin

Write(‘BBedite a,b’);

Readln(a,b);

If a>b then writeln(a)

Else writeln(b);

Readln;

End.

B

A

Пример дана точка заданная своими координатами x,y. Определить положение относительно окружности с центром b и радиусом R.

Var x,y : integer;

Begin

Write(‘BBedite x,y.R’);

Readln(x,y,R);

If R*R=x*x+y*y then writeln(‘на’)

Else

if SQR(R)<SQR(x)+SQR(y)

then writeln(‘вне’)

else witeln('в');

readln; end.

Примечание:

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

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

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

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

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

CASE <имя селектора> OF

M1: оператор 1;

M2: оператор 2;

.............

Mn: оператор n;

ELSE оператор;

end;

Примечание:

1. Оператор выбора завершает END, т.е. к CASE должен быть в программе END.

2. Т.к. в данном операторе осуществляется операция строгого сравнения, то тип селектора и меток – одинаковый и порядковый.

3. Если ветвь содержит несколько операторов, то их перечисляют через « ; » и заключают в операторные скобки.

Пример По введенному номеру дня недели вывести его название.

var n:integer;

begin

writeln(‘Введите номер дня недели’);

readln(n);

case n of;

1: writeln(‘понедельник’);

2: writeln(‘вторник’);

3: writeln(‘среда');

4: writeln(‘четверг');

5: writeln(‘пятница’);

6: writeln(‘суббота’);

7: writeln(‘воскресенье’);

else write(‘неверный ввод’);

end;

readln;readln;end.

Операторы циклических процессов

Циклический процесс – выполнение конечного числа раз группы операторов. Он содержит следующие части:

  1. Блок подготовки к циклу (обычно в нем осуществляется начальная установка параметра цикла и буферов накопления);

Параметр цикла – переменная, значение которой определяет вход или выход из цикла.

Буферной переменной является переменная, в которой осуществляется циклическое накопление.

  1. Условие входа/выхода из цикла;

  2. Тело цикла – операторы, вложенные в циклический процесс. В него входит блок параметров цикла.

Оператор цикла содержит вторую и третью часть.

Оператор цикла с предусловием

WHILE <условие> DO оператор;

  1. в цикле логических переменных обязательно проверять со значением true или false.

  2. ограничений по типу переменных параметра цикла нет.

  3. если тело цикла состоит из нескольких операторов, то их перечисление проходит через «;» и заключается в «begin-end».

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

Пример y=N!

var n,p,y:integer;

begin writeln(‘Введите N’);

readln(n);

p:=1;y:=1;

while p<=n do begin

y:=y*p;

p:=p+1;

end;

writeln(‘n!= ‘,y);

end.

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

REPEAT

Операторы….

……

UNTIL < Условие выхода>

Примечание

1. Ограничение по типу параметра цикла отсутствуют;

2. Операторные скобки не требуются, вместо них REPEAT-UNTIL;

3. Особенность данного оператора: в любом случае тело цикла хотя бы один раз выполняется.

Var N,p,y: integer;

Begin writeln(‘Введите N’);

Readln(N);

P:=1; y:=1;

repeat

y:=y*p;

p:=p+1;

until p>n;

writeln(‘N:=’ ,y);

readln;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]