Пояснения к лабораторной работе
Общие пояснения к использованию процедур и функций.
Процедуры и функции пользователя являются двумя видами подпрограмм, которые необходимо описать в разделе описаний основной программы (или предварительно поместить в личную библиотеку) и вызывать по имени в нужных местах вызывающей программы.
И процедура, и функция состоят из заголовка, раздела описаний и выполняемого блока. Их описания должны находиться после других операторов описаний основной (вызывающей) программы, перед ее выполняемым блоком. В отличие от основной программы, заголовки процедуры и функции обязательны, и имеют вид:
PROCEDURE < имя процедуры> (< список параметров> ); – для процедуры и
FUNCTION < имя функции> (< список аргументов> ): < тип результата>; – для функции.
Список аргументов это, по существу, список входных параметров.
Раздел описаний процедуры или функции строится как раздел описаний основной программы, с учетом того, что все описанные переменные существуют только во время выполнения процедуры (функции) в виде локальных переменных и никак не связаны с переменными вызывающей программы.
Следует иметь в виду, что если во внешней программе переменная описана, а в процедуре – нет, ее использование в теле процедуры означает работу с переменной внешней программы (так называемые глобальные переменные).
Выполняемый блок (который должен быть заключен в скобки Begin.. End) заканчивается символом "; ", а не точкой. В функции, в отличие от процедуры, в выполняемом блоке имени функции обязательно должно быть присвоено значение, которое и будет являться ее значением. Такое присваивание может встречаться несколько раз, конечным значением будет результат последнего присваивания. Внутри выражений тела функции ее имя встречаться не должно, если это не специальная рекурсивная функция.
Обращение (вызов) процедуры выполняется написанием имени процедуры в форме отдельного оператора. Обращение к функции выполняется только внутри выражения, входящего в состав оператора, аналогично обращению к стандартным (встроенным) функциям Турбо-Паскаля.
Механизм параметров
В список параметров включаются исходные данные для работы процедуры/функции (входные параметры) и, если надо, указания, куда поместить результаты работы процедуры (выходные параметры).
Существует два способа передачи данных через список параметров из вызывающей программы в процедуру. Первый способ заключается в том, что процедуре передается некоторое данное в виде его значения, например, если данное числового типа, передается само число. Второй способ заключается в том, что передается не значение данного, а адрес ячейки, где это данное находится (говорят, что передается имя переменной). Таким образом, параметры могут передаваться по значению и по имени. В каких случаях какой способ следует использовать? Обычно входные параметры передаются в процедуру по значению, а выходные – всегда по имени.
Есть некоторые особенности при передаче массивов (и других составных данных большого размера) в качестве фактических параметров. Даже если массив представляет собой входные данные и не меняется в процессе выполнения процедуры, его обычно передают по имени, так как это требует передачи только адреса начала массива, а не копии всего массива, как это потребовалось бы при передаче массива по значению. Кроме того, массив основной программы (фактический параметр) и массив в списке формальных параметров должны иметь один и тот же тип – т.е. должен использоваться один и тот же явный описатель.
Отметим, что когда параметры передаются по имени, они занимают в памяти по 4 байта. Подробнее об этом смотри лабораторную работу № 9.
Примеры написания списков формальных и фактических параметров:
..(A, B, C: real; VAR X1, X2: real; VAR N: integer); – формальные,
..(0.762, Alfa, C[3]-1.2, X, Y, Num); соответствующие фактические.
Для передачи массива в процедуру:
TYPE
Vect = array[1..10] of real;
Mas5x8 = array[1..5, 1..8] of integer;
...
VAR
C1, C2: Vect;
A: Mas5x8;
Metod: Integer;
...
PROCEDURE GetMatr(M: integer; Var X, Y: Vect;
Var Z: Mas5x8;...);
VAR A1, C1: integer;
...
Begin
< Операторы тела процедуры >
End;
FUNCTION MinValueMatr( Var Z: Mas5x8; M, N: integer)
: Integer;
VAR MinZ, I, j: integer;
Begin
< Операторы тела функции >
MinValueMatr: = MinZ;
End;
BEGIN
< Операторы основной программы >
...
GetMatr(0, C2, C1, A,...); {обращение к процедуре}
...
If MinValueMatr(A, 5, 7) div 2 < 3 then {обращение к функции}
...
END.
Разбор контрольного варианта
Задание
Таблица 24. Данные к заданию 31 варианта
№ вар.
| Программа
| Процедуры (Функции)
| M< =
| N< =
| Файл с данными
|
| Прямоугольный массив заполнить числами из файла, начиная с 33 числа. С помощью функции в исходном массиве сделать элементы последнего столбца равными сумме всех четных элементов соответствующей строки.
| 1)Исходный и полученный массивы печатать процедурой.
2)Построить функцию, которая возвращает сумму четных по значению элементов заказанной строки прямоугольного массива.
|
|
| DATI.BIN
|
Таблица идентификаторов
Составляется как для основной программы, так и для каждой подпрограммы пользователя.
Таблица 25. Идентификаторы программы 31 варианта
Имя
| Тип
| Р-р (байт)
| Назначение
|
Основная программа
|
KorrMass
| Имя программы
| -
| Обработка массива
|
Massiv
| Описатель типа
| -
| Описатель целочисл. массивов
|
Stroka
| Описатель типа
| -
| Описатель строки до 30 символов
|
M
| Целое
|
| Количество строк массива
|
N
| Целое
|
| Количество столбцов массива
|
i
| Целое
|
| Номер текущей строки массива
|
j
| Целое
|
| Номер текущего столбца массива
|
Fin
| Двоичный файл прямого доступа
|
| Файл с исходн. целыми числами
|
Fout
| Последовательный символьный файл
|
| Файл с результатами работы
|
Ouest1
| Инициализирован-ная строка
|
| Запрос числа строк массива
|
Ouest2
| Инициализирован-ная строка
|
| Запрос числа столбцов массива
|
A
| Целочисленный массив
|
| Обрабатываемый массив
|
InpMN
| Имя процедуры
| -
| Ввод размеров массива
|
PrintMas
| Имя процедуры
| -
| Вывод массива в файл протокола
|
DATI.BIN
| Строка – константа
|
| Имя набора данных с числами
|
Umnik_7.res
| Строка – константа
|
| Имя набора данных с протоколом
|
Sum
| Имя функции
| -
| Суммирование четных значений
|
InpMN –-Процедура ввода размеров массива
|
Txt
| Строка
|
| Формальный параметр – строка запроса
|
Kol
| Адрес целочисленной переменной
|
| Формальный параметр – имя переменной для результата ввода
|
MaxK
| Целое
|
| Формальный параметр – предельное возможное значение
|
PrintMas–- Процедура вывода массива в файл протокола (распечатки массива)
|
Txt
| Строка
|
| Формальный параметр – текст заголовка
|
Mas
| Адрес массива
|
| Формальный параметр – имя выводимого массива
|
NStr
| Целое
|
| Формальный параметр – число строк массива
|
NKol
| Целое
|
| Формальный параметр – число столбцов массива
|
i
| Целое
|
| Номер строки
|
j
| Целое
|
| Номер столбца
|
Sum – Функция вычисления суммы четных элементов заданной строки массива
|
Mas
| Адрес массива
|
| Формальный параметр – имя исходного массива
|
N
| Целое
|
| Формальный параметр – число столбцов массива
|
St
| Целое
|
| Формальный параметр – номер обрабатываемой строки
|
J
| Целое
|
| Номер элемента
|
S
| Целое
|
| Сумма
|
Odd
| Стандартная логическая функция
| -
| Проверка нечетности аргумента
|
Блок-схема алгоритма
Текст программы.
PROGRAM KorrMas;
{ Лабораторная работа N 7 Вариант N 31
Обработка массива
А.Я.Умненькая, ст. гр. Я-007 }
TYPE
Massiv = array[1..13, 1..10] of integer;
Stroka = string[30];
CONST Quest1: Stroka='Задайте число строк массива';
Quest2: Stroka='Задайте число столбцов массива';
VAR A: Massiv;
M, N, I, j: integer;
Fin: file of integer;
Fout: file of text;
{ Процедура ввода размеров массива }
PROCEDURE InpMN(Txt: Stroka; MaxK: integer;
Var Kol: integer);
Begin
WriteLn; WriteLn(Txt);
Repeat
Readln(Kol);
If Kol> MaxKol then
Writeln('Можно не более ', MaxK, 'задайте снова');
until Kol< =MaxK;
End;
{ Процедура вывода массива в файл протокола }
PROCEDURE PrintMas(Txt: string; Var Mas: Massiv;
NStr, NKol: integer);
VAR i, j: integer;
Begin
Writeln(Fout, Txt);
For i: = 1 to NStr do
begin
For j: = 1 to Nkol do Write(Fout, Mas[I, j]: 7);
WriteLn(Fout);
end;
End;
{ Функция вычисления суммы четных элементов заданной строки массива }
FUNCTION Sum(Var Mas: Massiv; N, St: integer)
: integer;
VAR j, S: integer;
Begin
S: =0;
For j: =1 to N do
If not Odd(Mas[St, j]) then S: =S+Mas[St, j];
Sum: =S;
End;
BEGIN { Основная программа }
InpMn(Quest1, 13, M);
InpMn(Quest2, 10, N);
Assign(Fout, 'Umnik7.res');
ReWrite(Fout);
WriteLn(Fout, 'Сумма четных элем. в последний столбец');
Assign(Fin, 'D: \LAB1\DATI.BIN');
ReSet(Fin);
Seek(Fin, 32);
for i: =1 to M do
for j: =1 to N do Read(Fin, A[I, j]);
Close(Fin);
PrintMas (' Исходный массив', A, M, N);
for I: =1 to M do A[I, N]: =Sum(A, N, I);
PrintMas (' Обработанный массив', A, M, N);
Close(Fout);
END.
Содержимое набора данных UMNIK7.RES:
Сумма четных элем. в последний столбец
Исходный массив
9 8 0 -7 0 -5 7 -5 5
6 9 9 2 -2 -8 3 -8 -9
8 -4 -4 1 3 6 4 0 -5
4 1 -2 4 2 1 -2 -6 -5
-1 5 0 9 4 -3 -6 -691 885
-709 800 382 -396 -140 -841 923 368 -686
737 624 169 -610 458 -188 -423 126 355
Обработанный массив
9 8 0 -7 0 -5 7 -5 8
6 9 9 2 -2 -8 3 -8 -10
8 -4 -4 1 3 6 4 0 10
4 1 -2 4 2 1 -2 -6 0
-1 5 0 9 4 -3 -6 -691 -2
-709 800 382 -396 -140 -841 923 368 328
737 624 169 -610 458 -188 -423 126 410
Варианты заданий
Таблица 26. Варианты заданий лабораторной работы №7
№ вар.
| Программа
| Процедуры (Функции)
| M< =
| N< =
| Файл с данными
|
| В прямоугольном массиве с помощью функции найти элемент, у которого самая большая сумма " соседей". Найденный элемент и его индексы напечатать. Исходные числа из файла читать, начиная с 27 числа.
| 1) Распечатать исходный массив с помощью процедуры.
2) Построить функцию, которая для произвольного внутреннего элемента передаваемого ей массива находит сумму всех соседних (8 штук).
|
|
| DATF.TXT
|
| В прямоугольном массиве с помощью процедуры убрать все строки, у которых оба конца – с четными значениями. Исходные данные из файла читать, начиная с 44 числа.
| 1) Печатать двумерный массив до и после корректировки с помощью процедуры.
2) Построить процедуру, которая удаляет (со сдвигом вверх всех нижележащих строк) заказанную строку передаваемого ей прямоугольного массива
|
|
| DATI.TXT
|
| В прямоугольном массиве с помощью процедуры сделать все строки упорядоченными по убыванию. Исходные числа из файла читать, начиная с " К" -го числа, где К вводить с клавиатуры.
| 1) Печатать массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в заказанной строке передаваемого ей прямоугольного массива упорядочивает элементы по возрастанию методом обмена.
|
|
| DATI.BIN
|
| Квадратный массив заполнить данными из файла, начиная с 21 числа. С помощью функции в исходном массиве поменять элементы главной диагонали с максимальными значениями в строке.
| 1) Исходный и полученный массивы печатать процедурой.
2) Построить функцию, которая возвращает номер максимального элемента заказанной строки прямоугольного массива.
|
|
| DATF.TXT
|
| Одномерный символьный массив длиной 300 элементов заполнить символами из файла, начиная с начала. С помощью процедуры заполнить новый одномерный символьный массив символами из исходного массива без повторения символов.
| 1) Построить процедуру, которая в исходном массиве заменяет пробелом все вхождения первого встретившегося символа (не пробела) и возвращает этот стертый символ в вызывающую программу.
2) Печатать каждый массив с помощью процедуры.
|
|
| SIMBOL.
TXT
|
| В квадратном массиве, используя процедуру сортировки, сделать все строки упорядоченными по возрастанию. Исходные числа из файла читать, начиная с 20 числа.
| 1) Печатать массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в заказанной строке передаваемого ей квадратного массива упорядочивает элементы по возрастанию методом выбора.
|
|
| DATF.TXT
|
| Прочитать в одномерный строковый массив (строки по 80 символов, количество строк не более 50), текст составленной Паскаль-программы. Используя функцию, подсчитать количество операторов в тексте программы. Перед каждым " end" должен стоять символ '; '.
| 1) Составить процедуру подсчета и печати количества групп операторов (заключенных в скобки " begin..end" ) в исходном массиве строк.
2) Составить функцию, возвра-щающую количество символов '; ' в строке.
|
|
| *.PAS
|
| В прямоугольном массиве, найдя с помощью процедуры место минимального элемента, удалить строку и столбец, проходящие через него. Исходные числа из файла читать, начиная с 99 числа.
| 1) Печатать массив до и после корректировки с помощью процедуры.
2) Построить процедуру, которая находит в передаваемом массиве номер строки и номер столбца самого маленького элемента.
|
|
| DATI.BIN
|
| Заполнить одномерный массив из М элементов. Затем с помощью процедуры заполнить одномерный целочисленный массив длиной 10 элементов, в котором i-й элемент указывает, сколько чисел исходного массива лежит в диапазоне от (i–1)*10 до i*10. Исходные числа из файла читать, начиная с 6 числа.
| 1) Исходный и полученный массивы печатать процедурой.
2) Построить процедуру, которая подсчитывает, сколько чисел в передаваемом ей одномерном целочисленном массиве попадает в заказанный диапазон.
| 100.. 200
|
| DATI.BIN
|
| Одномерный массив строк длиной по 80 символов заполнить из файла. Используя функцию, найти, какая русская буква (не различая прописные и строчные) встречается чаще. К функции обращаться, передавая ей строчную и прописную буквы и символьную строку массива.
| 1) Распечатать исходный массив процедурой.
2) Составить функцию, возвра-щающую суммарное количество вхождений двух заданных символов в заданной строке длиной 80 символов.
|
|
| RUS.TXT
|
| Прямоугольный символьный массив размером 10x30 заполнить из файла начиная с 29 символа. С помощью процедуры заполнить два одномерных массива длиной 10 элементов каждый. В первом массиве – наиболее частые символы, а во втором – их количество в каждой строке исходного массива. Получен-ные массивы также распечатать.
| 1) Исходный массив печатать процедурой.
2) Построить процедуру, которая в заказанной строке произвольного символьного массива (размерами до 10х30) находит, какой символ встречается чаще всего и сколько раз.
|
|
| SIMBOL.
TXT
|
| Заполнить исходную квадратную матрицу А числами из файла, начиная с 39-го числа. Используя процедуры, вычислить матрицу С=А*В, где В – транспонированная матрица А.
| 1) Печатать все массивы с помощью процедуры.
2) Построить процедуру транспонирования квадратной матрицы (размерами до 7х7).
3) Построить процедуру, перемножения двух квадратных матриц размерами до 7х7 (см. пояснения к 5 лабораторной).
|
|
| DATF.TXT
|
| Прочитать в одномерный строковый массив (строки по 80 символов), количество строк не более 50, текст составленной Паскаль-программы.
Используя функцию, подсчитать количество управляющих операторов в этой программе. Распечатать название и количество операторов каждого вида. Перед подсчетом перевести все латинские символы в прописные.
| 1) Составить процедуру печати двух массивов в форме: название оператора – количество вхождений. В процедуру передать строчный массив названий и числовой – количеств.
2) Составить функцию, возвра-щающую количество вхождений заданной строки в массиве из 50 строк по 80 символов. (Функцию использовать для строк: 'if', 'goto', 'for', 'case', 'while', 'repeat'.)
|
|
| *.PAS
|
| Используя процедуру заполнить одномерный целочисленный массив длиной 15 элементов, в котором каждый элемент указывает, сколько в исходном одномерном символьном массиве символов " а", " б" и т.д. до " п". Исходный массив заполнять из файла, пропустив 10 символов
| 1) Исходный массив печатать процедурой.
2) Построить процедуру, которая подсчитывает, сколько раз в передаваемом ей одномерном символьном массиве длиной N элементов встречается заказан-ный символ.
|
|
| SIMBOL.
TXT
|
| В прямоугольном массиве с помощью функции найти элемент, у которого самая маленькая сумма соседних вместе с ним. Полученный элемент напечатать. Исходные числа из файла читать, начиная с 29 числа.
| 1) Печатать исходный массив с помощью процедуры.
2) Построить функцию, которая для произвольного внутреннего элемента передаваемого ей массива (размерами до 11x7), находит сумму элемента и всех соседних с ним (всего 9 штук).
|
|
| DATF.BIN
|
| Прямоугольный символьный массив размером 20x30 заполнить символами из файла, пропустив 49 символов. С помощью процедуры в массиве найти и заменить на '*' элемент с самой маленькой суммой кодов соседних символов.
| 1) Построить процедуру, которая для заказанного внутреннего элемента массива подсчитывает сумму кодов восьми соседних элементов.
2) Печатать каждый массив с помощью процедуры.
|
|
| SIMBOL.
TXT
|
| Прямоугольный массив заполнить из файла каждым третьим числом. Используя логическую функцию распечатать для каждой строки исходного массива фразу " четных чисел больше" или " четных чисел не больше".
| 1) Распечатать исходный массив процедурой.
2) Составить функцию, возвра-щающую значение TRUE, если в заданной строке массива больше четных чисел и FALSE в противном случае.
|
|
| DATI.BIN
|
| В прямоугольном массиве с помощью процедуры сделать все строки упорядоченными по возрастанию. Исходные числа из файла читать, начиная с " К" -го числа, где К< 10 вводить с клавиатуры.
| 1) Печатать массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в заказанной строке передаваемого ей прямоугольного массива упорядочивает элементы по убыванию методом выбора.
|
|
| DATF.TXT
|
| Массив из M строк и пяти столбцов частично (первые три столбца) заполнить числами из файла, начиная с 33-го числа файла. Рассматривая первые три числа в каждой строке матрицы в качестве коэффициентов при нулевой, первой и второй степени Х, заполнить четвертый и пятый элементы значениями корней уравнения с помощью процедуры.
| 1) Построить процедуру, вычис-ляющую вещественные корни квадратного уравнения по трем передаваемым ей коэффициентам (если отсутствует один или оба вещественных корня, процедура должна возвращать значения корней, равные нулю).
2) Заполненный массив распе-чатать процедурой.
|
| -
| DATF.BIN
|
| С помощью процедуры в исходном массиве сделать все строки упорядоченными по возрастанию. Перед обращением к процедуре копировать строку в одномерный массив, после – копировать обратно. Исходный массив заполнить числами из файла, начиная с 18-го.
| 1) Печатать массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в одномерном целочисленном массиве упорядочивает элементы по возрастанию методом выбора.
|
|
| DATI.BIN
|
| Прямоугольный массив заполнить числами из файла, начиная с четвертого числа. С помощью функции в исходном массиве сделать элементы первой строки равными максимальному элементу соответствующего столбца.
| 1) Исходный и полученный массивы печатать процедурой.
2) Построить функцию, которая возвращает максимальное значение в заказанном столбце прямоугольного массива.
|
|
| DATI.TXT
|
| В квадратном массиве, используя процедуру сортировки, сделать все столбцы упорядоченными по возрастанию (перед обращением к процедуре копировать столбец в одномерный массив, после – копировать обратно). Исходные числа из файла читать, начиная с 18-го.
| 1) Печатать двумерный массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в одномерном вещественном массиве упорядочивает элементы по убыванию методом выбора.
|
|
| DATF.BIN
|
| Одномерный символьный массив длиной 300 элементов заполнить из файла, начиная с начала, и распечатать по 60 символов в строке. С помощью процедур сосчитать и распечатать, сколько трех-, шести- и девяти- символьных слов в массиве.
| 1) Построить процедуру, которая в передаваемом ей исходном массиве заменяет все разделители (символы: ' ', '.', ', ', '-', '(', ')', '" ') на единый – точку.
2) Построить процедуру, которая в передаваемом ей массиве определяет количество слов заданной длины (слово – символы между двумя точками.)
|
|
| SIMBOL.
TXT
|
| В прямоугольном массиве, используя процедуру, сделать все столбцы упорядоченными по возрастанию. Исходные числа из файла читать, начиная с 12-го.
| 1) Печатать массив до и после сортировки с помощью процедуры.
2) Построить процедуру, которая в заказанном столбце произвольного прямоугольного массива упорядочивает элементы по возрастанию методом обмена.
|
|
| DATI.BIN
|
| Одномерный символьный массив длиной 300 элементов заполнить из файла и распечатать по 60 символов в строке. С помощью функции заполнить два массива из 26 элементов, соответственно буквой и числом ее повторений (перед этим все символы массива сделать прописными). Упорядочить массив букв по убыванию повторений методом пересчета. Распечатать оба массива.
| 1) Распечатать исходный массив процедурой.
2) Составить функцию, возвра-щающую количество вхождений заданного символа в строке.
|
|
| LAT.TXT
|
| Используя процедуры, по исходным квадратным массивам (матрицам) А и В вычислить матрицу С=А*В+А. Исходные числа из файла читать, начиная с 18-го.
| 1) Печатать все массивы с помощью процедуры.
2) Построить две процедуры, которые для двух квадратных матриц (размерами до 7х7) вычисляют третью матрицу той же размерности: первая – сумму, вторая – произведение.
|
|
| DATF.TXT
|
| Одномерный символьный массив заполнить из числового файла, рассматривая его как символьный (пропуская концы строк). Используя функцию, заполнить два массива: цифр и числа их повторений. Пересортировать массив цифр по возрастанию числа повторений методом выбора. Распечатать оба массива до и после сортировки.
| 1) Распечатать исходный массив процедурой.
2) Составить процедуру печати массивов цифр и их повторений.
3) Составить функцию, возвращающую количество вхождений заданного символа в символьном массиве.
|
|
| DATF.TXT
|
| В прямоугольном вещественном массиве размером 9x7 заполнить первые пять столбцов числами, прочитанными из файла (читать начиная с 28 числа). С помощью этой процедуры в исходном массиве заполнить последний столбец
| 1) Построить процедуру, которая в заказанной строке прямоугольного массива 9х7 элементов находит самую большую по модулю разность двух элементов (не обязательно соседних) среди первых шести элементов и заносит найденное значение в седьмой элемент строки массива.
2) Заполненный массив распечатать процедурой
|
|
| DATF.BIN
|
| Прочитать в одномерный массив строк (длиной по 74 символа) первые 73 символа каждой строки файла DATF.TXT. Используя функцию, заполнить выходной одномерный строчный массив (элементы – строки длиной восемь символов) отдельными " словами" – изображениями чисел.
| 1) Составить строковую функцию, выбирающую из строки первое " слово" – первую подстроку между пробелами, заменяя при выборе в исходной строке выбранные символы пробелами.
2) Печать выходного массива по пять " слов" в строке выполнить с помощью процедуры.
|
|
| DATF.TXT
|
| Одномерный массив длиной M элементов из файла, начиная с 106 числа. Используя процедуру, заполнить целый одномерный массив длиной десять элементов, в котором каждый элемент будет равен суммарному количеству цифр каждого значения (от нуля до девяти) во всех числах прочитанного массива. Распечатать этот массив.
| 1) Исходный массив печатать процедурой.
2) Построить процедуру, которая подсчитывает, сколько цифр каждого значения (от нуля до девяти) встречается в передаваемом ей целом числе. Использовать операцию вычисления остатка от целочисленного деления на десять (целые числа содержат меньше шести цифр).
| 100..
|
| DATI.TXT
|
| Прямоугольный массив заполнить числами из файла, начиная с 33-го. С помощью функции в исходном массиве сделать элементы последнего столбца, равными сумме всех элементов соответствующей строки.
| 1) Исходный и полученный массивы печатать процедурой.
2) Построить функцию, которая возвращает сумму четных по значению элементов заказанной строки прямоугольного массива.
|
|
| DATI.BIN
|
Лабораторная работа N 8
Графика на Паскале
Задачи лабораторной работы
Вопросы, изучаемые в работе
- Изучение строения и использование процедур, функций, раздела Graph, используемого при выводе на экран информации в графической форме.
- Работа с цветом.
- Проектирование размещения графических объектов на экране.
Задание (общее ко всем вариантам)
- Построить в подходящей системе координат график заданной функции. В нижней строке экрана вывести уравнение, по которому строится график и диапазон изменения аргумента. Координатные оси графика должны быть размечены делениями, у которых должны стоять числовые значения.
- Исходные данные задаются константами в тексте программы.
- Результаты расчета выводятся в графической форме на экран.
Общие пояснения
Графический режим экрана
Чтобы использовать графику в программах на Турбо-Паскале необходимо научиться планировать размещение на экране выводимой информации (т.е. разобраться в алгоритме вывода графических объектов на экран) и уметь подключать и использовать стандартные графические процедуры и функции Турбо-Паскаля. Рассмотрим последовательно обе эти проблемы.
Для начала следует твердо усвоить, что экран дисплея может использоваться или в текстовом или в графическом режиме, но только не в обоих одновременно. Стандартное состояние экрана при работе в Турбо-Паскале (рассчитанном на операционную систему DOS) – в текстовый режим. При этом никакой графический вывод на экран невозможен, попытки вызова процедур графики приведут к ошибке и останову программы. После инициализации графики, бесполезными будут обращения к процедурам вывода на экран текстовой информации (с помощью Write и WriteLn), правда, без всяких сообщений и прерываний выполнения программы.
Перевод дисплея в графический режим (инициализация графики) позволяет получить доступ к любой точке экрана. При этом система координат экрана начинается в левом верхнем углу с точки, имеющей координаты 0, 0. Ось Х направлена слева направо, ось У – сверху вниз. Каждая точка экрана имеет две координаты Х и У и какой-то цвет из допустимой палитры. Такая точка называется пикселем. В зависимости от состава аппаратных средств ПЭВМ, на экране максимально может помещаться или 350 (для EGA-адаптера), или 480 (для VGA-адаптера) строк по 640 пикселов в каждой строке. Палитра обычно содержит 16 цветов.
Популярное: