- •Лабораторная работа №1
- •Программирование линейных алгоритмов
- •Общие сведения:
- •Контрольные вопросы:
- •Задачи:
- •Задачи повышенной сложности
- •Составим схему алгоритма
- •Контрольные вопросы
- •Задачи повышенной трудности
- •Лабораторная работа №3 Программирование циклических алгоритмов
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Задачки на смекалку
- •Задачи повышенной сложности
- •Контрольные вопросы
- •Задачи повышенной сложности
- •Лабораторная работа 5
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 6 Программирование с использованием множеств
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 7 Программирование с использованием типа запись
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 8 Программирование с использованием процедур и функций
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Лабораторная работа 9 Работа с файлами
- •Общие сведения
- •Контрольные вопросы
- •Задания
- •Задачи повышенной сложности
- •Задания:
- •Задачи повышенной сложности
- •Контрольные вопросы
- •Варианты заданий
- •Контрольные вопросы
- •Варианты заданий:
- •Лабораторная работа №3 Сортировка методом прямого включения
- •Общие сведения
- •Контрольное задание
- •Варианты заданий
- •Лабораторная работа №4 Бинарный поиск
- •Общие сведения
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №5 Рекурсия
- •Общие сведения:
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №6 Линейные списки
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №7 Стек
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Варианты заданий
- •Лабораторная работа №8 Двоичные деревья
- •Общие сведения
- •Примеры
- •Контрольные вопросы
- •Приложения
- •1. Сообщения об ошибках во время компиляции
- •2. Сообщения об ошибках вовремя выполнения программы
Контрольные вопросы
Как записывается и как работает оператор FOR?
Для организации каких циклов применим оператор FOR?
В чем отличие оператора WHILE от оператора REPEAT?
Как программируются циклические алгоритмы с явно заданным числом повторений цикла?
Как программируются циклические алгоритмы с заранее неизвестным числом повторений цикла?
Напишите оператор цикла, который не выполняется ни разу.
Напишите оператор цикла, который выполняется неограниченное число раз.
Замените оператор "Repeat A Until B" равносильным фрагментом программы с оператором While.
Задачи
Вычисление выражений: Дано натуральное n. Вычислить: 1. ; 2. ; Дано действительное число х, натуральное число n. Вычислить: 3.x ( x - n )( x - 2 n )( x - 3 n )…( x - n2 ); 4. ; 5. ; Дано натуральное n. Вычиcлить: 6. ; 7. ;
Вычислить приближенно значение бесконечной суммы (справа от каждой суммы дается ее точное значение, с которым можно сравнить полученный ответ): 8. = ; 9. = ; 10. = ;
Нужное приближение считается полученным, если вычислена сум-+\.ма нескольких первых слагаемых, и очередное слагаемое оказалось по модулю меньше данного положительного числа e.
Задачки на смекалку
Найти все двузначные числа, сумма цифр которых не меняется при умножении числа на 2,3,4,5,6,7,8,9.
Найти все трехзначные числа, сумма цифр которых равна данному целому числу.
Найти все трехзначные числа, средняя цифра которых равна сумме первой и второй цифр.
Найти все трехзначные числа, которые можно представить разностью между квадратом числа, образованного первыми двумя цифрами и квадратом третьей цифры.
Найти все двузначные числа, сумма квадратов цифр которых делится на 17.
Найти все трехзначные числа, представимые в виде сумм факториалов своих цифр.
Найти двузначное число, обладающее тем свойством, что куб суммы его цифр равен квадрату самого числа.
Найти двузначное число, равное утроенному произведению его цифр.
В каких двузначных числах удвоенная сумма цифр равна их произведению?
Можно ли заданное натуральное число М представить в виде суммы квадратов двух натуральных чисел? Написать программу решения этой задачи.
Задачи повышенной сложности
Определить, является ли заданное число совершенным , т.е. равным сумме всех своих (положительных) делителей, кроме самого этого числа (например, число 6 совершенно: 6=1+2+3).
Дано натуральное k. Напечатать k-ю цифру последовательности 1234567891011121314..., в которой выписаны подряд все натуральные числа.
Дано натуральное k. Напечатать k-ю цифру последовательности 149162536..., в которой выписаны подряд квадраты всех натуральных чисел.
Дано натуральное k. Напечатать k-ю цифру последовательности 1123581321..., в которой выписаны подряд все числа Фибоначчи.
Вычислить , многократно применяя итерационную формулу . Начальное приближение выбрать самостоятельно. Прекратить вычисления, если разность двух последовательных итераций станет меньше, чем произведение последнего приближения на .
Лабораторная работа 4
Программирование с использованием массивов
Теоретический материал |
Справочник по процедурам и функциям |
Цель работы: научиться правильно описывать различные массивы, уметь инициализировать массивы, распечатывать содержимое массива; научится решать задачи на использование массивов.
Общие сведения:
Массив - это структурированный тип данных, который используется для описания упорядоченной совокупности фиксированного числа элементов одного типа, имеющих общее имя. Для обозначения элементов массива используются имя переменной-массива и индекс.
Перед выполнением работы необходимо изучить правила описания и использования переменных типа массив, типизированных констант типа массив.
Примеры:
Пример1: Дан двумерный массив. В каждой строке все его элементы, не равные нулю, переписать (сохраняя порядок) в начало строки, а нулевые элементы - в конец массива. Новый массив не заводить. Этапы решения задачи: 1. Суть одного из алгоритмов решения данной задачи состоит в том чтобы "просматривать" массив построчно и находить в каждой строке пару (0:число), а затем менять их местами между собой и так до тех пор пока в строке таких пар не окажется. 2. Напишем программу на псевдо паскале:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
<ввод размерности массива m*n>
<заполнение ячеек массива>
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
<поменять их местами>
flag:= false;
end;
until flag;
<Печать массива>
readln;
end.
3.Составим блок схему алгоритма
Детализируем блок "Упорядочиваем 1-ю строку"
Блок схема алгоритма целиком:
4.Приведем программу на языке Паскаль:
program example1;
var
V:array[1..100,1..100] of integer;
m,n, i,j, c: integer;
flag: boolean;
begin
write('Введите размерность массива m-n> '); readln(m,n);
for i:= 1 to m do
for j:= 1 to n do begin
write('V[',i,',',j,']= '); readln(V[i,j]);
end;
for i:=1 to m do
repeat
flag:= true;
for j:=1 to n-1 do
if (v[i,j]=0) and (v[i,j+1]<>0) then begin
c:=v[i,j]; v[i,j]:=v[i,j+1]; v[i,j+1]:=c;
flag:= false;
end;
until flag;
for i:= 1 to m do begin
for j:= 1 to n do write(V[i,j]:2);
writeln
end;
readln;
end.