Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







К учебному курсу «Программирование»





ЯЗЫК ПРОГРАММИРОВАНИЯ

TURBO PASCAL

Часть I

Лекции

К учебному курсу «Программирование»

для студентов

Ростов-на-Дону


УДК 510

ББК 32.973.26—18.1

 

 

Печатается по решению редакционно – издательского совета

Ростовского государственного педагогического университета

 

Бордюгова Т.Н., Кузнецова Е.М., Кузнецова Т.К.

ЯЗЫК ПРОГРАММИРОВАНИЯ TURBO PASCAL.

Лекции к учебному курсу «Программирование»

Ростов-на-Дону: РГПУ, 2006.

 

 

Язык программирования Турбо Паскаль, названный в часть французского математика и философа Блеза Паскаля (1623-1662), разработан в 1968 -1671 гг. Николаусом Виртом, профессором, директором Института информатики Швейцаркой высшей Политехнической школы. Язык Паскаль, созданный первоначально для обучения программированию как систематической дисциплине, вскоре стал широко использоваться для разработки средств в профессиональном программировании.

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

 


Лекция №1

Тема: «Элементы языка»

Алфавит и словарь языка Турбо Паскаль.

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

В качестве букв в Паскале используются прописные и строчные буквы латинского алфавита: ABCDEFGHIJKLMNOPQRSTUVWXYZ

abcdefghijklmnopqrstuvwxyz

и знак подчеркивания (_).

Десятичные цифры: 0 1 2 3 4 5 6 7 8 9.

Шестнадцатеричные цифры строятся из десятичных цифр и букв от А до F.

Применяются специальные символы:

+ плюс

- минус

* звездочка

/ дробная черта

> больше

< меньше

= равно

; точка с запятой

# номер

‘ апостроф

, запятая

. точка

: двоеточие

[ ] квадратные скобки

{} фигурные скобки

$- знак денежной единицы

нет обозначения - пробел

Комбинация специальных символов могут образовывать составные символы:

:= присвоение

<> не равно

.. диапазон значений

(**) альтернатива {}

<= меньше или равно

>= больше или равно

(..) альтернатива []

Слова в Турбо Паскаль.

Неделимые последовательности знаков алфавита образую слова, оделенные друг от друга разделителями и несущие определенный смысл в программе. Разделителем могут служить пробел, символ конца стоки, комментарий.

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

Absolute абсолютный

And логическое И

Array массив

Asm ассемблер

Begin начало блока

Case вариант

Const константа

Constructor конструктор

Div деление нацело

go to переход на

do выполнить

down to уменьшить до

destructor разрушитель

else иначе

end конец блока

exports эксперт

external внешний

file файл

for для

forward опережающий

function функция

if если

implementation реализация

in в

inline основной

interrupt прерывание

interface интерфейс

inherited наследование

label метка

library библиотека

mod остаток от деления

nil отступление

not логическое НЕ

or логическое ИЛИ

of из

object объект

packed упакованный

procedure процедура

program программа

record запись

repeat повторять

set множество

shl сдвиг битов влево

shr сдвиг битов вправо

string строка

then то

to увеличение

type тип

unit модуль

until до

var переменная

wrile пока

with с

xor исключающее ИЛИ


Идентификаторы.

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

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

Правила написания идентификаторов:

· Идентификатор начинается с буквы или знака подчеркивания.

· Идентификатор может состоять из букв, цифр и знака подчеркивания.

· Между двумя идентификаторами должен быть, по крайней мере, один пробел

· Максимальная длина идентификатора 127 символов, но значимы только первые 63 символа.

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

Константы и переменные

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

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

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

Тип переменных должен быть описан перед, тем как с переменными будут выполняться какие-либо действия.

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

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

1. зарезервированные слова program, procedure, function пишутся строчными буквами;

2. имена констант, переменных, процедур, функций начинаются с прописных букв;

3. операторы записываются только строчными буквами;

4. логически подчиненные структуры записываются только строчными буквами на 1 строку ниже и на 1 -2 позиции правее по отношению к более старшим.

Рассмотрим структуру программы на примере программы решения задачи вычисления произведения двух целых чисел:

Program Proizv; {заголовок программы}

var {описание раздела переменных}

A,B, P: integer; {переменные А,В, P– целые}

begin {начало программы}

write (‘введите значение целого числа A’); {ввод запроса на экран}

readln(A);

