Структурированные типы данных. Массивы
Оценка 5

Структурированные типы данных. Массивы

Оценка 5
Рабочие тетради
doc
информатика +1
10 кл—11 кл +1
25.04.2017
Структурированные типы данных.  Массивы
Занятие строится таким образом, что после прослушивания теоретического материала (10 –15 мин.), учащимся предлагается практическое задание, которое выполняется ими за 20 - 30 мин. и корректируется в процессе изучения материала в более сложную задачу по изучаемой теме. Автор сознательно избегал сложных примеров, будучи убежденными, в том, что гораздо важнее для учащихся понимание алгоритмов предлагаемых задач, приобретение навыков разработки алгоритмов, их программирования и выполнения на компьютере в течение одного занятия. Такой подход к изучению языка программирования позволяет сосредоточить внимание на самом процессе программирования, который в данном случае более важен для изучения языка, чем решение сложной задачи, наверняка трудной большинству учащихся. Такие задачи, по мнению авторов, неоправданно занимают большое количество учебного времени, превращая учителя из инициатора процесса обучения в диктатора.
Занятие 7ч1.doc
Определение массива данных.  Одномерные массивы. Примеры практической работы с массивами данных Структурированные типы данных.  Массивы       Занятие 7 1. Урок 1. Определение массива данных.  Одномерные массивы. 2. Урок 2. Примеры практической работы с массивами данных. 3. Урок 3. Примеры практической работы с массивами данных. 4. Контрольные вопросы и упражнения.  Рассматриваемые   ранее     типы   числовых   данных,   являлись  простыми    типами,   т.е.   константами   или переменными, хранящими или принимающими только одно определенное типом значение. На это в оперативной памяти компьютера определялась только одна ячейка памяти в виде байта или нескольких байт (слово, двойное слово и т.д., в зависимости от типа константы или переменной). Наряду   с   этим,   язык  Pascal  содержит   и   определяет  структурированные  типы   данных,   которые   могут представлять совокупности значений. Наиболее часто   используемым   структурированным   типом   данных является массив  данных. Урок 1.  Определение массива данных.  Одномерные массивы 1.1. Определение массива данных. 1.2. Одномерные массивы данных. Доступ к элементам массива. 1. 1. Определение массива данных Массив данных ­ это некое фиксированное количество констант или переменных одного типа. В этом случае в оперативной памяти компьютера резервируется заданное при определении массива количество ячеек памяти (байт, слово, двойное слово и т.д.). Составляющие массив данные определяются одним именем и называются элементами массива. Массив описывается в блоке описания переменных Pascal­программы и имеет следующий формат: <Имя массива данных> : array [a .. b, c .. d, e .. f,  … ] of <Тип данных  массива>; <Имя   массива   данных>  где  перечислены и имена других массивов, имеющих одинаковую размерность и тип;   ­     идентификатор,   определяющий   имя   массива.   Через   запятую   могут   быть <Тип данных массива>  ­  тип переменных массива, который может быть любым; a .. b, c .. d, e .. f …  ­  разделенные двумя точками пары начальных и конечных значений индексов элементов массива,  которые задаются явно в описании массива данных. Для указания местоположения (адреса) элемента массива служат  индексы  ­ целые переменные типа  byte, shortint, integer, word. Конкретное значение индекса (индексов) указывает местоположение (адрес) элемента массива. Количество   индексов   или   размерность   массива   в   системе   программирования    TP  7.0     может   быть   любым   и ограничивается размером  65520 байт. Физической моделью массива данных могут служить почтовые ящики, устанавливаемые в подъездах наших многоквартирных железобетонных жилищ. Отдельный почтовый ящик, в данном случае, является элементом массива почтовых   ящиков   и   имеет   свой   номер   ­   индекс,   а   его   объем   может   быть   заполнен   различной   информацией, доставляемой почтой. 1.2. Одномерные массивы данных.  Доступ к элементам  массива Массив данных называется одномерным или вектором, если для определения элемента массива необходимо и достаточно одной индексной переменной. Для определения размера одномерного массива, в блоке описания переменных  Pascal­программы требуется одна пара начальных и конечных значений индекса. Например, некоторый одномерный массив может быть определен как: Var mas :array[0 .. 99] of real; i :integer; т.е. массив вещественных данных mas размерностью в 100 элементов с целой, типа integer, индексной переменной  i. Доступ  к элементам массива  осуществляется  по конкретному  индексу,  который можно задать  явно  или вычислить в программе, например, фрагмент программы   WriteLn(mas[10]);   напечатает на экране дисплея значение 10­го элемента массива  mas и переместит курсор на следующую строку. Урок 2.  Примеры практической работы с массивами данных 2.1. Организация, формирование, производство вычислений. Рассмотрим несколько практических примеров организации, формирования и  преобразования     одномерных массивов,   а  так   же, производства различных вычислений и поиска  необходимой  информации  в  них. 42 Определение массива данных.  Одномерные массивы. Примеры практической работы с массивами данных 2.1. Организация, формирование, производство вычислений Задача. Сложить элементы двух массивов целых, положительных и отрицательных чисел, каждый из которых состоит из 5 элементов, и записать полученный результат в третий массив того же размера. Рассмотрим два варианта решения задачи. Вариант 1  Постановка задачи 1. Обеспечить организацию и формирование массивов явно ­ заданием   исходных данных в программе без участия оператора. 2. Вывести значения элементов исходных массивов на экран дисплея. 3. Произвести сложение элементов исходных массивов и записать в третий массив. 4. Вывести результат на экран дисплея. Алгоритм решения задачи 1. Присвоить каждому элементу исходных массивов конкретные значения. 2. Складывая элементы исходных массивов, имеющих  одинаковые индексы, формировать третий массив, указывая конкретно номера элементов этого массива. Программа решения этой задачи выглядит следующим образом. Program V1L08P1; {Сложение двух массивов данных и запись результата в третий массив} Uses Crt; Var  mas1,mas2,mas3 :array[1..5] of byte; begin ClrScr; {Формирование исходного массива mas1} WriteLn('Исходный массив mas1:'); mas1[1]:=1;WriteLn(mas1[1]:3); mas1[2]:=2;WriteLn(mas1[2]:3); mas1[3]:=3;WriteLn(mas1[3]:3); mas1[4]:=4;WriteLn(mas1[4]:3); mas1[5]:=5;WriteLn(mas1[5]:3); {Формирование исходного массива mas2} WriteLn('Исходный массив mas2:'); mas2[1]:=5;WriteLn(mas2[1]:3); mas2[2]:=4;WriteLn(mas2[2]:3); mas2[3]:=3;WriteLn(mas2[3]:3); mas2[4]:=2;WriteLn(mas2[4]:3); mas2[5]:=1;WriteLn(mas2[5]:3); {Формирование результативного массива mas3} WriteLn('Результат сложения двух исходных массивов mas1 + mas2'); mas3[1]:=mas1[1]+mas2[1];WriteLn(mas3[1]:3); mas3[2]:=mas1[2]+mas2[2];WriteLn(mas3[2]:3); mas3[3]:=mas1[3]+mas2[3];WriteLn(mas3[3]:3); mas3[4]:=mas1[4]+mas2[4];WriteLn(mas3[4]:3); mas3[5]:=mas1[5]+mas2[5];WriteLn(mas3[5]:3); {} ReadKey end. Результат работы программы Исходный массив mas1:   1  2  3  4  5 Исходный массив mas2:   5  4  3  2  1 Результат сложения двух исходных массивов mas1 + mas2:   6  6  6  6  6 В данном примере значение элементов массивов указывалось явно в тексте программы, а действия оператора для получения результата решения задачи заключаются только в запуске программы. Вариант 2 Постановка задачи 1. Значения элементов массивов вводить с клавиатуры. 43 2. Обеспечить интерактивный ввод исходных данных. 3. Результаты вычислений выводить на экран дисплея. Алгоритм  задачи (подробный) 1. Вызвать библиотечный модуль  Crt,  для обеспечения работы с экраном дисплея. 2. В блоке описания переменных определить имя первого массива mas1, второго mas2   и третьего   mas3 с размерностью 5. 4. Там же определить имя индексной переменной идентификатором  i  тип  byte. 5. Очистить   экран от возможно присутствующей там информации. 6. Вывести на экран сообщение:  "Введи значения массива  mas1". 7. Организовать цикл со счетчиком для ввода пяти значений масссива  mas1. 8. Вывести на экран сообщение:  "Введи значения массива  mas2." 9. Организовать цикл со счетчиком для ввода пяти значений массива  mas2. 10. Вывести на экран сообщение "Результат сложения двух массивов ­ массив mas3". 11. В следующем цикле складывать и выводить результат на экран дисплея. 12. Задержать изображение на экране до нажатия любой клавиши на клавиатуре. Программа решения задачи по варианту 2  имеет следующий вид. Program V1L08P2; {Сложение двух массивов данных, введенных с клавиатуры} Uses Crt; Var mas1,mas2,mas3 :array[1..5] of integer; i :byte; {Описание массивов переменных} begin ClrScr; {} WriteLn('Введи значения массива mas1');  for i:=1 to 5 do Read(mas1[i]); WriteLn; {} WriteLn('Введи значения массива mas2'); for i:=1 to 5 do Read(mas2[i]); WriteLn; {} WriteLn('Результат сложения двух массивов ­ массив mas3'); for i:=1 to 5 do begin mas3[i]:=mas1[i]+mas2[i]; Write(mas3[i]:3) end; {} ReadKey end. {Цикл ввода элементов массива mas1} {Цикл ввода элементов массива mas2} {Цикл сложения элементов массивов mas1 и mas2} Результат работы программы Введи значения массива mas1 4 ­2 8 ­4 5 Введи значения массива mas2 ­12 7 ­3 1 ­5 Результат сложения двух массивов  ­3   5   5  ­3   0 В  данном  примере,  исходные  для   решения   поставленной   задачи  массивы   были  организованы  циклической операцией.   Формирование   элементов   этих   массивов   происходит   посредством   ввода   их   значений   с   клавиатуры компьютера.   Затем   значения   элементов   исходных   массивов   с   одинаковыми   индексами   складываются,   а   результат помещается в третий массив. 44 Определение массива данных.  Одномерные массивы. Примеры практической работы с массивами данных Урок 3.  Примеры практической работы с массивами данных 3.1. Организация, формирование, поиск необходимой информации в массиве данных. 3.1. Организация, формирование, поиск необходимой информации в массиве данных Задача 1.   Дан       вектор,     состоящий     из 10­ти     элементов,     значения     которых представляют собой положительные действительные  и  отрицательные  числа  в диапазоне [­10, 10]. Вывести на экран дисплея номера (индексы) и значения отрицательных элементов массива.  Постановка задачи Значения  элементов массива  получить  их  генерацией  случайным  образом, используя функцию Random. 1. 2. Вывести на экран дисплея исходный массив чисел. 3. Вывести  на  экран  дисплея номера (индексы) и значения отрицательных элементов массива. Алгоритм  задачи 1. Вызвать библиотечный модуль  Crt,  для обеспечения работы с экраном дисплея. 2. В блоке описания переменных определить имя массива  mas. 3. Там же определить имя индексной переменной идентификатором  i  тип  byte. 4. Очистить   экран от возможно присутствующей там информации. 5. Вывести на экран сообщение:  "Исходный массив:" 6. Организовать      цикл   со  счетчиком  для    генерации    10 положительных и отрицательных   элементов массива  mas. 7. Вывести на экран сообщение "Номера (индексы) и значения отрицательных элементов массива:" 8. Организовать   цикл   со   счетчиком   для   вывода   на   экран   дисплея   номеров   (индексов)   и   отрицательных значений элементов массива. Задержать изображение на экране до нажатия любой клавиши на клавиатуре. 9. Program V1L08P3; {Печать отрицательных значений элементов массива и их индексов} Uses Crt; Var mas :array[1..10] of real; i :byte; {Описание массива и индексной переменной} {} begin ClrScr; Randomize; {Инициализация (подготовка) генератора случайных чисел} {Генерация 10­ти случайных значений элементов массива} WriteLn('Исходный массив mas[1..10]:'); for i:=1 to 10 do begin mas[i]:=10*(Random­Random);  {Формирование массива случ. чисел в диапазоне ­10 ­:­ 10} Write(mas[i]:6:2)            {Печать значений элементов массива в строку} end; WriteLn; WriteLn ('Индексы и значения отрицательных элементов массива:'); for i:=1 to 10 do {Перевод строки} {Печать сообщения} {Такой формат допустим} if mas[i]<0 then WriteLn('mas[',i:2,'] = ',mas[i]:6:2); {Логическое условие вывода} ReadKey end. Возможный вариант результата решения Исходный массив mas[1..10]:   0.31 ­6.58  3.99 ­1.57  0.53  3.93  7.70  2.34 ­5.49 ­4.47 Индексы и значения отрицательных элементов массива: mas[ 2] = ­6.58 mas[ 4] = ­1.57 mas[ 9] = ­5.43 mas[10] = ­4.47 Хотелось бы пояснить алгоритм работы строки, выделенной  в программе курсивом.   Выражение   в   скобках генерирует   случайные   действительные  числа  в  диапазоне  [­1,  1],  т.к. уменьшаемое  может быть случайно меньше вычитаемого. Множитель увеличивает диапазон генерации чисел  в 10 раз. 45 Задача 2.  Дан    вектор,   состоящий   из 10­ти   элементов,   значения   которых представляют собой  целые положительные   и отрицательные числа в диапазоне [­100, 100]. Вывести на экран дисплея значения наименьшего и наибольшего элементов массива.   Постановка задачи 1. Значения  элементов массива  получить  их  генерацией  случайным  образом, используя функцию Random в заданном по условию задачи диапазоне. 2. Вывести на экран дисплея исходный массив чисел. 3. Вывести  на  экран  дисплея значения минимального и максимального элементов массива. Алгоритм  задачи 1. Вызвать библиотечный модуль  Crt,  для обеспечения работы с экраном дисплея. 2. В блоке описания переменных определить имя массива  a  размерностью в 10 элементов  и  типом  shortint. 3. Там же определить имя индексной переменной идентификатором   i   тип   byte. Переменным, в которые записываются минимальное и максимальное значения массива присвоить имена  k  и  р  соответственно тип shortint. 4. Очистить   экран от возможно присутствующей там информации. 5. Вывести на экран сообщение:  "Исходный массив:" 6. Организовать         цикл     со     счетчиком     для       генерации       10     положительных   и   отрицательных элементов массива  a,  используя  выражение   n =  Round (100*(Random­Random))  и вывести  значения на экран дисплея. 7. Присвоить переменным  k  и  p  значение  первого  элемента массива. 8. Сравнивания в цикле последующие элементы массива с переменными  k  и  p  записать  в них  наименьшее и наибольшее  значения соответственно. 9. Вывести на экран сообщение "Наименьшее значение элемента массива: " и напечатать это значение. 10. Вывести на экран сообщение "Наибольшее значение элемента массива: " и напечатать это значение. 11. Задержать изображение на экране до нажатия любой клавиши на клавиатуре. Program V1L08P4; Наименьшее и наибольшее значения элементов массива} Uses Crt; Const n=10; Var a :array [1..n] of shortint; k,p :shortint; i :byte; {} begin ClrScr; Randomize; WriteLn('Исходный массив:'); {Инициализация (подготовка) генератора случайных чисел} {Описание константы} {Описание массива  и переменных} {Циклическая операция формирования массива} for i:=1 to n do     begin          a[i]:=Round(100*(Random­Random));   {Случайное целое число в диапазоне ­100 ­:­ 100}          Write(a[i]:4)     end; {} WriteLn; k:=a[1]; p:=a[1]; {} for i:=2 to n do     begin          if k>a[i] then k:=a[i];          if pa[i] then k:=a[i];        if p

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы

Структурированные типы данных. Массивы

Структурированные типы данных.  Массивы
Материалы на данной страницы взяты из открытых истончиков либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.
25.04.2017