Лабораторная работа №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) В этом разделе приведены описания всех глобальных процедур и функций.