Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаб.работы по программированию

.pdf
Скачиваний:
30
Добавлен:
21.05.2015
Размер:
1.07 Mб
Скачать

Вариант 1.

Используя продпрограммы решить квадратное уравнение: ax2+bx+c=0 (найти действительные корни).

Вариант 2.

Дана точка А(х,у). Определить с помощью подпрограммы какой из координатных четвертей она принадлежит.

Вариант 3.

Определить с помощью подпрограммы, какая из трех точек A(x1,y1), B(x2,y2), C(x3,y3) ближе к началу координат.

Вариант 4.

Если треугольник со сторонами a, b, c является равнобедренным, найти его площадь, в противном случае найти его периметр. Решение оформить с помощью подпрограмм.

Лабораторная работа 6. Массивы

Массив – упорядоченный набор однотипных значений – компонент массива. Тип компонент называется базовым типом массива.

Описание массивов

VAR <имя переменной> : ARRAY [<индексы>] OF <type>;

<type> - базовый тип.

Примеры описания массивов

Var a : array[1..10] of integer; - последовательность десяти целых чисел

Обращение к элементам массива

i := 1; A[i] – i-й элемент из массива А;

A[i+1] – следующий за i элемент массива А;

A[1] – первый элемент из массива А.

Приведем пример:

© ИМПИ ОГПУ

1 2 3 4 5

4 3 2 1 0

Var a : array [1..5] of integer; A[2] = 3;

Алгоритм «пузырьковой» сортировки линейного массива по возрастанию.

Алгоритм состоит в повторяющихся проходах по сортируемому массиву. За каждый проход элементы последовательно сравниваются попарно и, если порядок в паре неверный, выполняется обмен элементов. Проходы по массиву повторяются до тех пор, пока на очередном проходе не окажется, что обмены больше не нужны, что означает — массив отсортирован. При проходе алгоритма, элемент, стоящий не на своём месте, «всплывает» до нужной позиции как пузырёк в воде, отсюда и название алгоритма.

Procedure Sort_Mas (var a : mas); var i, j, temp : integer;

begin

for i:=1 to n do for j:=1 to n-i do

if a[j]>a[j+1] then begin

Temp := a[j]; a[j] := a[j+1]; a[j+1] := Temp;

end;

end;

 

 

 

 

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

 

 

 

 

Приведем пример описания:

 

 

 

 

1

1

2

3

4

3

2

1

0

2

-2

3

1

7

3

0

4

6

7

Var a : array [1..3, 1..4] of integer;

A[2,2] = 3;

Задания для самостоятельной работы

Вариант 1.

1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы на 5 и снова вывести получившийся массив на экран.

©ИМПИ ОГПУ

2.Найти элементы массива равные 10 и вывести их индексы.

3.В двумерном массиве найти количество четных элементов.

4.Вывести массив следующего вида. Размерность произвольная.

1

1

1

1

1

0

0

1

1

0

1

1

1

1

1

Вариант 2.

1.Заполнить массив числами, введенными с клавиатуры, вывести этот массив, увеличить все элементы в два раза и снова вывести получившийся массив на экран.

2.Найти элементы массива меньшие 0 и вывести их индексы.

3.В двумерном массиве найти сумму нечетных элементов.

4.Вывести массив следующего вида. Размерность произвольная.

1

0

0

0

0

2

0

0

0

0

0

0

0

0

N

Вариант 3.

1.Заполнить массив случайными числами, вывести этот массив, уменьшить все элементы в два раза и снова вывести получившийся массив на экран.

2.Найти элементы массива не равные четным числам и вывести их индексы.

3.В двумерном массиве найти сумму элементов всех диагоналей матрицы

4.Вывести массив следующего вида. Размерность произвольная.

1

2

2

2

3

1

2

2

3

3

2

3

3

3

1

© ИМПИ ОГПУ

Вариант 4.

1.Заполнить массив случайными числами, вывести этот массив, уменьшить все элементы в три раза и снова вывести получившийся массив на экран.

