bigpo.ru
добавить свой файл
1
Лабораторная работа №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.


Контрольные вопросы:


  1. Что такое подпрограммы?

  2. Объявление функций.

  3. Объявление процедур.

  4. Формальные и фактические параметры.


Ответы:


  1. Подпрограмма – это небольшая программа, которая вызывается из тела программы.

  2. <Объявление функции>::=<Заголовок функции>;<Тело функции>;

<Заголовок функции >::= function <Идентификатор><Список формальных параметров>:<Тип результата>

<Тип результата>::=<Идентификатор типа>

<Тело функции>::=<Раздел локальных объявлений><Составной оператор>

  1. <Объявление процедуры>::=<Заголовок процедуры>;<Тело процедуры>;

<Заголовок процедуры>::= procedure <Идентификатор><Список формальных параметров>

<Тело процедуры>::=<Раздел локальных объявлений><Составной оператор>

  1. Объявление процедуры и функции содержит список формальных параметров. Каждый параметр из списка формальных параметров является локальным по отношению к процедуре и функции. Формальные и фактические параметры не должны совпадать.



Лабораторная работа №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

k

Результат

n:=3

k:=3

0,333

n:=4

k:=4

0,2500

n:=21

k:=3

0,048

n:=15

k:=3

0,067

n:=11

k:=4

0,0909



Контрольные вопросы:


  1. Что такое подпрограммы?

  2. Объявление функций.

  3. Объявление процедур.

  4. Что такое рекурсия?


Ответы:


  1. Подпрограмма – это небольшая программа, которая вызывается из тела программы.

  2. <Объявление функции>::=<Заголовок функции>;<Тело функции>;

<Заголовок функции >::= function <Идентификатор><Список формальных параметров>:<Тип результата>

<Тип результата>::=<Идентификатор типа>

<Тело функции>::=<Раздел локальных объявлений><Составной оператор>

  1. <Объявление процедуры>::=<Заголовок процедуры>;<Тело процедуры>;

<Заголовок процедуры>::= procedure <Идентификатор><Список формальных параметров>

<Тело процедуры>::=<Раздел локальных объявлений><Составной оператор>

  1. Рекурсия – это обращение к подпрограмме из тела этой подпрограммы



Лабораторная работа №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 <тип_элемента>

  1. Для одномерных массивов символов можно использовать операции сравнения. Одному массиву можно присвоить значения другого, но только если они идентичных типов.

  2. Обрабатываются одномерные массивы в цикле по индексу.

  3. Существует несколько способов сортировки массивов. В большинстве способов используются вложенные циклы. Один из методов называется методом пузырька.



Лабораторная работа №7.

Двумерные массивы.


Цель работы: научиться заполнять и обрабатывать двумерные массивы


Задание: Сформировать квадратную матрицу порядка n по заданному образцу.


1 2 3 … n

n n-1 n-2 … 1

1 2 3 … n

n n-1 n-2 … 1

: : : … n

n n-1 n-2 … 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. К каким файлам Pascal обеспечивает доступ?

  3. Для чего используются нетипизированные файлы

  4. Какие есть стандартные файловые переменные?


Ответы:


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