Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASCAL информатика.DOC
Скачиваний:
31
Добавлен:
11.04.2015
Размер:
609.28 Кб
Скачать

Необходимые сведения

Правила описания массивов, операции с массивами.

Варианты заданий:

  1. Имеются описания:

Type day = (yesterday, today, tomorrow);

vector = Array [1..30] of Real;

Var A: vector;

B: Array [– 2..2] of Integer;

C: Array [‘0’..’9’] of vector;

d: Array [day] of 0..23;

для каждого из массивов указать:

  1. сколько в нем элементов;

  2. какие значения могут принимать его элементы;

  3. как указать первый, последний элементы.

  1. Написать фрагмент программы для вычисления выражения.

Пусть описание имеет вид

Const N=21;

Var X : Array [1..N] of Real;

Y : Real;

  1. N нечетное;

  2. ; 7) .

  1. Выполнить следующие задания:

  1. Дан массив вещественных чисел x1,x2,…xN. Напечатать сначала все отрицательные, затем все положительные элементы массива.

  2. Даны вектора (массивы) . Вычислить значения выражений:

Лабораторная работа №5

Тема:Программирование с использованием одномерных массивов.

Необходимые сведения

Отладка программ с использованием режима F4.

Текущий просмотр значений переменных с помощью команды CTRL-F4.

Пример задания:Составить программу для вычисления значений функции и вывода на печать положительных значений функции с использованием массивов:

приx= 0,0.5, 1.0, 1.5,…2.5

Вариант программы

ConstN= 6;

Var

K, L : Integer; X : Rael;

Y : Array[1..N] Of Real;

Begin

For L := 1 To N Do

Begin

X:= 0.5*(I –1); Y[L] =sin(PI * 0.25 X)+ cos(PI*0.25*X);

If Y[L] > 0 Then WriteLn(‘x=’, X:8:4, ‘y=’, Y:8:4)

End;

End.

Варианты заданий:

  1. Для значений М=1, 2,…,Nвычислить число сочетаний из N по М и занести результаты в массив С=(С12,…,СN), используя

Ci=n!/ (i!(n– 1)!). Отсортировать методом перестановок по

возрастанию. На печать вывести массив С до сортировки и после

нее. Здесь числа N> 0,M> 0,N>Mввести с клавиатуры.

  1. Вычислить значение выражения при М =1,2,3,…, N

.

Значения напечатать и записать в массив В. Массив В отсортировать по убыванию через поиск минимального элемента и напечатать результат. Nввести с клавиатуры.

  1. Сформировать S– массив вещественных чисел, отсортировать по возрастанию методом перестановок и напечатать:

число N> 0 ввести с клавиатуры.

  1. Вычислить и записать в массив значения функции при измененииxотxначдоxкон с шагомh. Массив значений отсортировать по убыванию методом перестановок и напечатать.

a =2.14; b= –4.21; c= 3.25;

xнач = –4.5, xкон= –33.5, h= 0.5;

  1. Сформировать массив чисел

и отсортировать по возрастанию через поиск максимального

элемента. Nввести с клавиатуры.

  1. Сформировать массив значений функции , дляxначxxкон с шагомh.

A= – 1.14, B= – 0.21, C= 3.25; xнач = 0.5, xкон =2.5, h= 0.5.

Перед выводом на экран массив отсортировать методом перестановок по возрастанию.

  1. Записать в вещественный массив числа

, k= 1,2,…N. Отсортировать

по убыванию через поиск минимального элемента и напечатать.

  1. Вычислить значения функции в точках

, гдеk=1,2,…,11 , h= (b – a)*0.1 , b =13, N= 12.

Значения отсортировать по возрастанию методом перестановок и

напечатать.

  1. Вывести на печать значения функции ,

предварительно сформировав из них массив чисел. Массив

отсортировать по убыванию через поиск максимального

элемента. А= 0.1 , В= –4 , С = 6, x1= 0.5 ,x2= 1.5 ,h= 0.1

10. Заполнить массив значениями

отсортировать по возрастанию методом перестановок и

напечатать результат.

  1. Вывести на печать значение функции y(x1) до и после сортировки по убыванию методом перестановок

.

.

Значения xнач,xкон ,Nввести с клавиатуры.

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

  2. Вычислить значение функции, записать в массив, отсортировав по убыванию методом перестановок и напечатать: .x= 1.2, y = 1.1. ЗначениеNввести с клавиатуры.

  3. Пусть a1= u , b1= v, ak=ak-1 +2bk-1, bk = 2ak-1+ bk-1, k= 2,3,4,…,N.

Найти Занести в массив и отсортировать по возрастанию через поиск максимального элемента. Числаu, v, Nввести с клавиатуры.

  1. Сформировать массив чисел . Значениеxввести с клавиатуры. Число М = 8. Напечататьp, предварительно отсортировав по убыванию методом перестановок.

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

  1. Какие команды находятся в разделе DEBUGглавного меню системыTURBOPASCAL?

  2. Может ли массив содержать один элемент? Ни одного?

  3. Можно ли во время выполнения программы изменить размер массива?

  4. Могут ли числа 1, 1ю41, 1.73, 2 быть элементами некоторого массива?

Практическое занятие №6

Тема:Программирование с использованием двумерных массивов.

Необходимый материал

