Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика (лекции).docx
Скачиваний:
9
Добавлен:
26.11.2018
Размер:
2.07 Mб
Скачать

Операции цикла

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

Цикл с параметром for

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

1-й формат:

FOR<параметр>:=<выражение_1>to<выражение_2>do оператор

2-й формат:

FOR<параметр>:=<выражение_2>downto<выражение_1>do оператор

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

Выражение должны быть того же типа что и переменна цикла, оператор простым или составным.

Пример:

Var I, Sum:Integer;

Begin

Sum:=0;

For I:=10 downto 1 to

Begin

Writeln(I); Inc (Sum,I)

End;

Writeln(‘сумма чисел:_’,sum)

End.

Вывести на экран столбик от 10 до 1 и посчитать их сумму

Если в теле цикла необходимо выполнить более 1-го оператора необходимо заключить их в блок с помощью begin и end.

Экзаменационная задачи:

  1. Найти среднее арифметическое минимального и максимального элемента их 10 введённых.

  2. Из n введённых чисел найти максимальное значение среди положительных элементов.

  3. Вычислить суммы 1-ых n слагаемых 1*+2*-3*-4*+5*-6*……(каждое 3-е слагаемое со знаком - )

Начальные установки

Циклы с постусловием Repeat и с предусловием While

Начальные установки

выражение

Операторы

операторы

Модификация параметров

модификация

выражение

Начальные установки – до входа в цикл задают значение переменных которые в нём используются.

Проверка условия продолжение цикла выполняется над каждой операцией либо до тела (предусловие) либо после тела (постусловие).

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

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

Формат оператора:

While<выражение>do<оператор>

Выражение должно быть логического типа (может быть операция отношения, или просто логическая переменная(истина или ложь)). Если результат вычисление выражение = true то выполняется простой или составной оператор после зарезервированного слова do, это продолжается до того момента пока значение выражение не становится = false. После окончанию цикла управление передаётся на следующий за ним оператор.

Пример: Написать программу печати значения функции для аргумента изменяющийся в заданный пределах заданным шагом Dx

t, x<0

tx, 10>x>=0 = y

2t, x>=10

  1. Ввести исходные данные

  2. Взять первое значение аргументу

  3. Определить к какому из интервалов оно принадлежит

  4. Вычислить значение функций по соответствующей формуле

  5. Вывести на экран результат

  6. Перейти к следующему значению аргумента

  7. Если оно не превышает конечное значение повторить шаги 3-6, иначе закончить.

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

Формат оператора:

Repeat

Оператор;

Оператор;

…………………….

Оператор;

Until

Тело цикла с постусловием заключено между служебными словами repeat и until, поэтому заключать его в блок не требуется. В отличии от while цикл будет выполнятся до тех пор пока логическое выражение после слова until ложно. Как только результат выражения станет истинным, произойдёт выход из цикла, в вычисление выражения выполняется в конце каждой операции цикла.

Задача: найти сумму чётных чисел в интервале от 0 до 100 (экзаменационная задача)

Задача: Написать программу расчёта функций y=x\ii и вывести все значения y меньше некоторого eps. Eps=0.0183 x=1.55

Рекомендации по использованию циклов

  1. Чтобы избежать ошибок рекомендуется в теле циклов while и for при выполнении более одного оператора использовать операторные скобки (begin и end).

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

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

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

Модуль CRT…

Uses CRT; - предназначен для обслуживания процессов вывода информации на экран, ввода с клавиатуры, вывода звуковых сигналов, работы с окнами на экране и вывода цветных текстовых строк на экран.

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

Система координат.

Ось OX вправо, ось OY вниз.

Верхний левый угол имеет координату 1,1 (первая цифра отвечает за X)

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

Под каждый символ отводится по 2 байта. 1-й байт занимает код символа, другой байт хранит атрибуты цвета, фона, признак мерцания. Можно получить 8 различных цветов фона и 16 цветов символа.

Модуль CRT выполняет:

  1. Выполнять вывод в заданное место экрана заданным цветом символа и фона.

  2. Открывать на экране окно прямоугольной формы и выполнять вывод в пределах этого окна.

  3. Очищать экран, окно, строку и её части.

  4. Обрабатывать ввод с клавиатуры.

  5. Управлять встроенным динамиком.

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

Text Mode(t)

T = 0, 1, 2…256

Процедура управления цветом

0

Black

1

Blue

2

Green

3

Gyan

4

Red

5

Magenta

6

Brown

7

light gray

8

Dark gray

9

Light blue

10

Light green

11

Light gyan

12

Light rad

13

Light magenta

14

Yellow

15

White

Color+128 – blink (мерцание)

Процедуры задания цвета

HighVideo - Устанавливает высокую яркость символов, устанавливает цвета 0-7 на 8-15

LowVideo –

NormVideo – устанавливает первоначальную яркость символов.

TextBackGround(color 0-7)

TextColor(color) – задаёт цвет символа.

Процедуры работы с экраном.

ClrEol - Удаляет все символы от курсора включительно, до конца строки, заполняя этот участок текущим цветом фона.

ClrScr – очищает текущее окно, заполняет окно текущим цветом фоно и помещает курсор в его левый угол с координатами 1.1

DelLine – Удаляет строку, в которой находится курсор.