2.Найти элементы массива не равные 10 и вывести их индексы.

3.В двумерном массиве найти сумму элементов главной диагонали.

4.Вывести массив следующего вида. Размерность произвольная.

0

0

0

0

0

1

0

0

0

0

0

0

0

0

N-1

Лабораторная работа 7. Множества

Множество – любой набор объектов, который понимается как единое целое. Объекты – элементы множества. Множества равны, если они содержат одни и те же элементы.

Множество в языке программирования – набор элементов базового типа.

Базовый тип должен быть порядковым типом. Количество значений базового типа не может превышать 256. Номера значений 0..255.

Задания для самостоятельной работы

Пример. Из двух первых сотен натуральных чисел найти все простые.

program

primer;

 

const n

=

200;

of 2..n;

type mnog

= set

var pq,

qq : mnog;

p, k : 2..n;

 

begin

[2..n];

{ Множество проверяемых чисел }

qq :=

pq :=

[];

{ Множество найденных простых чисел }

p := 2;

 

{ Первое простое число }

repeat

 

not(p

in qq) do p := p+1;{ Ищем следующее простое }

while

pq :=

pq+[p]; { Добавляем его к уже найденным }

k := p; {Удаляем из мн-ва проверяемых все числа, кратные

найденному простому:}

repeat

qq :=

qq-[k]; k := k+p until k>n;

until

qq=[];

 

{ Печатаем простые числа }

© ИМПИ ОГПУ

for k := 2 to n do

if k in pq then write(k,' '); writeln

end.

1.

Изучите

работу программы.

Протестируйте

программу, изменяя

значения константы N. Измените программу так, чтобы она выводила все

составные числа из интервала [2..N] в порядке убывания.

 

2.

Дана непустая

последовательность символов.

Требуется построить и

напечатать множество,

элементами

которого являются встречающиеся в

последовательности:

 

 

 

Вариант 1.

Буквы от "Т" до "Х" и знаки препинания.

Вариант 2.

Цифры от "5" до "9" и знаки арифметических операций.

Вариант 3.

Знаки арифметических операций и знаки препинания.

Вариант 4.

Цифры и знаки арифметических операций.

Лабораторная работа 8. Комбинированный тип данных (Запись)

Комбинированный тип данных применяются при описании сложных объектов, обладающих различными свойствами при создании баз данных.

Запись – структура данных, состоящая из фиксированного числа компонентов, называемых полями. Поля могут быть разных типов. Поэтому записи – наиболее общий и гибкий тип данных. Записи, как и массивы, используются для описания последовательности величин.

Задания для самостоятельной работы

Вариант 1.

1.Создать БД своих друзей (5 записей), состоящую из полей Name (имя), Surname (фамилия), Old (возраст), ColorHair (цвет волос). Вывести тех из них, которые старше Вас.

©ИМПИ ОГПУ

2.Создать БД своих одногруппников (5 записей), содержащую поля Имя, Фамилия, Возраст, Город. Вывести тех из них:

a)которые Ваши тезки;

b)которые живут с Вами в одном городе.

Вариант 2.

1.Создать БД своих друзей (5 записей), состоящую из полей Name (имя), Surname (фамилия), Old (возраст), ColorHair (цвет волос). Вывести брюнетов.

2.Создать БД своих одногруппников (5 записей), содержащую поля Имя, Фамилия, Число, Месяц, Год рождения. Вывести тех из них:

a)которые родились в 1989 году;

b)которые родились в январе.

Вариант 3.

1.Создать БД своих друзей (5 записей), состоящую из полей Name (имя), Surname (фамилия), Old (возраст), ColorHair (цвет волос). Вывести имена Ивановых.

2.Создать БД своих родственников (5 записей), содержащую поля Имя, Фамилия, Возраст, Город. Вывести тех из них:

a)которые младше Вас;

b)которые живут на в Вашем городе.

Вариант 4.

1.Создать БД своих друзей (5 записей), состоящую из полей Name (имя), Surname (фамилия), Old (возраст), ColorHair (цвет волос). Вывести фамилии Владимиров.