Правила описания и использования переменных типа массив, типизированных констант типа массив.

Варианты заданий:

Написать фрагменты программ, позволяющие:

  1. Найти сумму коэффициентов первой строки матрицы Аi,j,i,j=1,2,…,N.

  2. Найти след матрицы

  3. Найти сумму коэффициентов k– 20 столбца матрицы Аi,j,i,j= 1,2,…,N.

  4. Вычислить вектор z, являющийся произведением вектораи матрицы

  1. Найти транспонированную к А матрицу (т.е. поменять местами строки и столбцы).

  2. Вычислить максимальный элемент матрицы А.

  3. Найти сумму элементов матрицы по второй (неглавной) диагонали.

  4. Даны матрицы А и Bв размерностиNN. Найти С = АВ.

  5. Выписать фрагмент программы для решения задачи: в матрице А поменять местами 1-ю и 2-ю строки, 3-ю и 4-ю строки, … , 19-ю и 20-ю строки. Матрица А имеет размерность 2020.

  6. Написать программу, позволяющую определить, является ли матрица (целая квадратная, 10-го порядка) симметричной.

  7. Определить, является ли целая квадратная матрица 9-го порядка магическим квадратом, т.е. такой, в которой суммы элементов во всех строках и столбцах одинаковы.

Лабораторная работа №6

Тема: Программирование с использованием двумерных массивов.

Необходимые сведения

Отладка программы с использованием точек останова (команда CTRL-F8).

Пример:Найти максимальный элемент матрицы размером 33:

Вариант программы

Const

N1=3;N2=3;

A : Array[1..N1, 1..N2] Of Real = ((2,1,3), (8,6, –1), (4,4,2));

Var

I, J : Integer; Q : Real;

Begin

Q:=A[1,1];

For I:=1 To N1 Do

For J:=1 To N2 Do

If A[I,J] > Q Then Q:=A[I,J];

WriteLn(‘максимальный элемент=’,Q:8:4)

End.

Варианты заданий

  1. Задан двумерный массив (матрица) вещественных чисел. Найти наибольший и наименьший элементы k-й строки, 1kN,l-го столбца, 1kМ, гдеN– число строк, М – число столбцов. ЧислаNи М задать константами, массив описать как типизированную константу.

  2. Задан двумерный массив вещественных чисел размерности 33. Найти номер строки и номер столбца, в которых находится наименьший элемент. Массив описать как типизированную константу.

  3. Задан двумерный массив NNвещественных чисел. Необходимо каждый элемент соответствующей строки разделить на сумму элементов этой строки. Значения элементов массива ввести с клавиатуры,N=5.

  4. Задан двумерный массив вещественных чисел. Заменить все отрицательные элементы нулями и подсчитать сумму положительных элементов в каждой строке. Размерность массива и значения элементов массива ввести с клавиатуры.

  5. Заданы натуральные N> 0 и последовательность вещественных чиселb1,b2,…,bn. Сформировать массив А по правилу:. ЗначенияNи последовательность чиселb1,b2,…,bnввести с клавиатуры.

  6. Определить, является ли заданная целая квадратная матрица 10-го порядка ортонормированной, т.е. такой, в которой скалярное произведение каждой пары различный строк равно 0, а скалярное произведение каждой строки на себя равно 1.

  7. Задан двумерный массив В размерности 35. Получить новый массив с именем С путем удаления из В строки и столбца, в которых содержится максимальный элемент матрицы. Описать массив В как типизированную:

  1. Задан двумерный массив А размерности MN. Дополнить его М+1-й строкой иN+1–Mстолбцом, в которые записать суммы элементов соответствующих строк или столбцов исходного массива А, В элемент аm+1,n+1поместите сумму элементов исходного массив. Элементы массива А необходимо ввести с клавиатуры. М=3, Т=3.

  2. Задана матрица размерности МN. Необходимо, не используя другого вспомогательного массива, транспонировать матрицу (переставить местами столбцы строки). Исходные данные ввести с клавиатуры.

  3. Заданы два одномерных массива А и В размерности N и М соответственно. Сформировать двумерный массив DразмерностиMNпо правилуи обнулить отрицательные элементыD.

  4. Задана вещественная квадратная матрица порядка 4. Из этой матрицы выбрать строку, сумму модулей коэффициентов которой наибольшая. Далее в этой строке найти наименьший элемент. Значения коэффициент матрицы ввести с клавиатуры.

  5. Задана вещественная матрица размерности МN. В каждом столбце найти максимальный элемент, затем среди этих чисел найти минимальное. Указать индексы этого элемента.

  6. Заданы целые положительные числа BN,Mи Р. Определить вектор, элементы которого вычисляются по правилу

где

Исходные данные: N=3,M=4,P=46.

  1. Задана вещественная матрица размерности МN. Построить матрицу В, где элемент bijравен разности суммы модулей коэффициентов столбца и суммы модулей коэффициентов строки содержащих данный элемент. Исходные данные ввести с клавиатуры.

  2. Задана вещественная матрица размерности 77, все элементы которой различны. Найти скалярное произведение строки, в которой находится наибольший элемент матрицы, на столбец с наименьшим элементом.

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

  1. Какие вопросы отладчика системы TURBOPASCALвы знаете?

  2. Как установить и удалить точки прерывания в программе?

  3. Как вставить новые переменные и выражения в одно просмотра?

  4. Как удалить переменные из окна просмотра?