write (‘введите значение целого числа B’);

readln (B);

P:=A*B; {вычисление переменной P}

write (‘произведение чисел ‘,A,’ и ‘,B,’=‘, P); {вывод ответа}

end. {конец программы}

 

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

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

· Списка имен подключаемых библиотечных модулей

· Описания меток

· Описания констант

· Описания переменных

· Описание процедур и функций

· Операторов.

Раздел подключаемых библиотечных модулей

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

Формат:

uses < имя1>,<имя2>, …;

Например:

Uses Crt, Graph, MyLib;

Раздел описания меток.

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

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

Формат:

Label < имя,..>

Например:

Label

Metka 1, Metka 2, 111, Blok10;

После записи метки в разделе операторов, следует двоеточие, показывающее компилятору, что идентификатор используется как метка:

Label

М1, М2; { описание метки}

Begin

M1:< оператор > {использование М1 в разделе операторов}

M2:< оператор > {использование М2 в разделе операторов}

End

Раздел описания констант

В разделе описания констант производится идентификация констант постоянных значений. Раздел начинается зарезервированным словом const, за которым следует ряд выражений, присваивающих идентификаторам постоянные числовые или строковые значения. Выражения присвоения отделяются друг от друга точкой с запятой. Формат: const <идентификатор> = <значение>

Например:

Const

MaxInd:= word=100; {типизированная константа}

Name =’Петя ’; {строковая константа}

Code = $124; {константа – шестнадцатеричное значение}

N =10;

Pi= 3.14159265;

Type

LatLetter=(‘ A ’.. ’ z ’);

Days = 1.. 31;

Mart = array [1.. 10] of integer;

 

Каждое описание задает множество значений и связывает с этим множеством некоторое имя типа.


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

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

Формат:

Var

<идентификатор,..>: <тип>;

Например:

var {описание раздела переменных}

A,B, Proizved: integer; {переменные А,В, Proizved – целые}

X, h, sum: real;

D, l, r: string;

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

Это основной раздел программы. Раздел операторов начинается словом begin, далее следует оператор языка. Завершает раздел зарезервированное слово end.

Например:

begin {начало программы}

Write(‘введите значение целого числа A>’); {ввод запроса на экран}

Readln(A);

Write(‘введите значение целого числа B>’);

Readln(B);

P:=A*B; {вычисление переменной P}

Write(‘произведение чисел ‘,A,’ и ‘,B’ = ‘, P); {вывод ответа}

end. {конец программы}

 

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

 


Контрольные вопросы

 

1. укажите буквы, символы, составные символы:

^, Y, <>, +, *, R, k, $,!, ы

2. что в списке можно рассматривать как идентификаторы:

FIO, ФИО, 22222, X, Y, >=, &, Summa, _Result

3. укажите идентификаторы, которые проще воспринимаются при чтении, объясните причину:

klass1; Klass_1; Summadoxoda; SummaDoxoda; Nomedoma; Number_Home

4. сколько в следующем списке зарезервированных слов:

X, Program, Y, Summa, MyMoney, произведение, Vova, begin, end, if repeat, Read?

5. есть ли причины к невыполнению следующей программы:

program Test;

begin

end.


Лекция №2.

Тема: «Типы данных»

Типы данных - множество величин объединенных определенной совокупностью допустимых операций. Понятие типа данных является ключевым в языке Паскаль. Тип данных характеризует внутреннее представление, множество допустимых значений для этих данных, а также совокупность операций над ними. Каждый тип имеет свой диапазон значений и специальное зарезервированное слово для описания.

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

Целые типы

В языке Турбо Паскаль определено 5 целых типов:

· Shortint (-128... 127, 1 байт),

· Integer (-32767... 32768, 2 байта),

· Longint (-2147483648... 2147483647, 4 байта),

· Byte (0... 255, 1 байт),

· Word (0... 65535, 2 байта).

Над данными целого типа можно выполнять операции: сложение, вычитание, умножение, div – деление с отбрасыванием дробной части (получение целого частного при делении целого данного на целое), mod – получение целого остатка при делении целого данного на целое.

Операция mod часто используется для определения, делится ли целое число X без остатка на 2, т.е., является ли X четным числом. Если остаток равен нулю, то число X – четное, а если имеется остаток, то нечетное.

Кроме того, имеется большое количество встроенных функций для работы с целыми числами, например:

