Скачать 134.61 Kb.
|
Конспект по теме: Одномерные массивы Учитель информатики Батракова Л.В _____________________________________________________________________________. До сих пор мы работали с простыми типами данных – логический ( boolean ), целый ( integer , word , byte , longint ), вещественный ( real ), символьный ( char ). Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. Но для обработки информации в многообразном реальном мире требуются данные, имеющие более сложное строение. Такие сложные конструкции, основанные на простейших скалярных (простых) типах, называются структурами (сложными типами). Структура – некоторый составной тип данных, составленный из базовых скалярных. Если структура не изменяет своего строения на протяжении всего выполнения программы, в которой она описана, то такую структуру называют статической. Самой распространенной структурой, реализованной практически во всех языках программирования, является массив. Определение: Массив – фиксированная последовательность однотипных компонент (элементов), имеющая имя. Массивы состоят из ограниченного, заданного заранее, числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Количество компонент в массиве называется его размерностью. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип. Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу). Мas имя массива индекс элемент Mas[4] Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный и перечислимый. Описание массива в Паскале В языке Паскаль тип массива задается с использованием специального служебного слова array (англ. – массив), и его объявление в программе выглядит следующим образом: Type < имя _ типа >= array [ I ] of T; где I – тип индекса массива (любой порядковый тип: целочисленный, символьный, булевский, перечислимый, диапазон), T – тип его элементов (любой тип, кроме файлового). Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных (это локальное описание): Var a,b: array [ I ] of T; Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ’..’ n ’. Например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов: Type L=1..10; Month=(jan, feb,mar,apr,may,jun,jul,aug,sep,oct,nov,dec); Vector=array [1..10] of integer; Stroka=array [0..255] of char; Tem=array [Month] of real; Mas=array [L] of byte; Ch=array [char] of byte; С помощью индекса массива можно обращаться к отдельным элементам любого массива, как к обычной переменной: можно получать значение этого элемента, отдельно присваивать ему значение, использовать его в выражениях. Опишем переменные: Var a: vector; c: stroka; t: tem; x, y: mas; I: ch; далее в программе мы можем обращаться к отдельным элементам массива. Например, a [5]:=23; c [1]:=’ w ’; a [7]:= a [5]*2; writeln ( c [1], c [3]). Вычисление индекса массива ПаскаляИндекс массива в Паскале не обязательно задавать в явном виде. В качестве индекса массива можно использовать константу, переменную или выражение, соответствующее индексному типу. Иначе говоря, индексы можно вычислять. Например: a[5], a[n], a[n div 2] Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива». Пример программы с ошибкой Program primer _ error ; Type vector=array [1..80] of word; var n: integer; a: vector; begin n:=45; a[n*2]:=25; end . Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80. Будем считать, что хорошая программа должна выдавать предупреждающее сообщение в случае попытки обращения к несуществующим элементам массива. Не лишним будет проверять возможный выход как за правую, так и за левую границы массива, ведь не исключено, что в результате вычисления значения выражения получится число, находящееся левее границы массива Паскаля. Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива. Основные действия с массивами ПаскаляКак известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например, Var a , b : array [1..10] of real ; то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!). Ввод массива ПаскаляДля того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, т.е. простой арифметический цикл, где параметром цикла будет выступать переменная – индекс массива Паскаля. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания. Пример фрагмента программы ввода массива Паскаля Var A : array [1..10] of integer ; I : byte ; {переменная I вводится как индекс массива} Begin For i:=1 to 10 do Readln (a[i]); { ввод i- го элемента производится с клавиатуры } Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ). Пример фрагмента программы заполнения массива Паскаля случайными числами Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin randomize; For i :=1 to 10 do A [i]:= random (10); { i -му элементу массива присваивается «случайное» целое число в диапазоне от 0 до 10} Вывод массива ПаскаляВывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего. Пример фрагмента программы вывода массива Паскаля Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i :=1 to 10 do Write ( a [ i ],’ ‘); {вывод массива осуществляется в строку, после каждого элемента печатается пробел} Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана. Пример программы вывода массива Паскаля в столбик Var A: array [1..10] of integer; I : byte ; {переменная I вводится как индекс массива} Begin For i:=1 to 10 do Writeln (‘a[‘, i,’]=’, a[i]); { вывод элементов массива в столбик } На экране мы увидим, к примеру, следующие значения: a [1]=2 a [2]=4 a [3]=1 и т.д. Примеры решения задач с использованием массивов в ПаскалеЗадача 1: Даны два n - мерных массива. Найти сумму этих массивов. Решение задачи:
var a , b : array [1..100] of integer ;
Ход решения задачи:
c [ i ]= a [ i ]+ b [ i ];
Текст программы: Пример программы суммирования массивов Program summa; Var a, b, c: array [1..100] of integer; i, n: byte; Begin repeat Write (‘введите размерность массивов:’); Readln(n); Until (n>=1)and(n<=100); {* проверка, что введенное значение n не выходит за заданные в описании массива границы} For i:=1 to n do Readln (a[i]); { ввод массива a} For i:=1 to n do Readln (b[i]); { ввод массива b} For i:=1 to n do C[i]:=a[i]+b[i]; { вычисление суммы массивов } For i:=1 to n do write (c[i],’ ‘); { вывод массива с } end. (*) Замечание: Желательно во всех программах, при вводе значений переменных, проверять на соответствие заданным значениям. Задача 2: Дан n - мерный массив. Найти максимальный элемент и его местоположение в массиве. Решение задачи:
var a : array [1..100] of real;
Ход решения задачи:
if a[i]>max then begin max:=a[i]; imax:=i end; Замечание: так как после then выполняются два оператора, то используются операторные скобки begin … end;
Текст программы: Пример программы нахождения максимума в массиве Program max; Var a: array [1..100] of real; max:real; i, imax, n: byte; Begin Write (‘введите размерность массивов:’); Readln(n); For i:=1 to n do Readln (a[i]); { ввод массива a} Max:=a[1]; imax:=1; {первый элемент массива помещаем в max и запоминаем его индекс в переменной imax} For i:=2 to n do {поиск максимума среди остальных элементов массива} If a[i]>max then begin max;=a[i]; imax:=I end; Writeln(‘max=’,max,’ imax=’,imax); End. Список задач для самостоятельного решения
|
Методическая разработка «Одномерные массивы» на языке программирования... «Одномерные массивы» на языке программирования pascal в теории и практике школьного курса «Информатика и икт»/ Методическая разработка.... | Программа по формированию навыков безопасного поведения на дорогах... Данный урок рассматривается как обобщающий по пройденным темам “Одномерные массивы” и “Двумерные массивы”, а, кроме того, знакомит... | ||
Программа по формированию навыков безопасного поведения на дорогах... Цель урока: овладение системой знаний и умений по теме «Одномерные массивы», необходимых для применения в практической деятельности;... | Урок n 28 массивы Массив это множество однотипных элементов, объединённых общим именем и занимающих в компьютере определённую область памяти | ||
Московский физико-технический институт ( государственный университет) утверждаю Одномерные решетчатые системы. Теорема об отсутствии фазовых переходов при в системах малой размерности (одномерных и двумерных)... | Тема: Двумерные массивы. Цель Место работы: моу «Средняя общеобразовательная школа №177 с углубленным изучением отдельных предметов» Ново-Савиновского района г.... | ||
Реферат по информатике и икт по теме: “ Массивы” С понятием "массив" приходится сталкиваться при решении научно-технических и экономических задач обработки совокупностей большого... | «Приспособление животных и растений Хабаровского края к условиям жизни в наших лесах» Большую часть Хабаровского края занимают лесные массивы, в основном, хвойные. Из других деревьев здесь произрастают дуб, вяз, ясень,... | ||
Программа по формированию навыков безопасного поведения на дорогах... Использование кейсов сводится не столько на приобретение конкретных знаний, сколько на развитие способностей, умений и навыков, среди... | "Сравнение уровней raid массивов в серверах для различных компаний."... Из такой цели (безопасная защита данных на работающих дисковых накопителях) выросли raid-массивы, а разнообразие пользовательских... | ||
Способ определения относительного содержания протопорфирина IX в биологических тканях. Формула Отличающийся тем, что дополнительно формируют массивы данных, состоящие из интенсивностей флуоресценции кератина {Y1, Y2, Y3 …Yn}... |