Практическое занятие №7

Тема:Программирование с использованием процедур и функций.

Необходимые сведения

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

Варианты заданий

  1. Описать функцию max(x,y),гдеx,y– вещественные числа.

  2. Вычислить z=(sign x + sign y) sign (x+y), где

  3. По заданному xвычислить. Примечание:.

  4. Описать функцию «степень» (x, y) от вещественногоxи натурального n, вычисляющую (через умножение) величинуxи использовать ее для вычисленияb=2.7k+(a+ 1).

  5. Даны три натуральных числа. Определить их наибольший общий делитель.

  6. Type NAT = 1..maxint;

Var m, n : NAT;

Function NOD(m,n:NAT) : NAT;

Begin

Whille m < > n Do

If m > n Then m:= m – n Else n:=n – m;

NOD:=m

End;

  1. Определить, что будет выдано на печать

m:=8; n:=6; write(NOD(m,n),m,n);

  1. Объясните, почему при вычислении NOD(m,n) не меняется значение переменных m и n, хотя в теле функции оба эти параметра изменяют свое значение.

  1. Описать функцию S= 1 + 2 + … +N,N– формальный параметр.

  2. Описать процедуру S= 1 + 2 + …+N,S,N– формальные параметры.

  3. Описать процедуру minmax(x,y), которая присваивает параметруxбольшее из вещественных чиселxиy, а параметруy – меньшее.

  4. Использовать описанную в п.9 процедуру minmaxдля перераспределения значений вещественных переменныхa, b, cтак, чтобы сталоabc.

  5. Перечислить локальные (в том числе и формальные) и глобальные имена, используемые в примере:

Procedure P(x: vec; var y : Integer);

Const z = ‘*’;

Var c : INDEX;

Begin e:= 0;

For c:= a To b Do

If x[c] > z Then y:=y+1

End;

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

Тема:Программирование с использованием процедур и функций.

Необходимые сведения

Пошаговая отладка программ (команды F7 иF8).

Пример: Написать программу для вычисления и вывода на экран биномиальных коэффициентов по формулам.

Вариант программы:

Var

Rab:Integer;

Procedure Sochet(K,L : Longint; Var Rez : Longint);

Var A, B, C : Longint;

Function fac(M : Longint) : Longint;

Begin If M=0 Then fac:=1 Else fac:=M*fac(M-1) End;

Begin A:=fac(K); B:=fac(L); C:+fac(K – L);

Rez:=Trunc(A/(B*C))

End;

(Головная программа. Раздел операторов)

Begin

WriteLn(‘Введите числа М <N’);ReadLn(M,N);

If M >=N then

Begin

WriteLn (‘M=’,M’>, N, ‘N=N!’); halt(0)

End

Else

Begin

Sochet(N,M,Rab); WriteLn (‘C=’, Rab);

End;

End.

Варианты заданий

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

  2. Написать подпрограмму вычисления матрицы B=A3, где А – матрица размерностиNN.

  3. Написать подпрограмму вычисления суммы с точностью до 0.001, в качестве параметра выбратьx.

  4. Написать подпрограмму, вычисляющую номера строк целочисленной матрицы размером NN, все элементы которых делятся на 3 без остатка.

  5. Вычислить значения функции с заданной точностью=0.001, в качестве параметра задатьx.

  6. Составить подпрограмму вычисления суммы , приaxbс шагомh= (b–a)*0.1. Значенияa, b, Nпередать в качестве параметров.

  7. Составить подпрограмму вычисления выражения: , гдеak= 0.1 *k+0.05,k=0.11,…,n. ЗначенияNиxпередать в качестве параметров.

  8. Составить программу вычисления с точностью до 0.001, гдеxпередать в качестве параметра.

  9. Даны вещественные числа . Написать подпрограмму вычисления следующего выражения:, гдеN, xи массивыaиbпередать в качестве параметров.

  10. Даны массивы . Определить функцию

  11. Написать подпрограмму, которая сортирует одномерный массив в порядке убывания. В основной программе вызвать эту подпрограмму для сортировки двух разных массивов.

  12. Составить программу: , гдеNиxпередать параметрами.

  13. Вычислить значения функции: с точностьeps= 0.002, значениеXпередать параметром.

  14. Написать подпрограмму поиска максимального и минимального элементов одномерного массива. В основной программе вызвать этой программу для двух разных массивов.

  15. Написать подпрограмму печати значений функции , приxизменяющемся от 0,1 до 2,4 с шагом 0,05 по 5 значений в строке.

Практическое занятие №8

Тема:Работа с экраном в текстовом режиме.

Необходимый материал:

Процедуры и функции модуля Crt:

  1. TextMode(Mode:Word) – процедура, очищает экран, устанавливает текстовый режим, соответствующий параметру «mode».

Таблица 8

Наименование константы

Значение константы

Количество строк

Количество символов в строке

Вид вывода

BW40

0

25

40

Черно-белый

CO40

1

25

40

Цветной

BW80

2

25

80

Черно-белый

CO80

3

25

80

Цветной

Mono

7

25

80

Черно-белый

Пример: TextMode(CO80); - Активизация цветного текстового режима с экраном в 25 строк по 80 символов в строке.

