Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika_2.docx
Скачиваний:
3
Добавлен:
25.09.2019
Размер:
344.14 Кб
Скачать

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

Оператор цикла с предусловием реализует следующую базовую конструкцию:

Формат записи: While  L do  OP; где:  While       - пока не; do    – выполнить; L     –  выражение логического типа; OP – тело цикла; оператор (простой или составной).

   

Рис. 9.3. Структурная схема оператора цикла с предусловием

 

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

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

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

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

Формат записи:         Repeat              OP        Until   L; где:  Repeat   - повторять; Until  – пока не; L     –  выражение логического типа; OP – тело цикла; оператор (простой или составной).

   

Рис. 9.4. Структурная схема оператора цикла с постусловием

 

 

Работа оператора: Выполняется оператор OP после чего вычисляется значение логического выражения L, если вычисленное значение False, то  снова выполняется оператор OP  в противном случае осуществляется выход из цикла.

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

В отличие от цикла с предусловием, в цикле с постусловием тело цикла выполняется о крайней мере один раз не зависимо от условия. В операторе цикла с постусловием  ключевые слова Repeat и  Until играют роль операторных скобок. Пример 9.4. Составить программу вычисления функции  y для заданного значения x.

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

Оператор цикла с параметром реализует следующую базовую конструкцию:

Рис. 9.5. Структурная схема оператора цикла с параметром.

Формат записи:     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.

Билет№12

Табулирование функции — это вычисление значений функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определённым шагом.

11.1. Алгоритм табулирования

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

1. до цикла задается начальное значение управляющей переменной, условием выхода из цикла служит достижение управляющей переменной конечного значения; 2. в теле цикла на каждом шаге вычисляется очередное значение функции, зависящее от управляющей переменной, затем формируется строка таблицы; 3. в конце шага цикла значение управляющей переменной (обозначим ее x) изменяется оператором вида x:=x+d;, где d -- заданный шаг по управляющей переменной. В качестве примера составим таблицу синусов в пределах от 0 до π с шагом по аргументу 0.25. Обозначим аргумент как x, значение синуса от x обозначим как y. В простейшем случае программа табулирования может выглядеть так:

var x,y:real;

begin

writeln('x':10,'sin(x)':10);

{печать заголовка таблицы до цикла}

x:=0; {начальное значение аргумента}

while x<=pi+1e-6 do begin

y:=sin(x); {вычисление функции}

writeln (x:10:2, y:10:2);

{печать строки таблицы}

x:=x+0.25; {шаг по x}

end;

end.

Билет№13

Рекуррентная формула (от лат. recurrens, родительный падеж recurrentis — возвращающийся), формула приведения, формула, сводящая вычисление n-го члена какой-либо последовательности (чаще всего числовой) к вычислению нескольких предыдущих её членов. Обычно эти члены находятся в рассматриваемой последовательности "недалеко" от её n-го члена, число их от n не зависит, а n-й член выражается через них достаточно просто. Однако возможны Р. ф. и более сложной структуры.

Рекуррентная формула — формула вида  , выражающая каждый член последовательности   через p предыдущих членов.

Вычисление конечной суммы сводится к нахождению суммы некоторого количества слагаемых

S = формула = f (1) + f (2) + …+ f (n), где i – номер слагаемого, f (i) – слагаемое с номером i.

Вычисление суммы ряда организуется в виде циклического процесса, когда при каждом прохождении цикла номер слагаемого увеличивается на единицу, а сумма – на величину i-го слагаемого, равного f (i). Т. о., si = si-1 + f (i), где si и si-1 – суммы первых i и i − 1 слагаемых соответственно. Процесс повторяется до тех пор, пока не будут просуммированы все n слагаемых.

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

1)Какая величина будет параметром цикла при вычислении конечной суммы? (номер слагаемого i)

2)Чему равны начальное и конечное значения параметра цикла? (начальное значение – 1, конечное значение – n)

3)Сколько раз необходимо повторить цикл? (n раз).

Билет№14

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

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

???

Билет№15

Одномерный массив – это массив, в котором каждый элемент определяется с помощью одного номера.

Номер элемента массива называется индексом. Массив задается с помощью слова array.

 Ввод-вывод одномерных массивов

 

Var <имя массива>: array[<диапазон изменения индекса>] of <тип элементов>;

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

Пример:

Var A: array [1..4] of real;Type MAS1=array[1..4] of real;

B: array [1..3] of integer;MAS2=array[1..3] of integer;

Var A: MAS1;

B: MAS2;

или

Type I1=1..4;

I2=1..3;

MAS1=array[I1] of real;

MAS2=array[I2] of integer;

Var A: MAS1;

B: MAS2;

Пример:

for I:=1 to 4 do for I:=1 to 4 do

Read(A[I]);илиbegin

Writeln(‘A[‘,I,’]=’);

Read(A[I])

end;

{Ввод элементов одномерного массива}

Пример:

{Вывод элементов одномерного массива}

for J:=1 to 3 dofor J:=1 to 3 do

Write(B[J]:3);Writeln(‘B[‘,J,’]=’,B[J]:3);

{в строку 12 34 56}{в столбец B[1]= 12

B[ 2]= 34

B[ 3]= 56}

 Ввод-вывод элементов одномерного массива

При вводе массива необходимо последовательно вводить 1-й, 2-й, 3-й и т.д. элементы массива, аналогичным образом поступить и при выводе. Следовательно, необходимо организовать цикл.

Блок-схемы алгоритмов ввода элементов массива изображены на рис. 3.3-3.4.

Рис 3.3 Алгоритм ввода массива с использованием цикла с предусловием

Рис. 3.4. Алгоритм ввода массива с использованием безусловного цикл

