Команда ввода (считывания) с клавиатуры значения переменных во время работы программы

READ ( ); или READLN ( ); - считывает перечисленные в скобках переменные значения, введенные с клавиатуры (через пробел или после каждого значения нажимают Enter) Если значения вводились через пробел, то после ввода следует нажать Enter.
В качестве параметров в круглых скобках через запятую указываются имена переменных, значения которых считываются.
При работе с простыми переменными рекомендуется использовать команду Readln ( );
Перед каждой командой ввода рекомендуется выводить на экран поясняющий текст с информацией о том, что именно нужно ввести.
Пример. Запросить с клавиатуры значение переменной а.
Var a : Integer;

Write (‘a=’);
Readln(а);
На экране появится а= и после знака равно будет мигать курсор в ожидании ввода с клавиатуры целого числа. После ввода числа необходимо нажать Enter.
Для того, чтобы не переходить к окну с результатами работы программы (alt+F5) после запуска программы на выполнение, последней командой в любой программе перед End. записывается команда Readln; (Программа ждет нажатия Enter).

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

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

Program { Заголовок программы }

Uses { Подключение модулей }

Label { Раздел объявления меток }

Const { Раздел объявления констант }

Type { Раздел объявления новых типов }

Var { Раздел объявления переменных }

Procedure { Описание своих процедур }

Function { Описание своих функций }

Begin { начало основной программы }

 

{ Операторы }

 

End.

Обязательной частью является лишь тело программы, которое начинается словом begin, а заканчивается словом end с точкой. Операторы в Паскале разделяются точкой запятой. Заголовок программы является хотя и необязательным, но желательным элементом и состоит из зарезервированного слова program и идентификатора - имени программы, за котором следует точка с запятой. Порядок объявлений и описаний не регламентируется.

Пзимер : Простейшая программа.

program prim_1; { демонстрация структуры программы}

{эта программа не требует никаких объявлений и описаний}

begin

write('Привет! Вот мы и начали.') (* эта строка текста появится на экране *)

end.

 

6 вопрос Базовая структура «ветвление». Операторы условия и выбора в языке Паскаль.

 

. Базовая структура ветвление. Обеспечивает в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвление существует в четырех основных вариантах: если-то; если-то-иначе; выбор; выбор-иначе.

Структура ветвления:

1.если-то

 

2.если-то-иначе

 

3.выбор

 

4.выбор-иначе

 

 

 

Условные операторы Pascal-Паскаль

 

Условные операторы позволяют выбирать для выполнения те или иные части программы в зависимости от некоторых условий. Если, например, в программе используются вещественные переменные x и z, и на каком-то этапе решения задачи требуется вычислить z=max(x, y), то желаемый результат получается в результате выполнения либо оператора присваивания z:=x, либо оператора присваивания z:=y. Поскольку значения переменных x и y заранее неизвестны, а определяются в процессе вычислений, то в программе необходимо предусмотреть оба эти оператора присваивания. Однако на самом деле должен выполниться один из них. Поэтому в программе должно содержаться указание о том, в каком случае надо выбирать для исполнения тот или иной оператор присваивания.

 

Это указание естественно сформулировать с использованием отношения x>y. Если это отношение при текущих значениях x и y справедливо (принимает значение true), то для исполнения должен выбираться оператор z:=x; в противном случае для исполнения должен выбираться оператор z:=y (при x=y безразлично, какой оператор выполнять, так что выполнение оператора z:=y в этом случае даст правильный результат).

 

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

if B then S1 else S2

 

 

Здесь if (если), then (то) и else (иначе) являются служебными словами, В – логическое выражение, а S1 и S2 – операторы.

 

Выполнение такого условного оператора в Паскале сводится к выполнению одного из входящих в него операторов S1 или S2: если заданное в операторе условие выполняется (логическое выражение В принимает значение true), то выполняется оператор S1, в противном случае выполняется оператор S2.

 

Алгоритм решения упомянутой выше задачи вычисления z= max( x, y) можно задать в виде условного оператора Паскаля

if x>y then z:= x else z:= y

 

 

При формулировании алгоритмов весьма типичной является такая ситуация, когда на определенном этапе вычислительного процесса какие-либо действия надо выполнить только при выполнении некоторого условия, а если это условие не выполняется, то на данном этапе вообще не нужно выполнять никаких действий. Простейшим примером такой ситуации является замена текущего значения переменной х на абсолютную величину этого значения: если x<0, то необходимо выполнить оператор присваивания x:= - x; если же x>=0, то текущее значение х должно остаться без изменений, т.е. на данном этапе вообще не надо выполнять каких-либо действий.

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

if B then S

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

В языке программирования Паскаль в условном операторе между then и else, а также после else по синтаксису может стоять только один оператор. Если же при выполнении (или невыполнении) заданного условия надо выполнить некоторую последовательность действий, то их надо объединить в единый, составной оператор, т.е. заключить эту последовательность действий в операторные скобки begin... end (это важно!). Если, например, при x< y надо поменять местами значения этих переменных, то условный оператор будет записан следующим образом в Паскале:

if x<y then begin r:=x; x:=y; y:=r end

Наличие сокращенной формы условного оператора Паскаля требует большой осторожности при использовании. Например, условный оператор