По умолчанию устанавливает режим Mode= 2 (25 строк по 80 символов в строке):

    1. (1.80)

    1. (26.80)

  1. TextBackGround(Color:Byte) – процедура. Устанавливает цвет фона. ЗдесьColor– выражение целого типа в диапазоне от 0 до 7.

  2. TextColor(Color:Byte) – процедура. Устанавливает цвет выводимых символов. ЗдесьColor– выражение целого типа в диапазоне от 0 до 15.

  3. Window (X1, Y1, X2, Y2 : Byte) – процедура. Определяет новое текстовое окно. Окно – область экрана, выполняющая те же функции, что и полный экран.

  4. ClrScr– процедура. Очищает активное окно и устанавливает курсов в левый верхний угол.

  5. ClrEol– процедура. Очищает строку активного окна от текущей позиции курсора до конца строки.

  6. CoToXY(X,Y:Byte) – процедура. Устанавливает курсов в позицию с координатамиX,Y.

  7. WhereX:Integer– функция. ВозвращаетX-ю координату текущей позиции маркера.

  8. WhereY:Integer– функция. ВозвращаетY-ю координату позиции маркер.

  9. KeyPressed:Boolean– функция. ВозвращаетTRUE? если была нажата любая клавиша клавиатуры и возвращаетFALSEиначе.

  10. ReadKey:Char– функция. Считывает код символа нажатой клавиши. Ниже дан пример использования функции для клавиши с кодом, хранящимся в одном байте (например, цифровые клавиши, клавиши алфавита):

VarCh:Char;

Begin

Writeln(‘Переключите клавиатуру на латинский алфавит’);

Writeln(‘Нажмите клавишу <G>’);Ch:=ReadKey;

Writeln(‘Вы нажали клавишу :’,Ch, ‘ ее код:’,Ord(Ch));

Writeln(‘Переключите клавиатуру на русский алфавит’);

Writeln(‘Нажмите ту же клавишу’);

Writeln(‘Вы нажали клавишу : ’ ,CH, ‘ ее код: ’ ,Ord(Ch));

End.

Пример использования функции для клавиши с кодом, хранящимся в двух байтах (клавиши ,home>, <end>, функциональные клавиши <F1>, <F2> и др.);

Var Ch : Char;

Begin

Ch:=ReadKey:

If Ch:= #0 Then Begin Ch:= ReadKey;

If CH= #79 Then Write(‘Нажата клавиша <End>’);

End.

  1. Delay(Time:Word) – процедура. Вызывает задержку выполнения программы наtimeмиллисекунд (0.001 сек).

  2. Sound(Hz:Word) – процедура. Включает внутренний звуковой генератор с частотой сигналаHzГерц. Звук отключается процедуройNoSound.

  3. NoSound– процедура. Отключает звуковой генератор.

Лабораторная работа №8

Тема: Работа с экраном в текстовом режиме.

Пример:Реализовать простое меню из трех вариантов выбора.

Программа:

User Crt:

Type Str20 = String[20];

Menu = Array [1..3] Of Str[20];

Const MN : Menu=(‘ режим 1 ‘,

‘ режим 2 ‘,

‘ режим 3 ‘);

Var ch : Char: i,k : Byte;

Procedure Mysound(Hz : Integer: Time : Integer: Time : Integer);

Begin Sound(Hz); Delay(Time); Nosound End;

Function Readchar : Char;

Var c : Char;

Begin

c:= ReadKey: If c = #0 Then c:= ReadKey; Readchar:= c

End;

Function Case_K(ch : Char; k : Byte) : Byte;

Begin

Case ch Of

#72 : If k>1 Then k:= k – 1 Else k:= 3; {<  >}

#80 : If k<3 Then k:= k + 1 Else k:= 1; {<  >}

End;

Case_K:=k;

End;

Procedure ShowString(k : Byte; s : Str20; gr, cl : Byte);

Begin

TextBackGround(gr); TextColor(cl); GotoXY(1 k + 2);

Write(s);

End;

Begin

Clrscr; Window(31 11, 50, 16); { Инициализация окна }

TextBackGround(1) { Задание цвета фона }

TextColor(15); { Задание цвета символов }

k:=1; CoToXY(3.2); Write(‘Выберите режим: ‘);

Repeat

For i:=1 To 3 Do { Рисование строк меню }

ShowString(i,mm[i], i+ 1.i + 9);

ShowString(i, mm[i], i + 1.i + 9); { Рисование активной строки }

Mysound(1000 100); { Звуковой сигнал }

Ch:= ReadChar; { Считывание символа }

k:= Case_k(ch,k);

Until (Ch=#13) Or (Ch=#32);

Window(1,1,80,25); Clrscr; Write ( ‘Выбран режим –‘, K:1);

End.

Варианты заданий:

Разработать программу вывода на экран графика функции с помощью различных текстовых символов из заданного набора. Выбор символов реализовать с помощью меню.

варианты функций:

1) 2)

3) 4)

5) 6)

7) 8)

9) 10)

11) 12)

13) 14)

15) 16).

