- •Министерство образования Российской Федерации Ярославский государственный педагогический университет имени к.Д. Ушинского Лабораторный практикум по языку программирования Pascal Ярославль 2004
- •Оглавление
- •Лабораторные работы Лабораторная работа №1Знакомство с клавиатурой. Организация работы в среде Турбопаскаль.
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №2Команды присваивания, ввода и вывода. Составление простейших программ на языке Турбопаскаль.
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №3Команды ветвления и выбора на языке Турбопаскаль
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №4Команды ветвления и повторения на языке Паскаль
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №6Циклы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задания
- •Лабораторная работа №7Одномерные массивы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задачи.
- •Лабораторная работа №8Двумерные массивы
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задачи.
- •Лабораторная работа №9Работа со строковыми величинами
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Дополнительные задания
- •Лабораторная работа №10Обработка литерных величин на языке Турбопаскаль
- •Дополнительные задания
- •Задание 5
- •Лабораторная работа №12Работа с одномерными и двумерными массивами
- •Задание 1
- •Задание 2
- •Лабораторная работа №13Многочлены
- •Задание 1
- •Задание 2
- •Задание 3
- •Задание 4
- •Задание 5
- •Лабораторная работа №14Линейная комбинация векторов
- •Задание 1
- •Задания повышенной трудности
- •Лабораторная работа №15Скалярное произведение векторов.
- •Лабораторная работа №16 Простейшие графические операторы
- •Задание 5
- •Задание 6
- •Дополнительные задания.
- •Лабораторная работа n 19 Работа с множествами Задание 1
- •Задание 2-3
- •Задание 4
- •Задание 5
- •Лабораторная работа № 20 Работа с записями
- •Дополнительные залания
- •Задание 3
- •Задание 5
- •Задание 6 (дополнительный балл)
- •Дополнительное задание (до 3 баллов)
- •Задание 5
- •Примерные вопросы к собеседованиям Величина. Команды присваивания, ветвления и выбора.
- •Массивы
- •Литерные переменные
- •Процедуры и функции
- •Графика
- •Датчик случайных величин
- •Множества
- •Динамическая память
- •Деревья
- •Тексты программ для выполнения лабораторных работ Файл primer1.Pas
- •Файл lab10.Pas
- •Файл lab11.Pas
- •Файл List1.Pas
- •Файл List2.Pas
- •Файл lab5.Pas
- •Файл lab6.Pas
- •Примерный список индивидуальных задач
Деревья
Какую структуру называют деревом?
Приведите примеры деревьев.
Назовите различные способы графического представления древовидной структуры.
Как с помощью массивов можно представить дерево?
Какая связь существует между числом вершин и числом ребер дерева?
Какое дерево называется упорядоченным?
Что называется глубиной или высотой дерева?
Что называется степенью дерева (вершины)?
Приведите пример двоичного дерева.
Какое дерево называется идеально сбалансированным?
Изобразите идеально сбалансированное дерево из 10 (13) вершин.
Напишите процедуры:
печати элементов дерева;
поиска по дереву элемента B (результат типа boolean);
поиска в упорядоченном дереве элемента B (результат типа boolean);
вставки в упорядоченное дерево элемента Y;
создания из массива упорядоченного дерева;
замены всех отрицательных элементов дерева на их модуль;
строящую дерево- копию исходного непустого дерева;
нахождения наибольшего элемента дерева.
Напишите функции:
подсчета количества вершин дерева;
подсчета числа вхождений элемента E в дерево;
вычисления суммы элементов дерева;
определения глубины непустого дерева;
вычисления среднего арифметического элементов дерева.
В следующих программах найдите смысловые ошибки и укажите реакцию машины на них, если есть описание: type p=^element; element=record f: integer; left, right: p end;
печать дерева
procedure print (x: p; h: integer); var i: integer; begin print (x^.left, h+1); for i:=1 to h*10 do write (“ ”); writeln (x^.f); writeln; print (x^.right, h+1) end.
поиск элемента по дереву
procedure search (x: p; B: integer; var A: boolean); begin if x^.f=B then A:=true else while x<>nil do begin search (x^.left, B, A); search (x^.right, B, A) end; A:=false end.
создание дерева-копии
procedure copy (x: p; var y: p); begin if x<>nil then begin new (y); y^.f:=x^.f; copy (x^.left, y^.left); copy (x^.right, y^.right) end end.
нахождение глубины дерева
function depth (x: p): integer; var h1,h2: integer; begin if x=nil then depth:=-1 else begin h1:=1+ depth (x^.left); h2:=1+ depth (x^.right); if h1>h2 then depth:=h1 else depth:=h2 end end.
создание из массива упорядоченного дерева
procedure search1 (k: integer; var x: p); var i: integer; begin i:=1; while i<>n do begin if x=nil then begin new (x); x^.f:=A[i]; x^.left:=nil; x^.right:=nil end else if A[i]<x^.f then search1 (A[i], x^.left) else if A[i]>x^.f then search1 (A[i], x^.right); i:=i+1 end end.
вычисление среднего арифметического
function sr (x: p): real; var n: integer; S: real; begin if x=nil then sr:=0 else S:=0; n:=1; while x<>nil do begin S:=S*(n-1)/n+x^.f/n; n:=n+1; sr (x^.left); sr (x^.right) end end.
нахождение наибольшего элемента
procedure max (x: p; var M: integer); begin if x=nil then write (“наибольшего нет”) else M:=x^.f; while x<>nil do max (x^.left, M); if x^.f>M then M:=x^.f; max (x^.right, M) end end.