Abs – возвращает модуль числа;

Sqr – возвращает квадрат числа;

Sqrt – возвращает значение корня квадратного из числа;

Sin, Cos, Exp, ln и др.

Вещественные типы

В Турбо Паскале имеется 5 вещественных типов.

· Real (занимает 6 байт, диапазон от 2.9E-39 до 1.7E+38 по модулю, точность 11-12 значащих цифр)

· Single (занимает 4 байта, диапазон от 1.5E-45 до 3.4E+38 по модулю, точность 7-8 значащих цифр)

· Double (занимает 8 байт, диапазон от 5.0Е-324 до 1.7Е+308по модулю,точность 15-16 значащих цифр)

· Extended (занимает 10 байт, диапазон от 3.4E-4932 до 1.1E+4932 по модулю, точность19-20 значащих цифр).

· Comp (занимает 8 байт, диапазон от -9.2E-18 до 9.2E+18, хранятся точно, поскольку это целые числа)

Данные вещественного типа могут представлены в двух видах: с фиксированной точкой и плавающей точкой.

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

Данными с плавающей точкой являются числа, представленные с десятичным порядком. Например, 5.47Е+2, 5470Е-1. Эти записи представляют одно и то же число 547.

Операции над вещественными числами: сложение, вычитание, умножение, деление и операции отношения. Кроме того, имеется большое количество встроенных функций для работы с числами: abs, sqr, sqrt, sin, cos и т.п.

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

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

Например: тип Single - хранится 7-8 знаков после десятичной точки, тип Double - 15-16, тип Extended - 19-20 знаков.

program sravnenie;

var x: single; y: double; z: extended;

Begin

x:= 1/3; y:= 1/3;

z:= abs(x-y);

writeln ('z=',z);

end.

Эта программа выдаст в результате число z = 9.93410748106882E-0009. Обычно принято считать, что a = b, если выполняется условие abs(a-b) < eps. Число eps можно определять следующим образом: min(abs(a), abs(b))*10^(-m), где m - необходимое число совпадающих десятичных разрядов.

Логический тип

Переменные логического типа Boolean занимают в памяти один байт и могут принимать одно из двух значений False - ложное или True - истинное. Этот тип является порядковым (Ord (False) = 0, Ord (True) = 1) и, следовательно, упорядоченным. Результат любых операций сравнения имеет логический тип и может быть присвоен логической переменной. Для операндов типа boolean определены следующие логические операции: NOT - отрицание (превращает false в true, а true в false), AND - логическое умножение "и", OR – логическое сложение "или", XOR - исключающее или (true, если операнды разные).

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

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

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

Логический тип определяется таким образом, что FALSE< TRUE.

Символьный тип (литерный)

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

Символьный тип Char также называют литерным. Он позволяет работать с символами, которые записываются двумя способами: в одинарных кавычках или по их коду, например 'a', 'B', '*' или, что то же самое, #97, #130, #42. В отличие от текста программы на Паскале, символы, соответствующие строчным и заглавным буквам различаются. Множество значений типа Char представляет собой полный набор ASCII - символов (американская стандартная кодировка). В компьютере хранятся шестнадцатеричные коды символов (1 байт), которые и используются в операциях отношения (сравнения). Функция Ord выдает код соответствующего символа, который может быть от 0 до 255. Обратной функцией, которая по коду выдает соответствующий символ, является функция Chr.

Пользовательские типы данных.

В Турбо Паскале предусмотрен механизм создания новых типов, которые принято называть пользовательскими или конструируемыми. Их можно создавать на основе стандартных и ранее созданных типов. Описание новых типов происходит в разделе TYPE. После этого можно в разделе Var создавать переменные этих типов. Можно сразу описывать новый тип при создании переменной в разделе Var. Рассмотрим следующие пользовательские типы:

 

· перечисляемый тип,

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

Перечисляемый тип

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

Функция Ord возвращает порядковый номер значения, начиная с нуля. Объявление перечисляемого типа описывает множество идентификаторов, которые являются возможными значениями перечисляемого типа. Идентификаторы в описании типа представляют собой константы. Отдельные значения указываются через запятую, а весь список заключается в круглые скобки. Первая константа имеет порядковый номер нуль, вторая — 1 и т.д.

Формат:

Type

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

Var

<Идентификатор,...>: <имя типа>;

Пример,

Type

Gaz = (Ge, С, О, N);

Metall = (Na, K, Li, Cu, Zn);

Var

Gl, G2, G3: Gaz;

Metl, Met2: Metall;

Season: (Winter, Spring, Summer, Autumn);

В данном примере приведены два явно описанных типа данных пользователя Gaz и Metall. Определены их значения - обозначения некоторых газов и металлов -периодической таблицы Д.И.Менделеева. Переменные Gl, G2, G3 и Metl, могут принимать только одно из перечисленных значений. Попытка присво­ить любое другое значение вызовет программное прерывание. Третий тип перечисления анонимный (не имеет имени) и задается перечислением значений в разделе v аг. Переменной этого типа является Season и может принимать значения Winter, Spring, Summer и Autumn. Таким образом может быть задан любой тип, но это не приемлемо, так как первый способ более понятен и больше соответствует характеру языка Паскаль. При этом имена внутри круглых скобок являются константами соответствующего типа перечисления и подчиняются обычным правилам констант. Выражения и константы перечисляемого типа допустимы для использования в операторе CASE. Операции отношения и логические операции допустимы для значений перечисления одного и того же типа. Упорядочение осуществляется по номеру элемента в описании типа. Например, будет истинно выражение Winter < Spring, так как Spring имеет больший номер по порядку в описании чем Winter.

В отличие от данных других типов Паскаль не поддерживает операции ввода–вывода значений пользовательского перечисляемого типа. При необходимости про­граммист сам должен организовать ввод-вывод таких данных.

Для работы с данными перечисляемого типа в языке Паскаль предназначены стандартные подпрограммы Succ, Pred, Ord.

Следует отметить, что стандартные типы byte, word, char и boolean также можно считать вариантами перечислимого типа.

Интервальный тип (диапазон)

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

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

Формат:

Type

<имя типа> - <константа1>…<константа2>;

Var

<идентификатор,...>: <имя типа>;

Пример:

Type

Days =1.. 31;

Var

RabDay, BolnOay: Days;

В этом примере переменные RabDay и BolnDay имеют тип Days и могут принимать любые значения из диапазона 1..31. Выход из диапазона вызывает программное прерывание.

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

Min = 1; Max = 31;

Type

Days = Min.. Max;

Var

RabDay, BolnDay: Days;

 

Совместимость типов данных

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

Необходимо помнить следующее: переменные или выражения одного типа являются полностью совместимыми.

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

Например, результат сложения двух целых переменных типа integer и word может присваиваться целой переменной, тип которой только longint, поскольку только этот целый тип содержит в себе весь возможный диапазон значений как для типа integer, так и для типа word. Также, можно присваивать целое выражение вещественной переменной или символьное выражение строке.

Структурированные типы данных

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

Контрольные вопросы.

1. Для чего используется указание типа данных величины? Как описывается тип величины в языке Паскаль?

2. Приведите полный перечень типов данных в Турбо Паскале с примерами величин каждого типа.

3. Какие типы данных относят к скалярным типам данных?

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

5. Какие типы отношений определены над данными целого типа? Какие стандартные функции определены для целых чисел? Чем отличаются вещественные числа от целых?

6. Какие функции преобразуют вещественный аргумент в целое число? Чем они отличаются?

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

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

9. Пользовательские типы данных. Чем они отличаются от стандартных типов данных? Приведите примеры данных перечисляемого и интервального типов.

10. Что такое структурированные типы данных? Почему от программиста требуется знание и правильное применение понятия тождественности и совместимости типов величин? Каковы признаки тождественности и условия совместимости типов?


Лекция №3

Тема: «Операторы языка»

Оператор – это языковая конструкция, представляющая один шаг из последовательности действий или набор описаний.

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

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

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

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

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

1.2 Оператор безусловного перехода (go to)

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

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

Структурные операторы

2.1. Составной оператор

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

2.2.1.Оператор условия if

2.2.2.Оператор выбора case

2.3.Операторы повтора.

2.3.1.Оператор while.

2.3.2.Оператор повтора repeat

2.3.3.Оператор повтора for

2.4.Вложенные операторы цикла

Примечание.

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

1.1 Оператор присваивания – основной оператор любого языка программирования. Общая форма записи V:=A, где V –имя переменной; «:=»-знак присваивания; А – выражение.

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

Например, для оператора Rezult:=A div В; сначала выполняется целочисленное деление значения переменной А на значение переменной В, а затем результат присваивается переменной Rezult.