где xпринадлежит интервалу ( – 3.14, 3,14 ).

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

  1. Какие режимы для вывода на экран текстовой информации Вы знаете?

  2. Какие процедуры и функции для работы в текстовом режиме Вы знаете?

  3. Какие процедуры задают цвет выводимых на экран символов и цвет фона?

  4. Какая процедура позволяет устанавливать курсор в заданное место экрана?

  5. Какие процедуры управления звуковым генератором Вы знаете?

Практическое занятие №9

Тема:Работа с экраном в графическом режиме.

Необходимый материал:

Основные процедуры и функции модуля Graph.

I. Информационные процедуры и процедуры установки режимов работы

  1. IniGraph( Var GraphDriver : Integer;

Var GraphMode : Integer;

PathToDriver : String);

Процедура инициирует графический режим работы монитора.

  1. CloseGraph: - процедура, завершающая работу в графическом режиме.

  2. GraphResult:Integer: - функция, позволяющая определить код ошибки при инициализации графического режима.

  3. GraphErrorMsg(GraphResult:Integer) :String: - функция, которая выдает строку текста сообщения, поясняющего причину ошибки в инициализации графического режима.

  4. SetGraphMode(Md:Integer): процедура, устанавливающая указанный в переменнойMdграфический режим.

  5. SetGraphMode:Integer: - функция, с помощью которой можно получить значение установленного графического режима.

  6. GetMaxX:Integer; - функция, возвращающая максимальное значение координаты экранаX.

  7. GetMaxY:Integer; - функция, возвращающая максимальное значение координаты экранаY.

  8. GetX:Integer; - функция, выдающая текущее значениеX.

  9. GetY:Integer; - функция, выдающая текущее значениеY.

  10. MoveTo(X,Y:Integer); - процедура, задающая новые текущие координатыXиY.

II. Процедуры для работы с геометрическими объектами

  1. PutPixel(X,Y:Integer;Pixel:Word); - процедура, высвечивающая на экране цветом с номеромPixelточку с координатамиXY.

  2. LineTo(X,Y:Integer); - процедура, проводящая линию из точки с текущими координатами в точку с координатамиX,Yтекущим цветом.

  3. LineDel(Dx,Dy:Integer); - процедура, проводящая линию из точки с текущими координатами в точку с приращением координат от текущих наDxиDyустановленным цветом.

  4. Line(X1,Y1,X2,Y2 :Integer); - процедура, проводящая линию из точки с координатамиX1,Y1 в точку с координатамиX2,Y2 текущим цветом.

  5. Rectanle(X1,Y1,X2,Y2 :Integer); - процедура, рисующая прямоугольник с координатами диагонали (X1,Y1) (X2,Y2).

  6. Bar(X1,Y1,X2,Y2 :Integer); - процедура, рисующая закрашенный прямоугольник с координатами диагонали (X1,Y1) (X2,Y2).

  7. Arc(X,Y:IntegerAng1,Ang2,R:Word); - процедура, рисующая дугу с центром в точке (X,Y) радиусаR, начальным угломAng1 и конечным угломAng2.

  8. Circle(X,Y:Integer:Radius:Word); - процедура, рисующая окружность с центром в точке (X,Y) радиусаR.

  9. Ellipse(XY:Integer;Ang1Ang2:Word;Xr,Yr:Word); - процедура, рисующая дугу эллипса с центром в точке (X,Y) с полуосямиXrиYr, начальным угломAng1 и конечным угломAng2.

  10. PieSlice(X,Y:Integer;Angle1,Angle2,R:Word); - процедура, рисующая закрашенный сектор круга с центром в точке (X,Y), радиусомR, начальным угломAng1 и конечным угломAng2.

  11. FillEllipse(X,Y:Integer;Xr,Yr:Word); - процедура, рисующая закрашенный эллипс с полуосямиXrиYrцентром в точке (X,Y).

  12. Sector(X,Y:Integer;Ang1,Ang2,Xr,Yr:Word); - процедура, рисующая закрашенный сектор эллипса с центром в точке (X,Y), полуосямиXr,Yrначальным и конечными угламиAng1 иAng2.

В указанных выше процедурах углы измеряются в градусах и отсчитываются против часовой стрелки от оси абсцисс.

  1. SetLineStyle(LineStyle:Word;Pattern:Word;Thick:Word); - процедура, которая задает тип линии рисования.

Возможные значения параметра LineStyle: 0 – сплошная, 1 – точечная, 2 – прерывистая, штрихпунктирная, 3 – прерывистая штриховая, 4 – определяется пользователем.

Параметр Patternзадает тип линии приLineStyle= 4. Этот параметр игнорируется, еслиLineStyle<4.

Параметр Thickзадает толщину рисуемых линий: 1 – нормальная толщина, 3 – утроенная толщина.

III. Процедуры задания цвета:

  1. SetColor(Color:Word); - процедура, задающая цвет рисуемого геометрического объекта. ПараметрColorпринимает значения в интервале 0..15.

  2. GetColor:Word; - процедура, дающая значение текущего цвета рисунка.

  3. SetBkColor(Color:Word); - процедура, задающая цвет фона.

  4. GetBkColor(Color:Word); - процедура, определяющая цвет фона.

IY.Процедуры закрашивания геометрических фигур

  1. SetFillStyle(Pattern:Word;Color:Word); - процедура, устанавливающая образец закраски фигуры. ПараметрPatternпринимает значения в интервале 0..11.

  2. FloodFill(X,Y:Integer;Border): - процедура, закрашивающая замкнутую область, внутри которой лежит точка (X,Y).Border –параметр, определяющий цвет границы области.

