Связь одномерных и двумерных массивов с простыми типами.

  • docx
  • 10.11.2021
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала Л2-0007.docx

Практическая работа №8.

Связь одномерных и двумерных массивов с простыми типами.

 

Цель работы:  закрепление навыков решения задач с использованием одномерных и двумерных массивов на языке Паскаль.

 

Оборудование:  персональный компьютер, программа PascalABC, методические указания по работе (в электронном виде находятся в папке «Методические указания» на рабочем столе компьютера), карты-задания

 

Содержание и последовательность выполнения  практической работы:

1.             Инструктаж по технике безопасности

2.             Выполнение практического задания

 

Задания.

Студенты решают задачи на компьютерах по вариантам с помощью среды программирования PascalABC.

Вариант 1

1.             Даны натуральные n и m. Вычислить двойную сумму .

2.             Последовательность задана рекуррентно: a1=0,2; a2=2; an=2an-1-3an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Найти  сумму отрицательных элементов.

3.             Дана матрица размера 4 на 4 целого типа. Найти сумму элементов в каждой строке матрицы. Вывести полученный массив.

 

 

Вариант 2

1.             Дано натуральное число n. Вычислить сумму .

2.             Последовательность задана рекуррентно: a1=1; a2=-2; an=an-1+an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности. Сосчитать количество отрицательных элементов.

3.             Дана матрица размера 4 на 4 целого типа. Умножить элементы 3-го столбца матрицы на 3. Вывести полученный массив.

Вариант 3

1.             Дано натуральное число n. Вычислить сумму .

2.             Последовательность задана рекуррентно: a1=-2; a2=3; an=3an-1-an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности.  Найти сумму положительных элементов последовательности.

3.             Дана матрица размера 4 на 4 целого типа. Заменить элементы 2-й строки  матрицы на их модуль. Вывести полученный массив.

Вариант 4

1.             Даны натуральные n и m. Вычислить двойную сумму .

2.             Последовательность задана рекуррентно: a1=5; a2=-3; an=an-1-2an-2; где n=3, 4, … Вычислить первые 10 элементов последовательности.  Сосчитать количество положительных элементов.

3.             Дана матрица размера 4 на 4 целого типа. Сложить элементы 1-го и 4-го столбцов матрицы. Вывести полученный массив.

 

Практическая работа №9.

Составление программ с использованием типа “Запись”.

 

Цель работы:  закрепление навыков решения задач с данными типа «Запись» на языке Паскаль.

 

Оборудование:  персональный компьютер, программа PascalABC, методические указания по работе (в электронном виде находятся в папке «Методические указания» на рабочем столе компьютера), карты-задания

 

Содержание и последовательность выполнения  практической работы:

1.             Инструктаж по технике безопасности

2.             Выполнение практического задания

 

Теория.

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

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

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

Анкета студента:

1)      Фамилия, Имя, Отчество;

2)      Пол;

3)      Дата рождения;

4)      Адрес;

5)      Курс;

6)      Группа;

В Паскале эта информация может храниться в одной переменной типа Запись. Задать тип и описать соответствующую переменную можно следующим образом:

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, работать в пределах оператора с именами полей как с обычными переменными, т.е. не писать громоздких составных имен.

Примеры задач.

1.             В группе 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.

2.             Составить программу, которая позволит ввести данные о 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.

3.             Составить программу, которая позволяет ввести данные о 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.

4.             Составить программу, которая позволяет ввести данные о 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.

Вариант 1

1.             Известны данные о 5 пассажирах: ФИО, количество вещей и общий вес вещей. Вывести ФИО и количество вещей пассажира с максимальным общим весом вещей.

2.             Известны данные о 5 студентах: ФИО, рост и вес. Вывести ФИО и вес всех студентов, которые ниже 180 см.

3.             Известны данные о 5 кубиках: цвет, материал и длина ребра. Сосчитать количество красных кубиков.

Вариант 2

1.             Известны данные о 5 мячиках: цвет и радиус. Вывести цвет самого маленького мячика.

2.             Известны данные о 5 спортсменах: ФИО, возраст и вид спорта. Вывести ФИО и возраст тех спортсменов, которые занимаются плаванием.

3.             Известны данные о 5 рабочих: ФИО, стаж, оклад. Сосчитать количество рабочих с окладом больше 15 000 рублей.

Вариант 3

1.             Известны данные о 5 сортах конфет: название, цена и фабрика изготовитель. Вывести название и фабрику изготовитель самых дорогих конфет.

2.             Известны данные о 5 студентах: ФИО, год рождения и специальность. Вывести ФИО и специальность тех студентов, которые родились после 1994 года.

3.             Известны данные о 5 пассажирах: ФИО, количество вещей и общий вес вещей. Сосчитать количество пассажиров с количеством вещей больше 2.

Вариант 4

1.             Известны данные о 5 кубиках: цвет, материал и длина ребра. Вывести цвет и материал самого маленького кубика.

2.             Известны данные о 5 учениках музыкальной школы: ФИО, класс, инструмент. Вывести ФИО и класс тех из них, кто занимается игрой на скрипке.

3.             Известны данные о 5 спортсменах: ФИО, возраст, вид спорта. Сосчитать количество спортсменов младше 20 лет.

 


 

Посмотрите также