GotaXY (x,y) – перемещает курсор к элементу окна с заданными координатами. Если хотя бы одна из координат недопустима, процедура не выполняется.

InsLine – вставляет пустую строку на экране, в месте расположения курсора и заполняет её текущим цветом фона.

Window(x1,y1,x2,y2) – задаёт размеры окна на экране и помещает курсор в левый верхний угол окна с координатами 1.1 Если одна из координат недопустима, то функция не выполняется.

Функции работы с экраном.

WhereX: Integer - возвращает текущую координату x курсора

WhereY: Integer - возвращает текущую координату Y курсора

Функция работы с клавиатуры.

KeyPressed: booleon – анализирует нажатие клавиши клавиатуры, результат истина если клавиша нажата, ложь в противном случае.

ReadKey: char – считывает символ с клавиатуры, считываемый символ не отображается на экране.

Подача звукового сигнала

Sound(hz:word); - задание звука; Delay (ms;word) – таймер. 1000ms – 1c

No sound – выключение звука.

Символы таблицы ASCII делятся на специальные (0..32)( обычно они не видны для пользователя).

33…127 располагаются все допустимые символы и латинский алфавит.

127…255 содержат русский прописной и строчный алфавит и коды псевдографики.

176..255 коды псевдографики.

Программа:

Массивы

Конечная именованная последовательность однотипных величин называется массивом. Чтобы описать массив надо задать какого типа его элементы и каким образом они пронумерованы. Форматы описания типов:

Tupe имя_типа = ARRAY[тиа индекса] of тип элемента

Tupe имя_типа = ARRAY[нач. индекс, кон.индекс] of тип элемента

Tupe mas = array[1..10] of real;

Обычно при описания массива верхняя граница его индекса(конечный индекс) задаётся в виде именованной константы.

onst n=6; {: не ставится}

Tupe intmas = array [1..n] of integer;

После задания типа массива переменные этого типа описываются обычным образом.

Var a,d: integer;

Var a,b: array[1..6] of integer; ( ТАК ПРОЩЕ)

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

B:=A;

Все остальные действия выполняются с отдельными элементами массива. С ними можно делать всё, что допустимо для переменных того же типа.

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

For i:=1 to 6 do A[i]:=0;

B[2], A[5] (конкретно к какому то элементу)

Пример: Определить максимальный элемент массива из 20 вещественных.

Пример: Упорядочить по возрастанию элементы массив из 20 элементов

Многомерные массивы.

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

Пример:

Type

Vector=array [1..4] of integer;

Massiv=array [1..4] of Vector;

Var

Matr: Massiv;

Tmer: array [1..6] of Massiv;

ИЛИ

Var: ARRAY [1..4, 1..4] of integer; tmer; array [1..6, 1..4, 1..4];

Для описания массивов можно использовать предварительно определённые константы

Const

G1=4; G2=6

Var

Mas y:array[1..G1, 1..G2] of real;

Элементы массива могут быть любого типа кроме файлового. В памяти двумерный массив располагается по строкам.

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

Обнулить главную диагональ:

For I:=1 to 4 do A[I,I]:=0;

Массив может участвовать только в операциях отношения ( равно, не равно) и в операциях присваивания.

Var A,B:array[1..20, 1..10] of real;

A = B

A< >B

A:=B;

При вводе строку считывается из входного потока количество символов, равное длине строки или меньшее, если символ перевода строки ‘enter’ встретиться раньше при выводе под строку отводиться кол-во позиций равной её фактической длине. (происходит выравнивание по левому краю)

К отдельному символу строки можно обращаться как элементу массива символов. (S1[4]) Их можно использовать в выражениях одновременно

S1[4]:=’x’;

Writeln(S2[3]+S2[5]+’R’);

Операция Конкатенации (+)

Ограничение по длине строки

Функции для работы со строками

  1. Concat (S1, [S2,…, Sn]:String):String;

  2. Length (S:String):Integer; - возвращает текущий размер строки, S – строка у которой определяется размер

  1. Pos (P, S:string):Byte - поиск последовательности P в строке S, результат равен номеру 1-му символу строки S с которого начинается искомая последовательность, или нулю, если такой последовательности в строке нет.

  2. Copy (s:string;I:Integer;c:integer), - создаёт подстроку подстроки S. S – исходная строка, I - номер первого выделяемого символа строки,(если значение больше длины строки возвращается пустая строка) С – число выделяемых символов(если всех необходимых символов в строке нет возвращается имеющийся остаток строки).

Процедуры для работы со строками

  1. Delete (Var S:string; I:integer; С:Integer) - удаляет подстроку из строки S. I – номер 1-го удаляемого символа. С – число удаляемых символов.

  2. Insert (P:string; Var S:String; I:integer); - данная процедура помещает подстроку P строку S. S исходная строка. I номер позиции исходной строки начиная с которой помещается подстрока.

  3. STR(х, S) – преобразует числовое значение х в строку S. При этом для х может быть задан формат STR(x:6:2, S);

  4. Val(S, X, errCode); - преобразует строка s в значение числовой переменной x. В случае успешного преобразование код ошибки равен 0.

Процедуры и функции

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

Для организации подпрограмм используют процедуры и функции:

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

Функция – аналогично процедуре, но имеет 2 отличия. 1)Функция передаёт в точку вызова скалярное значение(результат своей работы). 2)Имя функции может входить в выражение как операнд.