Y. Процедура работы с текстом

  1. OutText(TextString:String); - процедура вывода текста на экран, начиная с текущей позиции.

  2. OutTextXY(X,Y:Integer;TextString:String); -процедура вывода текста на экран, начиная с позиции (X,Y).

  3. SetUserCharSize(MX,DivX,MY,DivY:Word); - процедура, которая задает размеры символов шрифта.

  4. SetTextStyle(Font,Direction,CharSize:Word); - процедура, с помощью которой устанавливается тип выводимого текста. ПараметрFontимеет следующие значения: 1 – утроенный шрифт, 2 – маленький шрифт, 3 – прямой шрифт, 4 – готический шрифт. ПараметрDirectionимеет следующие значения 0 – вывод текста слева направо, 1 – снизу вверх. ПараметрCharSizeпринимает значения в интервале 0..30.

Лабораторная работа №9

Тема:Работа с экраном в графическом режиме.

Пример:Построить спирали с начальной точкой (X0Y0), внешним радиусомR,Nвитками и начальными направлениями, образующими углыalfи –alfс осью абсцисс.

Программа:

User Graph;

Const n=30; alf=pi*0.25; deltaT=pi/22.5;

Var

t, r : Real;

i, j, k, l, m, gd, gm, xc, yc, x, y : Integer;

Procedure Spi(xc, yc, N : Integer; deltaT, Alf : Real);

Begin

MoveTo(xc, yc): t:=Alf;

For i:=1 To N Do

Begin

For j:=1 To 90 Do

Begin

t:= t+ deltaT; r:=0.75*t;

x:=Round(r*cos(t)+xc);

y:=Round(r*sin(t)+yc);

LineTo(x,y);

End;

End;

Circle(xc,yc,Round(r));

End;

Begin { Головная программа }

gd:=Detect;

InitGraph(gd, gm, ‘l:\tp6\bgi’);

If GraphResult < > 0 Then

Begin

Write(‘Ошибка установки граф. режима:’

‘GraphErrorMsg(GraphResult));

End;

xc:=GetMaxX div 2; yc:=GetMaxY div 2;

Spi(xc, yc, N, deltaT, alf);

Spi(xc, yc, N, – deltaT, – alf);

Readln;

CljseGraph;

End.

Варианты заданий:

Написать программу вывода на экран графика функции y=y(x) используя различные типы линии. В заданиях 1, 4, 7, 10, 13, 16 – сплошная линия; в заданиях 2, 5, 8, 11, 14 – прерывистая, точечная; в заданиях 3, 6, 9, 12, 16 – прерывистая, штриховая. Предварительно необходимо нарисовать оси координат.

Варианты функций:

1) 2)

3) 4)

5) 6)

7) 8)

9) 10)

11) 12)

13) 14)

15) 16),

где xпринадлежит интервалу ( – 3,14 , 3,14).

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

  1. Какая процедура инициирует графический режим?

  2. Какие процедуры задают цвет выводимых на экран символов и цвет фона?

  3. Какая процедура позволяет устанавливать курсор в заданное место экрана?

  4. Перечислите процедуры рисования отрезков прямых и объясните смысл используемых параметров?

  5. Каким образом задать тип рисуемой линии?

  6. Какие процедуры рисования геометрических фигур Вы знаете?

  7. Объясните процедуры вывода текста на экран и объясните смысл входящих в них параметров.

Практическое занятие №10

Тема: Программирование с использованием записей.

Необходимые ведения:Описание записей, оператор присоединения.

Варианты заданий:

  1. Описать комбинированный тип для представления следующего понятия:

  1. дата (число, месяц, год);

  2. семинар (предмет, преподаватель, номер группы, день недели, часы занятий, аудитория);

  1. Ответить на следующие вопросы:

  1. Верно ли, что все поля записи должны быть разных типов?

  2. Почему при описании записи ее поля могут перечисляться в любом порядке?

  3. Верно ли, что названия полей записи могут совпадать с именами переменных, констант и других объектов программы, но не могут совпадать с названиями полей записей?

3. Type Address = Record

City, Street : String[40];

Home, Floor : 1..999

End;

Var Ad1, Ad2 : Address;

Присвоить переменной Ad1 значение «Новосибирск, Красный проспект, д.8, кв.12». ПеременнойAd2 присвоить то же значение, заменив в нем номер дома на 7 и номер квартиры на 21.

4. Type Decart = Record X, Y : Real End;

Polar = Record R, Fi : Real End;

Var D : Decart; P : Polar;

Описать процедуры Dc_Pl(D,P), преобразующую координаты точки на плоскости из декартовыхDв полярныеPиPl_Dc(P,D), выполняющую обратное преобразование.

5. Type

Time = Record Hour : 0..23; Min, Sec : 0..59 End;

Описать

а) логическую функцию Early(T1T2) для проверки, предшествует ли время Т1 времени Т2 (в пределах суток).

б) процедуру Interval(D,T1,T2), которая вычисляет времяD, прошедшее от времени Т1 до времени Т2 :d= Т2 –T1 (считать, что Т2 > Т1).

6. Type Citizen = Record

Sename, City : String;

Address : Record Street : String;

