Лабораторная работа №3. Цель работы: Научиться использовать цикл с параметром.

advertisement
Лабораторная работа №3.
Цикл с параметром.
Цель работы: Научиться использовать цикл с параметром.
Задание: Имеется серия измерений элементов треугольника. Группы элементов пронумерованы. В
серии в произвольном порядке могут встречаться такие группы элементов треугольника:
1) основание и высота;
2) три стороны.
Разработать программу, которая запрашивает номер группы элементов, вводит соответствующие
элементы и вычисляет площадь треугольника.
Решение:
Var a, b, c, h, p, s, n: real;
Begin
Write (‘введи № группы, n=’);
Readln (n);
Else n=1, then
Begin
Writeln (‘Введите длины сторон треугольника:’);
Write (‘a=’); readln (A);
Write (‘b=’); readln (B);
Write (‘c=’); readln (C);
If (A>0) and (B>0) and (C>0) and (A+B>C) and (B+C>A) and (B+C>A);
Then begin
P: = (A+B+C)/2;
S: = Sqrt (P*(P-A)*(P-B)*(P-C));
Writeln (‘Площадь =’, S);
End;
Else writeln (‘Неверные исходные данные’);
End;
Else
Begin
Writeln (‘Введите длины основания и высоты:’);
Write (‘a=’); readln (A);
Write (‘h=’); readln (H);
If (A>0) and (H>0)
Then
S: = (A*H)/2;
Writeln (‘Площадь =’, S);
End; Else writeln (‘Неверные исходные данные’); End; End.
Контрольные вопросы:
1) Структура циклического алгоритма?
Присваивание
переменным начальных
значений
Рабочий блок
(вычисление результатов)
Изменение
переменных
Проверка
Лабораторная работа №4.
Процедуры и функции.
Цель работы: научиться использовать процедуры и функции.
Задание: Составить программу для нахождения наименьшего нечётного делителя k для любого
заданного натурального числа.
Решение: var n,k:integer;
begin
write('Введите n ');
readln(n);
for k:=3 to n do
if k mod 2=1 then if n mod k=0 then break;
writeln('k=',k)
end.
Контрольные вопросы:
2)
3)
4)
5)
Что такое подпрограммы?
Объявление функций.
Объявление процедур.
Формальные и фактические параметры.
Ответы:
1) Подпрограмма – это небольшая программа, которая вызывается из тела программы.
2) <Объявление функции>::=<Заголовок функции>;<Тело функции>;
<Заголовок функции >::= function <Идентификатор><Список формальных параметров>:<Тип
результата>
<Тип результата>::=<Идентификатор типа>
<Тело функции>::=<Раздел локальных объявлений><Составной оператор>
3) <Объявление процедуры>::=<Заголовок процедуры>;<Тело процедуры>;
<Заголовок процедуры>::= procedure <Идентификатор><Список формальных параметров>
<Тело процедуры>::=<Раздел локальных объявлений><Составной оператор>
4) Объявление процедуры и функции содержит список формальных параметров. Каждый параметр
из списка формальных параметров является локальным по отношению к процедуре и функции.
Формальные и фактические параметры не должны совпадать.
Лабораторная работа №5.
Рекурсивные процедуры и функции.
Цель работы: научиться использовать рекурсивные процедуры и функции.
Задание: Даны натуральные числа n и k, n>1. Напечатать k десятичных знаков числа 1/n.
Решение: var k,n:integer;
begin
writeln('Введите n,k ');
read(n,k);
writeln('1/n=',1/n:5:k)
end.
Исходные данные и результат:
n
n:=3
n:=4
n:=21
n:=15
n:=11
k
k:=3
k:=4
k:=3
k:=3
k:=4
Результат
0,333
0,2500
0,048
0,067
0,0909
Контрольные вопросы:
1)
2)
3)
4)
Что такое подпрограммы?
Объявление функций.
Объявление процедур.
Что такое рекурсия?
Ответы:
1) Подпрограмма – это небольшая программа, которая вызывается из тела программы.
2) <Объявление функции>::=<Заголовок функции>;<Тело функции>;
<Заголовок функции >::= function <Идентификатор><Список формальных параметров>:<Тип
результата>
<Тип результата>::=<Идентификатор типа>
<Тело функции>::=<Раздел локальных объявлений><Составной оператор>
3) <Объявление процедуры>::=<Заголовок процедуры>;<Тело процедуры>;
<Заголовок процедуры>::= procedure <Идентификатор><Список формальных параметров>
<Тело процедуры>::=<Раздел локальных объявлений><Составной оператор>
4) Рекурсия – это обращение к подпрограмме из тела этой подпрограммы
Лабораторная работа №6.
Одномерные массивы.
Цель работы: научиться заполнять и обрабатывать одномерные массивы
Задание: В массив А [N] занесены натуральные числа. Найти сумму тех элементов, которые кратны
данному К.
Решение:
Var a: array [1...10] of integer; s, n, i, k: integer;
Begin
S: = 0
Writeln (‘введи размерность массива, n’);
Readln (n);
Writeln (‘введи k’);
Readln (k);
For i: =1 to n readln (A[i);
For i: =1 to n do
If A[i] mod (k) = 0 then S: = S+A[i];
Writeln (‘S=’, S);
Readln;
Ehd.
Исходные данные и результат:
К=2
A={1;2;3;4;5;6;7;8;9;10}
S=30
Контрольные вопросы:
1)
2)
3)
4)
Что такое одномерный массив. Синтаксис.
Какие бывают действия над массивами?
Как обрабатываются массивы?
Как производится сортировка массивов?
Ответы:
1) Одномерный массив – это структурированный тип данных с элементами одного типа, имеющими
один индекс.
Общий синтаксис объявления типа N-мерный массив:
<имя>=array [<тип_индекса1>..<тип_индексаN>] of <тип_элемента>
2) Для одномерных массивов символов можно использовать операции сравнения. Одному массиву
можно присвоить значения другого, но только если они идентичных типов.
3) Обрабатываются одномерные массивы в цикле по индексу.
4) Существует несколько способов сортировки массивов. В большинстве способов используются
вложенные циклы. Один из методов называется методом пузырька.
Лабораторная работа №7.
Двумерные массивы.
Цель работы: научиться заполнять и обрабатывать двумерные массивы
Задание: Сформировать квадратную матрицу порядка n по заданному образцу.
1
n
1
n
:
n
2
n-1
2
n-1
:
n-1
3
n-2
3
n-2
:
n-2
…
…
…
…
…
…
n
1
n
1
n
1
Решение:
Var m: array [1...100] of integer; g, n, i, k: integer;
Begin
Writeln (‘введи размерность массива, n’);
Readln (n);
Begin
If (n) mod (2) = 0 then
For i: =1 to n do
Begin
For g: =1 to n do
Begin
If (i) mod (2) = 1 then write (g);
If (i) mod (2) = 0 then write (n-g+1);
Ehd;
Writeln; end; end; end.
Контрольные вопросы:
1)
2)
3)
4)
Что такое двумерный массив?
Описание двумерного массива?
Многомерные массивы.
Как происходит обработка многомерных массивов?
Ответы:
1) Двумерный массив – это структурированный тип данных с элементами одного типа, имеющими
два индекса.
2) <имя>=array [<тип_индекса1>..<тип_индексаN>,<тип_индекса1>..<тип_индексаN>] of
<тип_элемента>
3) Многомерный массив – это структурированный тип данных с элементами одного типа,
имеющими два и более индексов.
4) Обработка многомерных массивов происходит в несколько вложенных циклов.
Лабораторная работа №8.
Множества.
Цель работы: научиться заполнять и обрабатывать множества
Задание: Дан текст на русском языке. Напечатать в алфавитном порядке все гласные буквы, которые
не входят более чем в одно слово.
Решение: type a set of ‘а’..’я’
var s:string;
begin
write(‘Наберите текст’);
readln (s);
writeln(‘а е ё и о у ы э ю я’)
end.
Исходные данные:
S:=’ Дан текст на русском языке. Напечатать в алфавитном порядке все гласные буквы, которые не
входят более чем в одно слово’;
Результат: а е ё и о у ы э ю я
Контрольные вопросы:
1)
2)
3)
4)
Что такое множество?
Какие бывают операции над множествами?
Описание и синтаксис множеств.
Приведите примеры множеств.
Ответы:
1) Множество – это структурированный тип данных, диапазон значений которого представляет
собой множество всевозможных сочетаний объектов заданного порядкового типа.
2) Возможны следующие операции над множествами: объединение, разность, пересечение,
сравнение.
3) <Тип множество>::= set of <Порядковый тип>
4) type
Number = set of ‘0’..’9’;
Digit = set of 0..9;
Oper = set of (Plus, Minus, Multiply, Divide);
Лабораторная работа №9.
Файлы.
Цель работы: научиться управлять вводом и выводом
Задание: Дан файл, содержащий текст на русском языке. Подсчитать количество слов,
начинающихся на одну и ту же букву.
Решение: var
f : text; s: String; n: integer;
const
Sum: LongInt = 0;
begin
Write('Имя файла: '); Readln(s);
assign(f,s); Reset (f);
while not EOF(f) do
begin
ReadLn(f,s); inc(Sum, Length(s))
end ; Close(f); end.
Исходные данные:
S:=’ Дан файл, содержащий текст на русском языке. Подсчитать количество слов, начинающихся на
одну и ту же букву’
Результат: n:=2
Контрольные вопросы:
1)
2)
3)
4)
Какие существуют специальные операции чтения и записи для текстовых файлов?
К каким файлам Pascal обеспечивает доступ?
Для чего используются нетипизированные файлы
Какие есть стандартные файловые переменные?
Ответы:
1) Для текстовых файлов существует специальный вид чтения и записи Read и Write.
2) К текстовым, типизированным и нетипизированным файлам.
3) Нетипизированные файлы обычно используются для обеспечения прямого доступа к любому
файлу на диске, независимо от его типа и структуры.
4) Input, Output
Лабораторная работа №10.
Модули.
Цель работы: научиться писать модули.
Задание: Дан массив чисел, записанных в p-ичной системе счисления. Отсортировать его в порядке
убывания. Результат выдать в p-ичной и десятичной системах счисления.
Решение: const n=3;
var i,j,m:integer; a: array [1..n,1..n] of real;
begin
m:=0;
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:=sin((sqr(i)-sqr(j))/n);
if a[i,j]>0 then m:=m+1;
writeln (a[i,j]);
end;
writeln('m=',m)
end.
Исходные данные:
P:=10
A:=10,8,9,7,5,6,1,3,2,4.
Результат:
A:=1,2,3,4,5,6,7,8,9,10
Контрольные вопросы:
1)
2)
3)
4)
Синтаксис модулей.
Заголовок модуля.
Интерфейсный раздел.
Раздел реализации.
Ответы:
1) <Модуль>::=<Заголовок модуля>;<Интерфейсный раздел><Раздел реализации><Раздел
инициализации>.
2) <Заголовок модуля>::=unit<идентификатор модуля>.
3) В этом разделе объявляются те константы, типы, переменные, подпрограммы, которые являются
глобальными.
4) В этом разделе приведены описания всех глобальных процедур и функций.
Download