- •Методические указания и задания для выполнения практических работ
- •Составила: преподаватель информатики
- •Практическая работа №3. Знакомство со средой программирования PascalAbc. Решение простых задач.
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Практическая работа №8. Связь одномерных и двумерных массивов с простыми типами.
- •Вариант 2
- •Вариант 3
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
Вариант 1
Дана матрица размера 4 на 4 целого типа. Найти сумму положительных элементов главной диагонали матрицы.
Задать матрицу размера 5 на 5 по следующей формуле:
.
Вывести полученную матрицу.Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент матрицы.
Задать матрицу размера 4 на 4 по следующей формуле:
.
Вывести полученную матрицу. Найти
количество отрицательных элементов
матрицы.
Вариант 2
Дана матрица размера 3 на 4 действительного типа. Найти сумму отрицательных элементов 3-й строки матрицы.
Задать матрицу размера 5 на 5 по следующей формуле:
.
Вывести полученную матрицу.Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент 2-го столбца матрицы.
Задать матрицу размера 4 на 4 по следующей формуле:
.
Вывести полученную матрицу. Найти
количество положительных элементов
матрицы.
Вариант 3
Дана матрица размера 4 на 3 действительного типа. Найти количество положительных элементов 2-й строки матрицы.
Задать матрицу размера 5 на 5 по следующей формуле:
.
Вывести полученную матрицу.Дана матрица размера 3 на 3 целого типа. Найти минимальный элемент матрицы.
Задать матрицу размера 4 на 4 по следующей формуле:
.
Вывести полученную матрицу. Найти сумму
отрицательных элементов матрицы.
Вариант 4
Дана матрица размера 4 на 4 целого типа. Найти количество отрицательных элементов главной диагонали матрицы.
Задать матрицу размера 5 на 5 по следующей формуле:
.
Вывести полученную матрицу.Дана матрица размера 3 на 3 действительного типа. Найти максимальный элемент 2-й строки матрицы.
Задать матрицу размера 4 на 4 по следующей формуле:
.
Вывести полученную матрицу. Найти сумму
положительных элементов матрицы.
Практическая работа №8. Связь одномерных и двумерных массивов с простыми типами.
Примеры задач.
Последовательность задана рекуррентно: a1=6; a2=3; an=2an-1-5an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти количество элементов последовательности меньше 5.
Program massiv;
Const n=10;
Var a:array[1..n] of integer;
i, j, s:integer;
Begin {вычисление элементов последовательности}
a[1]:=6;
a[2]:=3;
for i:=1 to n do
a[i]:=2*a[i-1]-5*a[i-2];
{нахождение количества элементов меньше 5}
s:=0;
for i:=1 to n do
if a[i]<5
then s:=s+1;
{печать количества}
writeln (‘количество элементов меньше 5=’,s);
end.
Дана матрица размера 4 на 4. Найти произведение элементов первой и третьей строк матрицы. Вывести полученный массив.
Program matrix;
Const n=4;
m=4;
Var a:array[1..n,1..m] of real;
i, j:integer;
b:array[1..m] of real;
Begin {ввод матрицы}
writeln(‘введите матрицу размера ’,n,‘ на ’,m);
for i:=1 to n do
begin
writeln(‘введите элементы ’,i,‘ строки’);
for j:=1 to m do
read(a[i,j]);
end;
{нахождение произведения}
for j:=1 to m do
b[j]:=a[1,j]*a[3,j];
{вывод массива}
writeln(‘массив’);
for j:=1 to m do
writeln(‘b[’,j,‘]=’, b[j]:0:2);
end.
Задания.
Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.
Вариант 1
Даны натуральные n и m. Вычислить двойную сумму
.Последовательность задана рекуррентно: a1=0,2; a2=2; an=2an-1-3an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти сумму отрицательных элементов.
Дана матрица размера 4 на 4 целого типа. Найти сумму элементов в каждой строке матрицы. Вывести полученный массив.
Вариант 2
Дано натуральное число n. Вычислить сумму
.Последовательность задана рекуррентно: a1=1; a2=-2; an=an-1+an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Сосчитать количество отрицательных элементов.
Дана матрица размера 4 на 4 целого типа. Умножить элементы 3-го столбца матрицы на 3. Вывести полученный массив.
Вариант 3
Дано натуральное число n. Вычислить сумму
.Последовательность задана рекуррентно: a1=-2; a2=3; an=3an-1-an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти сумму положительных элементов последовательности.
Дана матрица размера 4 на 4 целого типа. Заменить элементы 2-й строки матрицы на их модуль. Вывести полученный массив.
Вариант 4
Даны натуральные n и m. Вычислить двойную сумму
.Последовательность задана рекуррентно: a1=5; a2=-3; an=an-1-2an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Сосчитать количество положительных элементов.
Дана матрица размера 4 на 4 целого типа. Сложить элементы 1-го и 4-го столбцов матрицы. Вывести полученный массив.
Практическая работа №9.
Составление программ с использованием типа “Запись”.
Теория.
Все структурированные типы данных, с которыми мы уже познакомились, представляют собой совокупности однотипных величин.
Комбинированный тип данных – это структурированный тип, состоящий из фиксированного числа компонент (полей) разного типа. Комбинированный тип имеет еще и другое название – запись.
Обычно запись содержит совокупность разнотипных атрибутов, относящихся к одному объекту. Например, анкетные сведения о студенте могут быть представлены в виде информационной структуры.
Анкета студента:
Фамилия, Имя, Отчество;
Пол;
Дата рождения;
Адрес;
Курс;
Группа;
В Паскале эта информация может храниться в одной переменной типа Запись. Задать тип и описать соответствующую переменную можно следующим образом:
Type имя типа=record;
поле 1:тип;
поле 2:тип;
…
поле n:тип;
End;
Пр. Type anketa=Record;
FIO:String[50];
Pol:Char;
Dat:String[16];
Adres:String[50];
Curs:integer;
Grup:string[5];
End;
Var student:anketa;
К каждому элементу записи можно обратится используя составное имя, которое имеет следующую структуру: имя переменной.имя поля
Например: student.fio, student.dat и т.п. Если, например полю курс присвоить значение 3, то это можно сделать следующим образом:
Student.Curs:=3;
Поля записи могут иметь любой тип, в частности сами могут быть записями. Такая возможность используется в том, случае, когда требуется представить многоуровневое дерево (более 2 уровней).
Любая обработка записей, в том числе ввод и вывод, производится поэлементно.
Например, ввод сведений о 500 студентах можно организовать следующим образом:
For i:=1 to 500 do
With Student [i] do
Begin
Write (‘Ф.И.О.’); Readln (FIO);
Write (‘Пол (м/ж)’); Readln (Pol);
Write (‘Дата рождения’); Readln (Dat);
Write (‘Адрес‘); Readln (Adres);
Write (‘Курс‘); Readln (Curs);
Write (‘Группа’); Readln (Grup);
End;
В этом примере использован оператор присоединения, который имеет следующий вид:
With имя переменной типа запись do
Begin
Действия
End;
Он позволяет, один раз указав имя переменной типа запись после слова With, работать в пределах оператора с именами полей как с обычными переменными, т.е. не писать громоздких составных имен.
Примеры задач.
В группе 30 студентов. О каждом студенте известно: фамилия и оценки по 8 предметам. Найти среднюю оценку каждого студента и выдать на экран среднюю оценку и фамилию лучшего студента.
Program zapis;
Const n=30;
Type sved=record;
fio:string[50];
p1, p2, p3, p4, p5, p6, p7, p8:integer;
ocsr:real;
End;
Var s:array[1..n] of sved;
i,k: integer;
max: real;
Begin
writeln(‘введите данные о ’,n,‘ студентах’);
For i:=1 to n do
With spisok [i] do
Begin
Writeln (‘введите фамилию ученика‘);
Readln (famil);
Writeln (‘введите оценки по восьми предметам’);
Readln (p1, p2, p3, p4, p5, p6, p7, p8);
Clrscr;
End;
{нахождение среднего балла }
for i:=1 to n do
with s[i] do
ocsr:=(p1+p2+p3+p4+p5+p6+p7+p8)/8;
{нахождение максимального среднего балла}
max:=s[1].ocsr;
for i:=1 to n do
if s[i].ocsr>max
then
begin
max:=s[i].ocsr;
k:=i
end;
{печать сведений о лучшем ученике}
writeln(‘Лучший ученик’)
writeln (‘ФИО - ’,s[k].fio,‘ средний балл - ’ ,s[k].ocsr);
end.
Составить программу, которая позволит ввести данные о 10 автомобилях предприятия (марка, цвет, пробег, год выпуска, водитель) и выдаст сведения об автомобилях, старше 10 лет.
Program Avto;
Const n=10;
Type mash=record;
marka:string[25];
cvet:string[15];
probeg:real;
god_vip:integer;
voditel:string[25];
End;
Var s:array [1.. n] of mash;
i:integer;
Begin
writeln (‘Введите данные о ’,n,‘ автомобилях’);
for i:=1 to n do
with s[i] do
begin
write(‘введите марку автомобиля‘); readln(marka);
write(‘введите цвет автомобиля’); readln(cvet);
write(‘введите пробег автомобиля’); readln(probeg);
write(‘введите год выпуска’); readln(god_vip);
write(‘введите фамилию водителя’); readln(voditel);
end;
writeln(‘автомобили старше 10 лет’);
for i:=1 to n do
begin
with s[i] do
begin
if 2011-god_vip>10
then
begin
writeln (‘марка машины - ’,marka);
writeln (‘цвет машины - ’,cvet);
writeln (‘пробег - ’,probeg);
writeln (‘водитель - ’,voditel);
end;
end;
end;
End.
Составить программу, которая позволяет ввести данные о 15 деталях, находящихся на складе (название, количество, стоимость одной детали). Вывести название и количество самой дорогой детали.
Program detali;
Const n=15;
Type detal=record;
nazv:string[25];
kol:integer;
cena:real;
End;
Var s:array [1.. n] of detal;
i,k:integer;
max:real;
Begin
writeln (‘Введите данные о ’,n,‘ деталях’);
for i:=1 to n do
with s[i] do
begin
write(‘введите название детали’); readln(nazv);
write(‘введите количество этой детали на складе’); readln(kol);
write(‘введите цену 1-й детали’); readln(cena);
end;
max:=s[1].cena;
k:=1;
for i:=1 to n do
begin
with s[i] do
begin
if cena>max
then
begin
max:=cena;
k:=i
end;
end;
end;
writeln(‘самая дорогая деталь’);
writeln (‘название - ’,s[k].nazv);
writeln (‘количество - ’,s[k].kol);
End.
Составить программу, которая позволяет ввести данные о 20 кубиках (цвет, материал, длина ребра). Сосчитать количество кубиков с длиной ребра меньше 5 см.
Program kubiki;
Const n=20;
Type kub=record;
cvet:string[25];
material:string[25];
dlina_rebra:real;
End;
Var s:array [1.. n] of kub;
i,k:integer;
Begin
writeln (‘Введите данные о ’,n,‘ кубиках’);
for i:=1 to n do
with s[i] do
begin
write(‘введите цвет кубика’); readln(cvet);
write(‘введите материал, из которого изготовлен’); readln(material);
write(‘введите длину ребра’); readln(dlina_rebra);
end;
k:=0;
for i:=1 to n do
with s[i] do
begin
if dlina_rebra<5
then k:=k+1
end;
writeln(‘количество кубиков с длиной ребра меньше 5 см. =’,k);
End.
Задания.
Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.