2.Создать БД своих одногруппников (5 записей), содержащую поля Имя, Фамилия, Возраст, Сестры, Братья. Вывести тех из них:

a)у которых есть сестры;

b)у которых нет братьев.

Лабораторная работа 9. Работа с файлами

Файл – именованная область внешней памяти компьютера. В среде PascalABC.Net есть возможность работы с файлами, что имеет ряд преимуществ:

с помощью файлов можно ввести большой объем данных;

файл, созданный одной программой, может использоваться другой программой.

©ИМПИ ОГПУ

Задания для самостоятельной работы

Вариант 1.

1.Создать файл INT.DAT, состоящий из целых чисел. Написать программу, находящую число элементов в файле.

2.Написать программу INP.PAS, осуществляющую ввод данных в файл. Причем, если файл данных не существует, то эта программа должна создать его, а если существует, то дописывать новые данные в конец файла.

Вариант 2.

1.Создать файл INT.DAT, состоящий из целых чисел. Написать программу, находящую наименьший элемент файла.

2.Записать в виде текстового файла таблицу синусов числа [0, ] с шагом h.

Вариант 3.

1.Создать файл INT.DAT, состоящий из целых чисел. Написать программу, находящую сумму его элементов.

2.Написать программу INP.PAS, осуществляющую ввод данных о ваших одногруппниках. Причем, если файл данных не существует, то эта программа должна создать его, а если существует, то дописывать новые данные в конец файла.

Вариант 4.

1.Создать файл INT.DAT, состоящий из целых чисел. Написать программу, находящую наименьший элемент файла.

2.Создать файл INP.PAS, содержащий текстовую информацию. Дописать файл данными о себе.

Лабораторная работа 10. Процедуры и функции модуля GraphABC

Модуль GraphABC представляет собой простую графическую библиотеку и предназначен для создания несобытийных графических и анимационных программ в процедурном и частично в объектном стиле. Рисование осуществляется в специальном графическом окне, возможность рисования в нескольких окнах отсутствует. Кроме этого, в модуле GraphABC определены простейшие события мыши и клавиатуры, позволяющие создавать элементарные событийные приложения. Основная сфера использования модуля GraphABC - обучение.

Графические примитивы

Графические примитивы представляют собой процедуры, осуществляющие рисование в графическом окне. Рисование осуществляется текущим пером (линии), текущей кистью (заливка замкнутых областей) и текущим шрифтом (вывод строк).

© ИМПИ ОГПУ

procedure SetPixel(x,y: integer; c: Color);

Закрашивает пиксел с координатами (x,y) цветом c procedure PutPixel(x,y: integer; c: Color);

Закрашивает пиксел с координатами (x,y) цветом c procedure MoveTo(x,y: integer);

Устанавливает текущую позицию рисования в точку (x,y) procedure LineTo(x,y: integer);

Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y)

procedure LineTo(x,y: integer; c: Color);

Рисует отрезок от текущей позиции до точки (x,y) цветом c. Текущая позиция переносится в точку (x,y)

procedure Line(x1,y1,x2,y2: integer);

Рисует отрезок от точки (x1,y1) до точки (x2,y2) procedure FillCircle(x,y,r: integer);

Заполняет внутренность окружности с центром (x,y) и радиусом r procedure DrawCircle(x,y,r: integer);

Рисует окружность с центром (x,y) и радиусом r procedure FillEllipse(x1,y1,x2,y2: integer);

Заполняет внутренность эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawEllipse(x1,y1,x2,y2: integer);

Рисует границу эллипса, ограниченного прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure FillRectangle(x1,y1,x2,y2: integer);

Заполняет внутренность прямоугольника, заданного координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawRectangle(x1,y1,x2,y2: integer);

Рисует границу прямоугольника, заданного координатами противоположных вершин

(x1,y1) и (x2,y2)

procedure Circle(x,y,r: integer);

Рисует заполненную окружность с центром (x,y) и радиусом r procedure Ellipse(x1,y1,x2,y2: integer);

