Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
основы программирования и алгоритмизация.docx
Скачиваний:
12
Добавлен:
27.09.2019
Размер:
281.75 Кб
Скачать

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

Оператор Goto позволяет изменить стандартный последовательный порядок выполнения оператора и передать управление заданному оператору, которому в этом случае должна предшествовать метка. Этак же метка указывается при операторе Goto. Метка может быть целым числом от 0 до 9999, либо идентификатором.

Пример:

If x>0 then

X:=Z*x;

Goto 1; end;

I;=idiv2;

X:=sqrt(x);

1:;//пустой оператор

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

УСЛОВНЫЙ ОПЕРАТОР

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

Условный оператор IF и условный оператор Case.

Условный оператор IF имеет синтаксис

IF <условие>then<оператор>lse<оператор>.

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

может использоваться вне полной форме (строка lse с операторами опускается). Он выполняется следующим образом: сначала вычисляется условие если оно истинно, то выполняется оператор стоящий за then, если условие ложно. То условный оператор действует как пустой.

Задача:

Найти sinx если x<1 и cosx , если x=>2/

If x<1 then y:= sin (x);

If x>=2 then y:= cos (x);

Или

If x<1 then y:=sin()x

Else if x>=2 then y:=cos (x)

Условный оператор Case предназначен для организации выбора одного или любого количества ветвей алгоритма в зависимости от значения некоторого выражения.

Case <условие>of<последовательность ветвей> else <оператор>end;

Задача:

Присвоить строке S значение дня недели для заданного числа D при условии, что в месяце 31 день и первое число понедельник.

Case D mod 7 of

1;S:=’понедельник’;

2;S:=’вторник’;

3;S:=’среда’;

4;S:=’четверг’;

5;S:=’пятница’;

6;S:=’суббота’;

7;S:=’воскресенье’;

6.12.11

С помощью оператора вычисляется остаток деления D/7 и в зависимости от значения переменную S заносится строка, соответствующая дню недели.

Case D mod 7 of

1;S:=’понедельник’;

2;S:=’вторник’;

3;S:=’среда’;

4;S:=’четверг’;

5;S:=’пятница’;

6;S:=’суббота’;

Else 7;S:=’воскресенье’;

End;

ОПЕРАТОР ЦИКЛА

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

<оператор цикла>::<заголовок цикла><тело цикла>

<тело цикла>::<операторы>

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

ОПЕРАТОР FOR

For <переменная цикла>:=<выражение начало>to<выражение конец>do<тело цикла>,

For <переменная цикла>:=<выражение начало>downto<выражение конец>do<тело цикла>,

ПЕРЕМЕННАЯ ЦИКЛА ДОЛЖНА ПРИНАДЛЕЖАТЬ СЧЕТНОМУ МНОЖЕСТВУ ЗНАЧЕНИй, т.е. должна быть целого или перечисляемого типа. <переменная цикла><выражение начало> <выражение конец> должны быть одного типа

ОПЕРАТОР While

While<условие>do<тело цикла>,

Это логическое выражение, истинность которого проверяется в начале каждого шага цикла. Цикл будет выполняться до тех пор, пока значение логического выражения истинно.

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

Repeat

Repeat <тело цикла>until<условие>;

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

Cлужебые слова Repeat until играют роль операторных скобок поэтому

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

09.12.11

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

Определены следующие стандартные структурированные типы:

  1. Массив

  2. Строка

  3. Запись

  4. Множество

  1. Массив. Общий синтаксис.

<имя>= array[<тип_индекса 1><тип_индекса 2>,…,<тип_индекса N>]of<тип элемента>;

Type

Temp=array [1..365]of integer;

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

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

Type

Temp=array [1..365]of real;

Var

Temperature : Temp_array;

Temperature: [5]:=5,6;

Temperature [n*7]:=10;

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

Sum_Temp:=0;

For i:=1to365do

Sum_Temp:= Sum_Temp+Temperature[i];//подсчет суммарной температуры в цикле

Mid_temp;=Sun_temp/365;//вычисление среднего значения

Type

Temp_array=array[1..12,1..31]of real;

Var

Temperature: Temp_array;

Temperature [2,5]:=-18;//значение средней суточной температуры за пятое февраля

Sum_Temp:=0

For i=1to12do

For j=1to31do

Sun_Temp:=Sum_Temp+Temperature[I,j];

Mid_temp:=Sun_Temp/(12*31);

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

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

Type

Vect_array=[1..7]of integer;

Matr_array=array[1..3,1..4]of integer;

Const

C1:Vect_array=(1,3,5,7,11,13);

C2; Matr_array=((1,3,5,7), (2,4,6,8), (9,11,13,15))

Операции над массивами

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

  1. Строка символов

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

К символам в строке можно иметь доступ как к компонентам массива, например для обьявленной строки MyString:

Var

MyString : string

Можно программировать следующие действия:

MyString [1]:=’H’ ; MySting[2]:=’E’ ; MySting[3]:=’L’ ;

