Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_ИП (Часть 1 - алгоритмизация и основы языка Па...doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
897.54 Кб
Скачать

Циклы на языке Паскаль

Существует три типа циклов:

1) repeat-until – цикл с постусловием (repeat – повторять, until – до тех пор пока). Между словами repeat и until находится тело цикла, состоящие из произвольного количества операций. После until записывается УВИЦ, цикл выполняется, пока условие ложно.

Пример: Найти сумму N чисел

i:=0;

repeat

readln(x);

s:=s+x:

i:=i+1;

until i >= N

2)While – do – цикл с предусловием. Имеет формат: While <условие> do. Цикл выполняется, пока условие истинно. После do может идти только один оператор. Если их несколько, используются операторные скобки (begin … end).

Пример: Найти сумму N чисел

i:=0;

while i<N do

begin

readln(x);

s:=s+x:

i:=i+0.1;

end.

3) for – do – реализует цикл с предусловием при заранее известном количестве итераций. Является аналогом блоков циклов в блок схемах, но имеет более жесткие ограничения:

  • не поддерживает шаг кроме +1, -1.

  • Начальное и конечное значение счетчика могут быть только целые.

  • Счетчик может быть только целой переменной.

for – do имеет формат:

for <Имя счетчика> := <начальное значение счетчика> to <конечное значение счетчика> do <оператор>;

Пример:

for i:=1 to N do

s:=s+x[i];

Правило работы с циклом см. в главе блоки циклов.

Пример: Найти сумму N чисел

For i:=1 to N do

begin

read (x);

s:=s+x;

end;

Для создания цикла с шагом -1 вместо to пишется downto

For i:=N downto 1 do

Массивы.

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

Элементами массива могут быть данные любого типа, в том числе и массивы.

Массив определяется именем и количеством размерностей.

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

Одномерные массивы.

Массивы бывают двух видов:

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

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

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

У динамических он всегда равен 0.

Работа со статическими массивами

Описание: type <имя_типа> = Array [<начальн. инд.>..<кон. инд.>]

of <тип элементов>;

var <имена массивов> : <имя_типа>;

Пример: type Mas = [1..100] of real;

var M1, M2: Mas;

Существует сокращенная форма объявления:

var <имена массивов> : Array [<начальн. инд.>..<кон. инд.>]

of <тип элементов>;

Использовать сокращённое объявление мас сива не рекомендуется. Это связано с тем, что Pascal два массива, описанные таким образом:

var M1: array [1..100] of real;

var M2: array [1..100] of real;

Считаются разнотипными.

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

Использование массивов

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

var M1, M2: Mas;

begin …

M1:=M2;

В выражениях массивы целиком участвовать не могут, кроме операций сравнения, =, >, <.

Массивы считаются равными, если равны все их элементы.

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

Динамические массивы

При работе с динамическими массивами, выделяют два этапа их описания:

  1. объявление – выполняется перед началом работы программы.

  1. установка размеров – после начала программы.

1. Type <имя_типа>=array of <тип_элем.>;

Var <имена_массивов>:<имя типа>;

2. Выполняется при помощи процедуры SetLength(<имя_массива>,<размер_массива>)

<размер_массива> - количество элементов в нём, индекс начального элемента 0.

Установка размеров может выполняться произвольное количество раз в ходе программы.

Динамические массивы и их элементы используются так же, как и статические.

Пример: ввести в массив N чисел и вывести их сумму:

….

Type AA=array of real;

Var A:AA;

N,i:integer;

S:real;

Begin

Write(‘Введите N:’);

Readln(N);

SetLength(A,N); S:=0;

For i:=0 to N-1 do

Begin write(‘Введите число:’);

Readln(A[i]);

S:=S+A([i]);

S:=S+A[i];

End;

Write(‘Сумма=’,S);

End.

Двумерные массивы

Статические массивы:

Объявление: type<имя_типа>=array[<нач.инд.строки>..<кон.инд.строки>,<нач.инд.столбца>..<кон.инд.столбца>] of <тип_элемента>

Var <имена_массивов>:<имя_типа>;

Пример: type Mas2D=array[1..5,1..3] of real;

Var M2D:Mas2D;

Если есть необходимость совместного использования одномерных и двумерных массивов, двумерные массивы лучше объявлять так:

Type<имя_1D типа>=array[<нач.индекс>..<кон.индекс>] of <тип_элементов>;

<имя_2D типа>=array[<нач.индекс>..<кон.индекс>] of <имя_1D типа>;

Var<имена массивов>:<имя_2D типа>;

Пример: type Mas1D=Array[1..3] of real;

Mas2D=Array[1..5] of Mas1D;

Использование двумерных массивов

Использование массивов и их элементов аналогично одномерным. Кроме того для одномерных массивов и родственных им двумерных допустимо использовать операции =,< >, а также присваивание:

Var M1D:Mas1D; M2D:Mas2D;

. . . .

M2D[i]:=M1D;

If M1D=M2D[4] then. . .

Динамические массивы:

Описание:

Type<имя_2Dтипа>=array of array of <тип_элементов>;

Var <имена_массивов>:<имя_2Dтипа>;

Установка размера:

SetLength(<имя_массива>,<кол-во_строк>, <кол-во_столбцов>);

Пример: Type M2D=array of array of integer;

Var M:M2D;

. . . .

SetLength(M,5,3);

Подпрограммы

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

Основные цели создания подпрограмм:

  1. Декомпозиция программ – дробление её на замкнутые части, это позволяет упростить восприятие программы.

  1. Сокращение программного кода за счёт замены повторяющихся частей программами.

  1. Создание библиотек подпрограмм, реализующих часто используемые операции.

В Паскале существует два вида подпрограмм:

  • процедуры,

  • функции.

Процедура

Процедура – подпрограмма, ориентированная на вычисление нескольких величин или выполнение действий не связанных с расчётами (write(…), SetLength).

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

Использование собственных процедур включает в себя два этапа:

  • описание;

  • её вызов.

Структура описания процедуры:

Procedure<Имя_процедуры>(<список_формальных_параметров>);

<описание переменных, констант, типов и т.д.>

begin

<список операторов>

end;

Структура вызова процедуры:

<имя_процедуры>(<список_фактических_параметров>)

Параметры – это переменные, служащие для обмена данными между основной и подпрограммой.

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

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

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

Uses …

Procedure Who_More(A,B:real);

Begin

If A>B then

Write(‘1-е больше!’)

Else

Write(‘2-е больше!’);

End;

Begin

Read(x1,x2);

Who_More(x1,x2);

End;

Параметры делятся на параметры–значения и параметры–переменные.

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

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

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

Uses …

Procedure Who_More(A,B:real; var S:real);

Begin

If A>B then

Write(‘1-е больше!’)

Else

Write(‘2-е больше!’);

S:=A+B;

End;

Begin

Read(x1,x2);

Who_More(x1,x2,sum);

Write(sum);

End;

Списки формальных и фактических параметров должны содержать одинаковое количество параметров.

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

Названия формальных и фактических параметров обычно не совпадают.

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

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

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

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

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