Структурированные типы данных языка программирования Pascal
Лабораторная работа, 18 Января 2012, автор: пользователь скрыл имя
Описание работы
Цель: Сформировать навыки создания и использования структурированных типов при написании программ на языке Pascal; изучить особенности использования и области применения массивов, записей, множеств и файлов.
Файлы: 1 файл
Лабораторная работа.doc
— 73.50 Кб (Скачать файл)Лабораторная работа
Тема: Структурированные типы данных языка программирования Pascal.
Цель: Сформировать навыки создания и использования структурированных типов при написании программ на языке Pascal; изучить особенности использования и области применения массивов, записей, множеств и файлов.
Ход работы
Задача 1. Даны два вектора а[1..n] of integer и в[1..m] of integer. Необходимо создать матрицу c[1..n,1..m] of integer такую, что с=0, если а*а+в*в<100, с=а+в в противном случае. В матрице с отыскать хотя бы один элемент равный ключевому key и указать номер; key=0.
Алгоритм
решения задачи
Программа на языке Pascal
Program pervaya;
const n=5;
m=6;
var key: integer;
i: integer;
j: integer;
a: array[1..n] of real;
b: array[1..m] of real;
c: array[1..n,1..m] of real;
begin
writeln('-----Vvedite massiv a-----');
for i:=1 to n do
begin
write('a[',i,']=');
readln (a[i]);
end;
writeln('-----Vvedite massiv b-----');
for j:=1 to m do
begin
write('b[',j,']=');
readln(b[j]);
end;
writeln('-------Massiv c------');
for i:=1 to n do
for j:=1 to m do
begin
if a[i]*a[i]+b[j]*b[j]<100
then c[i,j]:=0
else c[i,j]:=a[i]+b[j];
writeln('c[',i,j,']=',c[i][j]:
end;
readln;
writeln('Nulevie znacheniya imeyut index');
key:=0;
for i:=1 to n do
for j:=1 to m do
if c[i,j]=key
then writeln('i=',i,' j=',j);
readln
end.
Задача 2. Дан двумерный массив чисел типа Real. Подсчитать среднее арифметическое по строкам. Обнулить такие элементы, которые больше среднего арифметического.
Алгоритм решения задачи
Программа на языке Pascal
Program vtoraya;
const n=3;
m=2;
var s: real;
i: integer;
j: integer;
sr: array[1..n] of real;
c: array[1..n,1..m] of real;
begin
writeln('-----Vvedite massiv c-----');
for i:=1 to n do
for j:=1 to m do
begin
write('c[',i,',',j,']=');
readln (c[i,j]);
end;
writeln('--Srednee arifmeticheskoe po strokam--');
for i:=1 to n do
begin
s:=0;
for j:=1 to m do
s:=s+c[i,j];
sr[i]:=s/m;
writeln('sr[',i,']=',sr[i]:6:
end;
readln;
writeln('--Novaya matrica--');
for i:=1 to n do
for j:=1 to m do
if c[i,j]>sr[i] then c[i,j]:=0;
for i:=1 to n do
begin
for j:=1 to m do
write(' c[',i,',',j,']=',c[i,j]:4:2);
writeln(' sr[',i,']=',sr[i]:4:2);
end;
readln
end.
Задача 3. Создать и сохранить в текстовом файле Test.dat текстовое сообщение «Hello world!!!» и вывести на экран. Найти в нем все буквы “L”.
Алгоритм решения задачи
Программа на языке Pascal
Program tretya;
uses crt;
var tf: text;
t: string;
s: char;
k: integer;
begin
assign(tf,'Test.dat'); rewrite(tf);
writeln('----Vvedite text----');
readln(t);
writeln(tf,t);
close(tf);
clrscr;
writeln('-------------- Text iz faila --------------');
reset(tf);
writeln(t);
writeln('---------------------
k:=0;
while not eoln(tf) do
begin
read(tf,s);
if s='l' then k:=k+1;
end;
writeln('kolichestvo simvolov "L" v texte = ',k);
close(tf);
readln
end.
Ответы на контрольные вопросы:
- В качестве базового типа нельзя использовать вещественный и целый тип. То есть не верно.
- В тексте программы найдены следующие ошибки:
- С[1] – запись не верная, так как массив С двумерный, значит каждый элемент должен иметь два индекса (по строкам и столбцам);
- С[1,0] – запись не верная, так как индекс по столбцам должен начинаться с единицы;
- С(2,5) – запись не верная, так как индексы массива должны быть заключены в квадратные скобки;
- В[2,3] – массив В не описан в разделе переменных;
- F:=1 – F это массив, значит присвоить значение можно только какому либо элементу массива, запись которого должна содержать индексы в квадратных скобках;
- В описании массива F – чаще всего в качестве пита индекса используют интервальный F[1..4]
- Для поиска элемента “*” в текстовом файле необходимо открыть файл для чтения, считать текст из файла и присвоить строковой переменной в программе Str. После этого организовать цикл от 1 до length(Str) для перебора элементов строковой переменной. В цикле проверять: если Str[i]=’*’, то заветси счетчик для подсчета количества элементов k:=k+1 (начальное значение k=0 должно быть задано ранее). После завершения перебора элементов строки проверить: если k>0, то вывести сообщение о наличии символа в строке и можно напечатать количество этих символов.
Выводы по работе
В ходе выполнения работы были рассмотрены структурированные типы данных Pascal: массивы, множества, записи и файлы. Были изучены особенности их использования и области применения и сделаны следующие выводы:
- Типом массив
удобно пользоваться в том случае, если
нужно описать набор переменных с общим
именем, в котором каждая переменная имеет
свой уникальный номер, и все переменные
имеют одинаковый тип.
А тип запись предназначен для объединения набора переменных различного типа и с различными именами под одним общем именем. - Так как размер массива задается только в разделе описания и не может изменяться в ходе программы, то удобно в разделе констант завести константы для описания размера массива. В этом случае, если придется изменить размер, то достаточно заменить значения констант в начале программы, не изменяя текст.