if B1 then if B2 then S1 else S2

допускает, вообще говоря, две разные трактовки:

как полный условный оператор Паскаля вида

if B1 then begin

if B2 then S1 end

else S2

как сокращенный условный оператор Паскаля вида

if B1 then begin

if B2 then S1 else S2 end

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

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

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

Case <ключ_выбора> of

<список_выбора>

[else <оператор_иначе>] end

 

Здесь case, of, else, end – зарезервированные слова (случай, из, иначе, конец);

<ключ_выбора> - выражение порядкового типа;

<список_выбора> - одна или более конструкций вида:

<константа_выбора>: <оператор>;

<константа_выбора> - константа того же типа, что и выражение

<ключ_выбора>;

 

<операторы> - произвольные операторы Паскаля.

 

Оператор выбора Паскаля работает следующим образом. Вначале вычисляется значение выражения <ключ_выбора>, а затем в последовательности <список_выбора> отыскивается константа, равная вычисленному значению. Выполняется оператор, который следует за найденной константой, после чего оператор выбора завершает работу. Если в списке выбора не будет найдена константа, соответствующая вычисленному значению ключа выбора, управление передается операторам, стоящим за словом else. Часть else <оператор_иначе> можно опустить, тогда при отсутствии в списке выбора нужной константы не будет выполнено никаких действий, и оператор выбора просто завершит свою работу.

 

Например, составим программу, которая по номеру дня недели выводит на экран его название:

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

Program dni_nedeli;

Var n: byte;

Begin

Readln(n);

Case n of

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

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

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

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

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

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

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

else writeln(‘дня недели с номером’, n,’нет’);

end;

end.

 

 

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

 

Любому из операторов списка выбора может предшествовать не одна, а несколько констант выбора, разделенных запятыми. Например, следующая программа при вводе одного из символов ‘ y’ или ‘ Y’ выведет на экран «Да», а при вводе ‘ n’ или ‘ N’ – слово «Нет».

Пример программы с использованием Case of с несколькими переменными

Var ch: char;

Begin

Readln(ch);

Case ch of

N, n: writeln(‘Да ’);

Y, y: writeln(‘Нет ’);

End;

End.

7 вопрос: Понятие цикла. Классификация циклов.

 

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

Виды циклов:

Безусловные циклы

Цикл с предусловием

Цикл с постусловием-

Цикл с выходом из середины

Цикл со счётчиком

Совместный цикл

Классификация циклов:

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

Цикл while является циклом с предусловием. В заголовке цикла находится логическое выражение. Если оно возвращает true, то тело цикла выполняется, если false – то нет.

В цикле repeat логическое выражение стоит после тела цикла. Причем, в отличие от цикла while, здесь всё наоборот: в случае true происходит выход из цикла, в случае false – его повторение.

 

8 вопрос: Операторы цикла в языке Паскаль

 

Оператор цикла с параметром в языке Паскаль Оператор цикла с параметром реализует следующую базовую конструкцию. Структурная схема оператора цикла с параметром. Формат записи: 1. For P:=Pn to Pk do OP; 2. For P:=Pk downto Pn do OP; где: For - для; to – до; downto – уменьшая до do – выполнить; OP – тело цикла; оператор (простой или составной); P - параметр цикла, переменная порядкового типа; Pn, Pk – начальное и конечное значение параметра. Работа оператора: Вычисляется начальное значение параметра цикла Pn и присваивается параметру P. Проверяется условие P?Pk, и если оно True выполняются операторы тела цикла OP . После чего наращивается значение P на единицу и опять проверяется условие P?Pk . Если условие False осуществляется выход из цикла. В операторе с downto шаг изменения параметра цикла равен –1.

9 Вопрос Процедуры в языке Паскаль. Типы процедур

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

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

Те действия, которые входят в процедуру, записываются до начала основной программы в следующем виде:
program ...
const ...
type ...
var ...
procedure MyProc;
begin
{действия}
end;
begin
{основная программа}
end.

Типы процедур:

Математические функции

Пример(cos,sin,sqr,sqrt)

Математические процедуры

Пример(Inc(x)-увеличивает x на 1; Dec(x)-уменьшает x на 1)

Процедуры преобразования типов переменных

Пример(Str(x , s) - Последовательность символов "s" из цифр числа "x";

Val(s , v, cod)- Двоичная форма числа последовательности "s" cod=0 (код ошибки))

Функции преобразования типов переменных

Пример(Trunc(x)- целая часть "х"; Round(x)- округление "х" до целого)

Процедурный тип

В оригинальном языке Паскаль Йенсен и Вирта процедурный тип использовался только при описании формального параметра. Уже в TP существовал полноправный процедурный тип. В объявлении типа ставится заголовок процедуры либо функции (без имени), обобщённо описывающий интерфейс подпрограммы. Значение этого типа содержит указатель на подпрограмму с заголовком, соответствующую описанному в объявлении типа. С помощью идентификатора переменной может происходить вызов соответствующей процедуры или функции.

type myfunc=function:string;

function func1:string;

begin

func1:='func N 1'

end;

function func2:string;

begin

func2:='func N 2'

end;

var fun:myfunc;

begin

fun:=@func1;

writeln(fun) {происходит вызов функции func1}

end.