Home, Floor : 1..99 End;

End;

List = Array[1..15] of Citizen;

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

Лабораторная работа №10

Тема:Программирование с использованием записей.

Необходимые сведения:

Режимы работы отладчика, отметка точек останова программы и их удаление (Ctrl–F8).

Пример. Составить программу для решения следующей задачи. Пусть дана ведомость абитуриентов, сдавших вступительные экзамены в Институт (приведена часть данных):

Ф.И.О. Оценки

1. Алексеев Б.Ф. 5 3 4

2. Ануфриев А.А. 4 5 5

3. Банников Ю.И. 3 5 3

Необходимо определить количество абитуриентов, сдавших все экзамены на “отлично” и их список вывести на экран.

Вариант программы

Const M = 3;

Type Abitype = Record

Fio : String;

Marks : Array[1..M] Of Byte;

End;

Var List : Abitype; K, L, I, J, B : Integer;

Begin K: =0; Readln(L);

For I:=1 To L Do

Begin

Read(List.Fio);

For J:= 1 To M Do Read(List.Marks[J]);

Readln;

End;

For I:= 1 To L Do

Begin

B:= 0;

For J:= 1 To Do

If List.Marks[J]= 5 Then B:= B+1;

If B = M Then Writeln(Fio);

End;

End.

Варианты заданий

Дан список студентов первого курса, в котором содержатся следующие данные: ФИО, номер групп, оценки по результатам зимней экзаменационной сессии (информатика, высшая математика, физика), Написать программу, которая вводит эту информацию и печатает следующие данные:

  1. Количество студентов, сдавших экзамены со средним алло не ниже 4 и их список.

  2. Список студентов, сдавших все экзамены на «отлично».

  3. Номера групп, в которых средний балл – наибольший, и название соответствующих экзаменов.

  4. Количество студентов, сдавших экзамены с оценкой не ниже 4 по информатике и список этих студентов.

  5. Фамилии ( в алфавитном порядке) студентов, имеющих задолженность хотя бы по одной дисциплине.

  6. «Качество» успеваемости, т.е. процент студентов ( и их список), сдавших все экзамены на «хорошо» и «отлично».

  7. Название предмета, который был сдан лучше всего, и список остальных предметов в порядке убывания средних экзаменационных оценок.

  8. Номера группы и средний балл в порядке убывания средней успеваемости их студентов.

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

  1. Как описываются переменные типа «запись»?

  2. В каких случаях целесообразно использовать переменные типа «запись»?

  3. Каково назначение оператора With?

  4. В чем отличие записей от массивов?

Практическое занятие №11

Тема: Программирование с использованием файлов.

Необходимые сведения

Список общих функций и процедур для работы с файлами:

  1. Assign(Var F : File; Name : String) – оператор назначения;

  2. Reset(VarF:File) – оператор открытия уже существующего файла;

  3. Rewrite(VarF:File) – оператор создания нового файла. Если файл с таким именем уже существовал, то он будет стерт.

  4. Read(varF:File;X1,X2, …,Xn) – чтение данных из файла;

  5. Write(VarF:File;X1,X2, …,Xn) – запись данных в файл;

  6. Close(VarF:File) – завершение раоты с фаломF(закрытие файлаF);

  7. Erase(Var F: File) – уничтожение файла.

  8. Rename(Var F : File; Newname : String) – переименование файла F.

  9. Seek(VarF:File;N:Longint) – поиск элемента с номеромNв файлеFи установка маркера в эту позицию.

  10. Filesize(VarF:File):Longint– определение количества записей (числа элементов) в файлеF.

  11. Filepos(VarF:File) :Integer– определение текущего положения указателя файла.

Для работы с текстовыми файлами наряду с перечисленными выше (кроме подпрограмм Seek,Filesize,Filepos) используются следующие:

  1. Eoln(VarF:Text) :Boolean–функция, принимает значениеTrue, если маркер достиг конца строки ( при чтении данных из текстового файла) и значенииFalseв противном случае.

  2. Append(VarF:Text) – открытие уже существующего файла для добавления данных в конец файла.

  3. Writeln(VarF:Text) – завершение текущей строки текстового файлаFпри его записи.

  4. Readln(VarF:Text) – переход к началу следующей строк файла при его чтении.

  5. Writeln(VarF:Text,X1X2, …,Xn) – запись в файлFданныхX1X2, …Xnс завершением текущей строки.

  6. Readln(VarF:Text,X1,X2, …,Xn) – чтениеNсимволов файлаFс переходом к новой строке.

Варианты заданий

  1. Пусть файл Fсодержит два элемента «4» и «2». Определить, какое значение будет иметь переменнаяYпосле выполнения операторов:

а) Reset(F); Read(F, Y);

If Not Eof)F0 Then Read(F, Y);

If Not Eof(F) Then Read(F,Y);

б) Reset(F); Y:=0; While Not Eof(F) Do Begin

Read(F, X); Y:=Y+ X End;

в) Reset(F); Y:=1; Repeat

Read(F, X); Y:= Y * X;

Until Eof(F);

  1. В файле FFзаписаноNвещественных чисел. Написать функциюNmb(FF), которая должна относительно записанных в файлеFFчисел определить:

а) количество положительных чисел,

б) количество отрицательных чисел,