Пример

А:= 8;

S:=A*B;

Ostatok:= A mod B;

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

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

Например:

ClrScr; {Вызов стандартной процедуры очистки экрана}

InitWotrk(True); {Вызов пользовательской процедуры}

 

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

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

А:=В;

R:=2;

;

K:=7.2;

Здесь третий оператор является пустым.

Структурные операторы

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

Составной оператор

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

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

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

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

Оператор условия if.

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

Как видно из диаграммы, он может принимать одну из следующих форм:

if <условие> then <оператор 1>

ЕСЛИ <условие> ТО <оператор1>

else <оператор 2>

ИНАЧЕ<оператор 2>

if <условие> then <оператор>

ЕСЛИ <условие> ТО <оператор>

Условный оператор выполняется следующим образом. Сначала вычисляется выражение, записанное в условии. В результате его вычисления получается значение булевского типа. В первом случае, если значение выражения есть True (истина), выполняется <оператор1>, указанный после слова then (TO). Если результат вычисления выражения в условии есть False (ложь), то выполняется <оператор2>. Во втором — если результат выражения True, выполняется <оператор>, если False — оператор, следующий сразу за оператором if. Операторы if могут быть вложенными. Например:

IF X<0 THEN Y:=X+1 ELSE Y:=2*X

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

Если один оператор if обеспечивает выбор из двух альтернативно, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов. Оператор выбора относится к сложным и имеет следующую форму записи:

 

CASE < выражение > OF

Константа 1: оператор 1;

Константа 2: оператор 2;

….

Константа N: оператор N;

END

Здесь CASE (в случае), OF (из), END (конец) – служебные слова.

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

При использовании оператора выбора case должны выполняться следующие правила:

1. значение выражения «переключателя», записанного после служебного слова case, должны принадлежать дискретному типу, для целого типа они должны лежать в диапазоне integer.

2. все константы, предшествующие операторам альтернатив, должны иметь тип, совместный с типом выражения.

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

Например: Ввести номер дня недели и вывести соответствующий ему день недели на русском языке.

Program Day_week;

Var

Day: byte;

Begin

Write (‘vvedite nomer:’);

Readln (Day);

Case Day of {вычисление значения селектора и выбор}

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

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

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

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

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

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

Else

Writeln (‘воскресенье’);

end;

End.


2.3. Операторы повтора.

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

Если в программе возникает необходимость неоднократно выполнять некоторые операторы, то используются операторы повтора (цикла). В языке Паскаль различают три вида операторов цикла: while, repeat, for. Они используются для организации циклов различных типов. Выражение, употребляющее повторения, должно иметь булевский тип. Если число повторений оператора (составного оператора) заранее неизвестно, а задано лишь условие его повторения (или окончания), используются операторы while, repeat. Оператор for используется, если число повторений заранее известно.

Оператор while.

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

Форма записи оператора цикла с предусловием имеет вид:

While <логическое выражение> DO

BEGIN

<операторы циклической части программы>

END

Здесь While (пока) и DO (выполнить) – служебные слова.

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

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

Program Summ;

Const

Limit = 10 {ограничение на количество вводимых чисел}

Var

Count, Item, Sum: integer;

Begin

Count:=0; {счетчик чисел }

Sum:=0; { сумма чисел }

while (Count < Limit) do {условие выполнения цикла}

Begin

Count:=Count+1;

While(‘ введите ‘, Count,’- целое число: ‘);

Readln (Item); {ввод очередного числа с клавиатуры }

 


Sum:= Sum + Item;

end;

Writeln (‘ сумма введенных чисел равна’,Sum);

End.

В данном примере в разделе описания констант описана константа Limit=10, задающая ограничения на количество вводимых чисел. В разделе описания переменных описаны переменные Count, Item, Sum целочисленного типа.

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

Оператор повтора.

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

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

REPEAT

<операторы циклической части программы>

UNTIL <логическое выражение>

Здесь REPEAT (повторить) и UNTIL (до тех пор) – служебные слова.

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

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







Что делать, если нет взаимности? А теперь спустимся с небес на землю. Приземлились? Продолжаем разговор...

Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

Что способствует осуществлению желаний? Стопроцентная, непоколебимая уверенность в своем...

Что будет с Землей, если ось ее сместится на 6666 км? Что будет с Землей? - задался я вопросом...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.