
- •Содержание
- •1 Программирование линейных алгоритмов 4
- •2 Программирование ветвящихся алгоритмов 10
- •3 Программирование циклических алгоритмов 22
- •4 Работа с массивами 34
- •1 Программирование линейных алгоритмов
- •2.1.2 Словесно формульное описание задачи
- •2.1.3 Блок схема алгоритма
- •2.1.4 Реализация алгоритма на языке Pascal
- •2.1.5 Тестирование алгоритма задачи
- •2.2 Задача 4 (2.9)
- •2.2.1 Математическое описание задачи
- •2.2.2 Словесно формульное описание задачи
- •2.2.3 Блок схема алгоритма
- •2.3.2 Словесно формульное описание задачи
- •2.3.3 Блок схема алгоритма
- •2.3.4 Реализация алгоритма на языке Pascal
- •2.3.5Тестирование алгоритма задачи
- •2.4 Выводы по ветвящимся алгоритмам
- •3 Программирование циклических алгоритмов
- •3.2.3 Блок схема алгоритма
- •3.4.3 Блок схема алгоритма
- •3.4.4 Реализация алгоритма на языке Pascal
- •3.4.5 Тестирование алгоритма задачи
- •2.4 Выводы по циклическим алгоритмам
- •4 Работа с массивами
- •4.1 Задача 10 (4.2)
- •4.1.1 Математическое описание задачи
- •4.1.2 Словесно формульное описание задачи
- •4.1.3 Блок схемаалгоритма
- •4.3.3 Блок схемаалгоритма
- •4.3.4Реализация алгоритманаязыке Pascal
- •4.3.5Тестирование алгоритма задачи
- •4.4 Выводы по работе с массивами
- •Список используемой литературы
3.4.5 Тестирование алгоритма задачи
2.4 Выводы по циклическим алгоритмам
В данной теме решены четыре задачи. Суть циклических алгоритмов в том, что последовательность определенных операторов, могут выполняться более одного раза. В решенных задачах реализованы циклы с параметрами в комбинации с уже изученными ветвящимися и линейными алгоритмами. Всем задачам по данной теме дано математическое обоснование их решения, составлены словесно формульные описания, составлены блок-схемы, и реализованы программы по данным схемам в алгоритмическом языке Pascal. Проведенные тесты свидетельствую о правильности выполнения реализованных алгоритмов в каждой задаче.
4 Работа с массивами
4.1 Задача 10 (4.2)
В целочисленной последовательности есть нулевые элементы. Создать массив из номеров этих элементов.
4.1.1 Математическое описание задачи
Для реализации задачи будем использовать два массива. В первый массив случайным образом запишем Nэлементов. Выводя элементы на экран, визуально просмотрим порядковые номера элементов, которые равны нулю. Задавая цикл с параметром последовательно сравним все элементы с нулем, в случае нахождения истины присвоим каждому элементу нового массива номер элемента первого массива, и выведем данный массив на экран.
4.1.2 Словесно формульное описание задачи
1. Вывести на экран “ Дана следующая последовательность ”.
2. Выполнять цикл пункта 3 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 4.
3. Заполнить массив случайными числами, перейти к пункту 2.
4. Выполнять цикл пункта 5 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 6.
5. Вывести на экран iэлемент массива, перейти к пункту 4.
6. Вывести на экран “ Массив из номеров нулевых элементов ”.
7. Выполнять цикл с пункта 8 по 11 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 12.
8. Если iэлемент массива равен нулю, то перейти к пункту 9, иначе перейти к пункту 7.
9. Второму элементу массива с индексом jприсвоить порядковый номер первого массиваi, перейти к пункту 10.
10. Вывести на экран массив с j–тым элементом, перейти к пункту 11.
11. Вычислить j=j+1, перейти к пункту 7.
12. Конец программы.
4.1.3 Блок схемаалгоритма
4.1.4 Реализация алгоритма на языке Pascal
Program Zadacha10;
uses crt;
const N=50;
var a:array[1..N] of integer;
b:array[1..N] of integer;
i,j:integer;
Begin clrscr; j:=1;
writeln('Дана следующая последовательность:');
for i:=1 to N do
a[i]:=random(10);
for i:=1 to N do
write(a[i],' ');
writeln;
writeln('Массив из номеров нулевых элементов последовательности:');
for i:=1 to N do
begin
if a[i]=0 then begin
b[j]:=i;
write(b[j],' ');
j:=j+1;
end;
end;
readln;
End.
4.1.5 Тестирование алгоритма задачи
4.2 Задача 11 (4.8)
Последовательность действительных чисел оканчивается нулем. Найти количество членов этой последовательности.
4.2.1 Математическое описание задачи
Для реализации задачи будем использовать ввод массива вручную. Чтобы найти количество членов последовательности, оканчивающихся на нуль задействуем цикл с предусловием. При каждом сравнении элемента массива с нулем и при условии, что элемент не равен нулю будем включать счетчик подсчета элементов. Как только найдется элемент равный нулю, выйдем из цикла, и выведем на экран количество подсчитанных элементов.
4.2.2 Словесно формульное описание задачи
1. Вывести на экран “ Введите последовательность с нулевым элементом ”.
2. Выполнять цикл пункта 3 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 4.
3. Заполнить элемент массива с клавиатуры, перейти к пункту 2.
4. Если i-ый элемент массива не равен нулю выполнять пункт 5, иначе перейти к пункту 6.
5. Вычислить i=i+1 элемент, перейти к пункту 4.
6. Вывести на экран “Количество членов последовательности = i”, перейти к пункту 7.
7.
Конец программы.
4.2.3 Блок схемаалгоритма
4.2.4Реализация алгоритма на языкеPascal
Program Zadacha11;
uses crt;
const N=10;
var a:array[1..N] of integer;
i:integer;
Begin clrscr;
writeln('Введите последовательность с нулевым элементом: ');
for i:=1 to N do
readln(a[i]);
i:=1;
While (a[i]<>0) do
begin
i:=i+1;
end;
writeln('Количество членов последовательности = ',i);
readln;
End.
4.2.5Тестирование алгоритма задачи
4.3 Задача 12 (4.133)
Сформировать квадратную матрицу порядка nпо заданному образцу.
n 0 0 … 0 0 0 0 n-1 0 … 0 0 0 0 0 n-2 …0 0 0 . . . . . . 0 0 0 … 0 2 0 0 0 0 … 0 0 1
4.3.1 Математическое описание задачи
Для
реализации данной задачи будем
использовать двумерный массивa[i,j].
Согласно условию задачи, на главной
диагонали квадратной матрицы должны
быть выведены числа по законуn+1-i, гдеi–
номер строки массива при очередном
проходе цикла. В случае еслиi-ая
строка не будет равнятьсяj-му
столбцу то, будем присваивать каждому
элементу данного условия нуль. Количество
элементов в массиве примем 20, т.е.n=20.
4.3.2 Словесно формульное описание задачи
1. Вывести на экран “ Сформированная квадратная матрица ”.
2. Выполнять цикл пункта 3 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 5.
3. Выполнять цикл пункта 4 для всех jотвечающих условию 1≤j≤n, далее перейти к пункту 2.
4. Если i=jто выполнитьa[i,j]=N+1-jи иначе выполнитьa[i,j]=0, перейти к пункту 3.
5. Выполнять цикл пункта 6 для всех iотвечающих условию 1≤i≤n, далее перейти к пункту 8.
6. Выполнять цикл пункта 7 для всех jотвечающих условию 1≤j≤n, далее перейти к пункту 5.
7. Вывести на экран “ a[i,j] ”, перейти к пункту 6.
8. Конец программы.