Билет№16

Вычисление суммы элементов массива

Дан массив X, состоящий из n элементов. Найти сумму элементов этого массива. Процесс накапливания суммы элементов массива достаточно прост и практически ничем не отличается от суммирования значений некоторой числовой последовательности. Переменной S присваивается значение равное нулю, затем последовательно суммируются элементы массива X. Блок-схема алгоритма расчета суммы приведена на рис. 3.5.

Рис. 3.5. Алгоритм вычисления суммы элементов массива

Билет№17

Поиска максимального элемента в массиве и его номера

Дан массив X, состоящий из n элементов. Найти максимальный элемент массива и номер, под которым он хранится в массиве.

Алгоритм решения задачи следующий. Пусть в переменной с именем Max хранится значение максимального элемента массива, а в переменной с именем Nmax - его номер. Предположим, что первый элемент массива является максимальным, и запишем его в переменную Max, а в Nmaxзанесем его номер, то есть - 1. Затем все элементы, начиная со второго, сравниваем в цикле с максимальным. Если текущий элемент массива оказывается больше максимального, то записываем его в переменную Max, а в переменную Nmax - текущее значение индекса i. Процесс определения максимального элемента в массиве приведен в таблице 3.1 и изображен при помощи блок-схемы на рис. 3.7.

Таблица 3.1. Определение максимального элемента и его номера в массиве

Номера элементов

1

2

3

4

5

6

7

Исходный массив

4

7

3

8

9

2

5

Значение переменной Max

4

7

7

8

9

9

9

Значение переменной Nmax

1

2

2

4

5

5

5

Рис. 3.7. Поиск максимального элемента и его номера в массиве

Совет. Алгоритм поиска минимального элемента в массиве будет отличаться от приведенного выше лишь тем, что в условном блоке знак поменяется с > на <.

Билет№18

Сортировка элементов в массиве

Сортировка представляет собой процесс упорядочения элементов в массиве в порядке возрастания или убывания их значений. Например, массив X из n элементов будет отсортирован в порядке возрастания значений его элементов, если X1 ≤ X2 ≤...≤ Xn, и в порядке убывания, если X1 ≥ X2 ≥ ... ≥ Xn.

Существует большое количество алгоритмов сортировки, но все они базируются на трех основных:

  • сортировка обменом;

  • сортировка выбором;

  • сортировка вставкой.

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

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

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

Итак, решим следующую задачу. Задан массив Y из n целых чисел. Расположить элементы массива в порядке возрастания их значений.

Билет№19

Program Pr22 (Input, Output);         

Объявление имени программы

Var         

Блок объявления глобальных переменных

X             : Array [1..20, 1..20] Of Real;            

Переменная X - двумерный массив действительных чисел, размер - не более 20x20

N             : Integer;              

Переменная N - число элементов массива X

S             : Real;    

Переменная S - искомая сумма элементов массива

i, j  : Integer;        

Переменные i,j - параметры циклов

 

 

Begin    

Начало тела программы

 

 

WriteLn ('PASCAL: Вычисление суммы элементов прямоугольной таблицы.');           

Формулировка цели алгоритма

Write ('Введите размерность таблицы:  N = ');          

Запрос ввода N - числа элементов массива

ReadLn (N);         

Ввод N

WriteLn ('Введите элементы таблицы:');     

Запрос ввода элементов таблицы

For i := 1 To N Do              

Цикл для i от 1 до N, где i - номер очередной строки

For j := 1 To N Do              

Цикл для j от 1 до N, где j - номер очередного столбца

Begin    

Начало тела цикла

Write ('X[', i, ',', j, '] = ');      

Вывод удобной подсказки

ReadLn (X [i,j] ); 

Ввод очередного элемента - X[i,j]

End;      

Конец тела цикла

 

 

S := 0;    

Переменной S присваиваем начальное значение 0

For i := 1 To N Do              

Цикл для i от 1 до N, где i - номер очередной строки

For j := 1 To N Do              

Цикл для j от 1 до N, где j - номер очередного столбца

S := S + X [i, j];    

Прибавляем к S очередной элемент массива X - X[i,j]

 

 

WriteLn ('Cумма:  S = ', s: 6: 1);      

Вывод полученного значения суммы

ReadLn;

Ожидание нажатия клавиши Enter для завершения

End.       

Конец программы.

Билет№20

Нахождение наибольшего элемента в заданной строке матрицы

Пусть задана матрица А из действительных чисел размера 3х4. Найти наибольший элемент во второй строке данной матрицы.

Программа решения задачи:

Program max_st;

Type Matr=array[1..3,1..4] of real;

Var max:real;

a:Matr;

i,j:integer;

begin

for i:=1 to 3 do

for j:=1 to 4 do

begin writeln(‘Введите элемент а[‘,i,',',j,']');

readln(a[i,j]);

end;

max:=a[2,1];

for j:=2 to 4 do

if max<a[2,j] then max:=a[2,j];

writeln(‘Наибольший элемент второй строки=',max:8:2);

end.

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

Билет№21

Файл - это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. Файлы предназначены только для хранения информации, а обработка этой информации осуществляется  программами. Использование файлов целесообразно в случае:

  1. долговременного хранения данных ;

  2. доступа различных программ к одним и тем же данным;

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

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

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

Работа с файлами выполняется следующими процедурами:

Assign – устанавливает связь между именем файла в программе (файловой переменной ) и физическим именем файла, принятым в ОС. Reset  -  открывает существующий файл для чтения. Rewrite – создает и открывает новый файл для записи на внеш нем устройстве (если файл ранее существовал, вся предыдущая информация из него стирается). Close  -  закрывает открытый файл.

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