Рисует заполненный эллипс, ограниченный прямоугольником, заданным координатами противоположных вершин (x1,y1) и (x2,y2)

procedure Rectangle(x1,y1,x2,y2: integer);

Рисует заполненный прямоугольник, заданный координатами противоположных вершин (x1,y1) и (x2,y2)

procedure DrawClosedCurve(points: array of Point);

Рисует замкнутую кривую по точкам, координаты которых заданы в массиве points procedure FillClosedCurve(points: array of Point);

Заполняет замкнутую кривую по точкам, координаты которых заданы в массиве points

procedure TextOut(x,y: integer; s: string);

Выводит строку s в прямоугольник к координатами левого верхнего угла (x,y) procedure FloodFill(x,y: integer; c: Color);

Заливает область одного цвета цветом c, начиная с точки (x,y).

© ИМПИ ОГПУ

Подпрограммы для работы с пером

Рисование линий осуществляется текущим пером. Доступ к свойствам текущего пера можно осуществлять как в процедурном, так и в объектно-ориентированном стиле.

Процедуры и функции для доступа к свойствам пера сгруппированы парами: если Prop - имя свойства пера, то функция PenProp возвращает значение этого свойства, а процедура SetPenProp(p) устанавливает это свойство:

procedure SetPenColor(c: Color);

Устанавливает цвет текущего пера function PenColor: Color;

Возвращает цвет текущего пера

procedure SetPenWidth(Width: integer);

Устанавливает ширину текущего пера function PenWidth: integer;

Возвращает ширину текущего пера

procedure SetPenStyle(style: DashStyle);

Устанавливает стиль текущего пера. function PenStyle: DashStyle;

Возвращает стиль текущего пера. procedure SetPenMode(m: integer);

Устанавливает режим текущего пера function PenMode: integer;

Возвращает режим текущего пера function PenX: integer;

Возвращают x-координату текущей позиции рисования function PenY: integer;

Возвращают y-координату текущей позиции рисования function RGB(r,g,b: byte): Color;

Возвращает цвет, который содержит красную (r), зеленую (g) и синюю (b) составляющие (r,g и b - в диапазоне от 0 до 255)

Стили пера:

Сплошное перо

psClear = DashStyle.Clear;

розрачное перо

psDash = DashStyle.Dash;

П

 

Штриховое перо

psDot = DashStyle.Dot;

Пунктирное перо

psDashDot = DashStyle.DashDot;

Штрихунктирное перо

psDashDotDot = DashStyle.DashDotDot;

Задания для самостоятельной работы

1.Нарисовать произвольный рисунок.

2.Нарисовать график функции y=sin(x)+cos(x).

© ИМПИ ОГПУ

Лабораторная работа 11. Создание собственных модулей.

Модуль – автономно компилируемая программа, содержащая различные компоненты раздела описания и инициирующая часть, которая выполняется при запуске вызывающей программы.

Напомним, что для подключения модуля используется служебное слово Uses

<имя модуля>;

Структура модуля

Unit <имя модуля>; {заголовок} Interface {интерфейсная часть} Uses <список используемых модулей>;

<раздел описания типов> Implementation {исполняемая часть}

<описание объектов скрытых от вызывающей программы>

<тела процедур и функций, объявленные в интерфейсной части> begin {инициирующая часть}

<операторы инициализации модулей> end.

Пример: Написать модуль, выполняющий действия над векторами.

Имя модуля: vectors.pas

Unit Vectors;

Interface Const n = 3;

Type Vector = array [1..n] of real; var nulvector : vector;

Procedure Add(a, b : vector; var c : vector); Procedure Mult(k : real; a : vector; var c : vector) Procedure WriteVector(a : vector);

Procedure ReadVector(var a : vector);

Implementation

Procedure Add;

Var i : integer; begin

for i := 1 to n do c[i] := a[i]+b[i] end;

var i : integer; begin

for i := 1 to n do nulvector[i] := 0; end.

© ИМПИ ОГПУ