в) сумму всех чисел,

г) сумму положительных чисел,

д) сумму отрицательных чисел.

  1. Type Time = Record

hour : 0..23; {Часы}

Min, Sec : 0..59; {Минуты, Секунды}

End;

FileofTime = File Of Time;

Var F1, F2 : Fo;eofTime;

Описать логическую функцию EQ(F1,F2), проверяющую на равенство файлыF1 иF2 типаFileofTime.

IY. Имеется внешний файлFirstтипаCourse, содержащий сведения

о студентах первого курса:

Type Exams = (Mathematics, Informatics, Physics);

Student = Record

Fio : String[40]; Group : 41..46;

Marrs : Array[Exams] Of 2..5;

End;

Course = File of Student;

Var First : Course;

Написать программу, которая переписывает в файл Secondсведения о студентах:

а) успешно сдавших все экзамены,

б) имеющих задолженность хотя бы по одному предмету,

в) сдавших экзамены на «хорошо» и «отлично»,

г) сдавших экзамены только на «отлично»,

д) сдавших экзамены со средним баллом больше 4.5,

е) имеющих задолженность по всем предметам.

Лабораторная работа №11

Тема:Программирование с использованием файлов.

Необходимые сведения

Процедуры и функции работы с файлами.

Пример. Работа с типизированным файлом на примере телефонного справочника.

Вариант программы

UserCrt;ConstM= 3;

Type Str10 = String[10];

Person = Record

Fio, Phone : Str10 End;

Var Bookfile : File of Person;

Work : Person : i : Byte;

Procedure Add_ Rec(ab : Person);

Begin

Writeln(‘Создаем справочник из ‘.M.’ записей.’);

With ab Do Begin

Write(‘ Наберите фамилию абонента:’); Readln(fio);

Write(‘ Наберите номер телефона:’);Readln(Phone);

End;

Write(Bookfile, ab);

End;

Procedure Output_Rec(ab : Person; k : Byte);

Begin

Seek (Bookfile, k); Read(Bookfile, ab);

With ab Do

Writeln(‘ФИО: ‘ , fio,’ Тел. : ‘ , phone);

End;

Begin { Головная программа }

Clrscr; Assign(Bookfile ‘Phone.dat’);

Rewrite(Bookfile):Write(‘Создаем телефонн. справочник ‘);

For i: = 1 To M Do Add_Rec(Work);

Write(‘ Набор данных завершен. Записаны данные о ‘ );

Writeln(Filesize(Bookfile), ‘ абонентах ‘);

i:=0; Seek(Bookfile, 0);

While Not Eof(Bookfile) Do Begin

Output_Rec(Work, i); i:= i+1;

End; Readln; Closse(BookFile);

End.

Варианты заданий

Используя текст примера в качестве основы, написать программу, которая:

  1. выводит на экран список абонентов в алфавитном порядке,

  2. выводит на экран список абонентов, в номерах телефонов которых заданы первые две цифры,

  3. выводит на экран список абонентов по возрастанию телефонных номеров,

  4. выводит на экран список абонентов, в номерах телефонов которых сумму цифр – нечетное число,

  5. позволяет заменять информацию об абонентах,

  6. позволяет находить номера тех абонентов, фамилии которых начинаются на заданную букву,

  7. выводит на экран список абонентов, в номерах телефонов которых заданы последние две цифры,

  8. выводит на экран список абонентов, в номерах телефонов которых сумма цифр – четное число,

  9. список абонентов, телефонные номера которых являются «счастливыми», т.е. сумма первых трех цифр равна сумме последних трех цифр.

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

  1. С помощью какого оператора устанавливается соответствие между внешним именем файла и файловой переменной?

  2. Каким образом создать файл?

  3. Как подготовить уже существующий файл к считыванию данных?

  4. Верно ли, что элементы файла должны быть одного типа и что файл отличается от массива только тем, что размер (количество элементов) файла произволен, а размер массива фиксирован?

  5. Как записать данные в файл? Как считать данные из файла?

  6. Как определить размер файла?

  7. С помощью какой функции можно определить, есть ли еще в файле данные или уже достигнута метка конца файла?

Список рекомендуемой литературы:

  1. Абрамов В.Г., Трофимов Н.П., Трофимова Г.Н./ Введение в язык Паскаль. – М. : Наука, 1988. – 320 с.

  2. Инструментальные средства персональных ЭВМ. В 10 кн. Кн.4. Программирование в среде Турбо-Паскаль: Практ. пособие / Л.Е. Агабеков, С.В. Борисов, А.С. Ваулин и др.; По ред. .Г.Трусова. – М.: Высш.шк., 1993. –142 с.

  3. Пильщиков В.Н.//Сборник упражнений по языку Паскаль; Учеб.пособие для вузов. – М.: Наука. Гл. ред. физ.-мат.лит., 1989 . – 160 с.

  4. Программирование в среде TurboPascal6.0: Справ.пособие/ Ю.С. Климов, А.И. Касаткин, С.М.Мороз. – Мн.: Высш. шк., 1992. – 158 с.

  5. Прайс Д. Программирование на языке Паскаль. Практическое руководство. – М.: Мир, 1987. – 232 с.

  6. Зуев Е.А. Система программирования TurboPascal.// М.: Радио и связь, 1991. – 288 с.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]