MySting[4]:=’L’ ; MySting[5]:=’O’ ;

Это последовательность действий будет аналогична оператору

MySting:=’HELLO’ ;

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

Атрибут длины строки содержится в символе с порядковым номером 0 и представляет собой размер строки, числовое значение которого определяется как ord(string[0]).

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

Фиксированный атрибут длины задается в квадратных скобках после слова string при объявлении типа. Например строка объявленная как

Var

MySting:=string[20];

Можно иметь длину не более 20 символов.

Константы строкового типа

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

Const

HeadText : string [7] = ‘section’ ;

NewLine : string [2] = #13#10 ;

TrueQue : string [3] = ‘Yes’ ;

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

Язык Pascal позволяет использовать знак операции «+» для объединения двух строковых операндов. Результатом операции S+T, где S и T имеют строковый тип, будет конкатенация S и T.

Результат будет совместим с любым строковым типом (но не с символьным).

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

10.01.12

Запись

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

Тип запись

<запись>::Record<список полей>end;

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

Пример

Type

TDateRec=Record

Year: Integer;

Month: 1,12;

Day: 1,31;

End;

TName=Record

FirstName,SecondName:String[20];

Sex:(Man, Woman);

Age: Integer;

End;

Var

Person:TName;

DateRec; TDateRec;

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

Например:

Person.Firstname:=’Victor’;

Person.SecondName:=’Ivanov’;

Person.Sex:=’Man’

Person.Age:=’20’

DateRec.Year:=2002

Date.Day:=21;

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

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

Например

Type Tperson=(Student,Engeneer);

TPerson=Record

FirstName,SecondName,String[20];

Birthday,DateRec;

Case Profession:Tprofession of;

Student;(Course:Integer,Faculty:string[20]);

Engeneer;(Speciality:string[20]);

Var Student_Person, Engineer_person; TPerson;

Student_person.Course:=5;

Engineer_Person.Speciality:=’programmer’;

Операции над записями

With

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

<Оператор with>::With<идентификатор записи>do<оператор>;

With DateRec do

If Mother=12 then

Month:=1;

Year:=Year+1; end;

Else Month:=Month+1;

Множество

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

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

13.01.12

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

[3,7,9,12,13] - Множество состоит из пяти элементов

[1..100] – Множество состоит от 1 до 100, целые числа

[“a”, “b”, “c”] – множество содержит три литеры

[a,.. z,?, !] - множество содержит все строчные латинские буквы и символы ? И !

[ ] – пустое значение

Не имеет значения порядок записи элементов множества внутри конструктора, т.е множества 123 и 321 эквивалентны. Каждый элемент во множестве учитывается только один раз, поэтому 123451 и 1..5 эквивалентны.

Описание переменных множественного типа

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

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

К операциям относят:

- объединение

- Пересечение

- разность множеств

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

А) Объединение множеств A и B называется множество состоящее из элементов, входящих хотябы в одно из множеств А или B. Знак операции объединения (+)

Пересечение множеств

Пересечением двух множеств A и B называется множество, состоящее из элементов, одновременно входящих во множество A и B. Обозначение (*).

Разность множеств

Называется множеством состоящее из элементов множества А, не входящих во множество В

Первые две операции перестановочные, последняя не перестановочная

Операции отношения множеств

Множество можно сравнивать между собой, т.е операции отношения, результатом таких операций будет логическая величина true или false. Ко множествам применимых всех операций отношения за исключением > <.

Операции отношения

Результат

true

false

А=В

Если множества А и В совпадают

В противном случае

А<>В

Множество А и В не совпадают

В противном случае

А<=B

Все эл-ты А принадлежат В

В противном случае

A=>B

Все эл-ты Б принадлежат А

В противном случае

Операция вхождения

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

16.01.12

    1. Операции со строками

«+» операция сцепления – применяется для соединения нескольких строк в одну результирующую.

Соединять можно переменные и константы строкового типа.

Например:

+’IBM’+ ’PC’

Результат ‘IBM PC’

Длина результирующей строки не должна превышать 255 символов.

    1. Операции отношения - =,<,><=,>=,<>

В результате сравнения двух строк получается логическая величина true или false. Операция отношения имеет приоритет ниже, чем операция сцепления.

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

    1. Функции со строками

Copy (S, Poz, N) – выделяет из строки S под строку длиной N символов, начиная с позиции Poz, где Poz, N целые числа.

Функция Concat (S1, S2,…,SN) – выполняет сцепления строк S1-SN в одну строку.

Length (S) – определяет текущую длину строки S. Результат значения целого типа

POS (S1,S2) – обнаруживает первое вхождение в строку S2 подстроки S1. Результат – целое число, равное номеру позиции, где находится первый символ подстроки S1, если в S2 подстроки S1 не обнаружено, то результат равен нулю.

Delete (S, Poz, N) – удаление N символов из строки S начиная с позиции Poz.

Insert (S1, S2, Poz) – вставка строки S1 в строку S2 начиная с позиции Poz