Сумма массива паскаль
лабы по информатике, егэ
лабораторные работы и задачи по программированию и информатике, егэ по информатике
Pascal: Занятие № 5. Одномерные массивы в Паскале
Одномерные массивы в Паскале
Объявление массива
Массивы в Паскале используются двух типов: одномерные и двумерные.
Определение одномерного массива в Паскале звучит так: одномерный массив — это определенное количество элементов, относящихся к одному и тому же типу данных, которые имеют одно имя, и каждый элемент имеет свой индекс — порядковый номер.
Описание массива в Паскале (объявление) и обращение к его элементам происходит следующим образом:
var dlina: array [1..3] of integer; begin dlina[1]:=500; dlina[2]:=400; dlina[3]:=150; .
Объявить размер можно через константу:
Инициализация массива
Кроме того, массив может быть сам константным, т.е. все его элементы в программе заранее определены. Описание такого массива выглядит следующим образом:
const a:array[1..4] of integer = (1, 3, 2, 5);
Заполнение последовательными числами:
Ввод с клавиатуры:
writeln (‘введите кол-во элементов: ‘); readln(n); <если кол-во заранее не известно, - запрашиваем его>for i := 1 to n do begin write(‘a[‘, i, ‘]=’); read(a[i]); . end; .
✍ Пример результата:
Вывод элементов массива
var a: array[1..5] of integer; <массив из пяти элементов>i: integer; begin a[1]:=2; a[2]:=4; a[3]:=8; a[4]:=6; a[5]:=3; writeln(‘Массив A:’); for i := 1 to 5 do write(a[i]:2); <вывод элементов массива>end.
Для работы с массивами чаще всего используется в Паскале цикл for с параметром, так как обычно известно, сколько элементов в массиве, и можно использовать счетчик цикла в качестве индексов элементов.
Функция Random в Pascal
Для того чтобы постоянно не запрашивать значения элементов массива используется генератор случайных чисел в Паскаль, который реализуется функцией Random . На самом деле генерируются псевдослучайные числа, но суть не в этом.
var f: array[1..10] of integer; i:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); < интервал [0,9] >write(f[i],’ ‘); end; end.
Для вещественных чисел в интервале [0,1):
var x: real; . x := random;
Числа Фибоначчи в Паскале
Наиболее распространенным примером работы с массивом является вывод ряда чисел Фибоначчи в Паскаль. Рассмотрим его.
Получили формулу элементов ряда.
var i:integer; f:array[0..19]of integer; begin f[0]:=1; f[1]:=1; for i:=2 to 19 do begin f[i]:=f[i-1]+f[i-2]; writeln(f[i]) end; end.
На данном примере, становится понятен принцип работы с числовыми рядами. Обычно, для вывода числового ряда находится формула определения каждого элемента данного ряда. Так, в случае с числами Фибоначчи, эта формула-правило выглядит как f[i]:=f[i-1]+f[i-2] . Поэтому ее необходимо использовать в цикле for при формировании элементов массива.
Максимальный (минимальный) элемент массива
Псевдокод:
Поиск максимального элемента по его индексу:
Пример:
Поиск в массиве
Рассмотрим сложный пример работы с одномерными массивами:
var f: array[1..10] of integer; flag:boolean; i,c:integer; begin randomize; for i:=1 to 10 do begin f[i]:=random(10); write(f[i],’ ‘); end; flag:=false; writeln(‘введите образец’); readln(c); for i:=1 to 10 do if f[i]=c then begin writeln(‘найден’); flag:=true; break; end; if flag=false then writeln(‘не найден’); end.
Рассмотрим эффективное решение:
Задача: найти в массиве элемент, равный X , или установить, что его нет.
Алгоритм:
- начать с 1-го элемента ( i:=1 );
- если очередной элемент ( A[i] ) равен X , то закончить поиск иначе перейти к следующему элементу.
решение на Паскале Вариант 2. Цикл While:
Поиск элемента в массиве
Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):
Пример:
Циклический сдвиг
Программа:
Перестановка элементов в массиве
Рассмотрим, как происходит перестановка или реверс массива.
Решение:
Псевдокод:
Программа:
Выбор элементов и сохранение в другой массив
Решение:
Вывод массива B:
writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘)
Сортировка элементов массива
- В таком типе сортировок массив представляется в виде воды, маленькие элементы — пузырьки в воде, которые всплывают наверх (самые легкие).
- При первой итерации цикла элементы массива попарно сравниваются между собой:предпоследний с последним, пред предпоследний с предпоследним и т.д. Если предшествующий элемент оказывается больше последующего, то производится их обмен.
- При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой. Значит, число сравнений будет на одно меньше. То же самое касается каждой последующей итерации.
Выполнение на Паскале:
for i:=1 to N-1 do begin for j:=N-1 downto i do if A[j] > A[j+1] then begin с := A[j]; A[j] := A[j+1]; A[j+1] := с; end; end;
- в массиве ищется минимальный элемент и ставится на первое место (меняется местами с A[1]);
- среди оставшихся элементов также производится поиск минимального, который ставится на второе место (меняется местами с A[2]) и т.д.
Выполнение на Паскале:
for i := 1 to N-1 do begin min:= i ; for j:= i+1 to N do if A[j] i then begin c:=A[i]; A[i]:=A[min]; A[min]:=c; end; end;
- Выбирается и запоминается средний элемент массива (присвоим X):
Posted in
См. пузырьковая сортировка.
При второй итерации цикла (согласно вашим рисункам и коду ) нет надобности сравнивать первый элемент со вторым. Снова вы всех путаете =)
admin
Именно поэтому в коде : for j:=N-1 downto i do
downto i — то есть мы доходим сначала до первого элемента, потом до второго и т.д.
Bronislav
Смотрите. Ваш код работает. Но работает не так, как вы пишете перед этим. Он просеивает минимальный элемент с конца через весь массив до первой позиции (первого индекса если хотите). А не так как вы пишете: «При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой.» Соответственно вашему коду и вашим рисункам на второй итерации не сравнивается первый элемент (минимальный) со вторым, а не последний (который вообще не факт что максимальный) с предпоследним. Вот об чем речь. Или код меняйте или описание алгоритма перед кодом.
Владимир
А как насчёт странного способа поменки оандомням образом, конечно это долго , но все таки есть
Var
A: array[1..10] of integer;
I,e,r,r1: integer;
Begin
While i at 02:05
В сохранении в другой массив ошибка. Надо поменять местами счётчик и команду сохранения. В массиве В нет элемента 0.
Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
- Скачено бесплатно: 9293
- Куплено: 414
- Pascal-Паскаль->Программирование. Одномерные массивы Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
Понятие структуры
До сих пор мы работали с простыми типами данных – логический ( boolean ), целый ( integer , word , byte , longint ), вещественный ( real ), символьный ( char ). Любой алгоритм можно запрограммировать с помощью этих четырех базовых типов. Но для обработки информации о многообразном реальном мире требуются данные, имеющие более сложное строение. Такие сложные конструкции, основанные на простейших скалярных типах, называются структурами. Структура – некоторый составной тип данных, составленный из базовых скалярных. Если структура не изменяет своего строения на протяжении всего выполнения программы, в которой она описана, то такую структуру называют статической.
Массив – однородная совокупность элементов
Самой распространенной структурой, реализованной практически во всех языках программирования, является массив.
Массивы состоят из ограниченного числа компонент, причем все компоненты массива имеют один и тот же тип, называемый базовым. Структура массива всегда однородна. Массив может состоять из элементов типа integer , real или char , либо других однотипных элементов. Из этого, правда, не следует делать вывод, что компоненты массива могут иметь только скалярный тип.
Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу).
Индекс массива
Номер элемента массива называется индексом. Индекс – это значение порядкового типа, определенного, как тип индекса данного массива. Очень часто это целочисленный тип ( integer , word или byte ), но может быть и логический и символьный.
Описание массива в Паскале. В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:
где I – тип индекса массива, T – тип его элементов.
Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:
Обычно тип индекса характеризуется некоторым диапазоном значений любого порядкового типа : I 1 .. I n . Например, индексы могут изменяться в диапазоне 1..20 или ‘ a ‘..’ n ‘.
При этом длину массива Паскаля характеризует выражение:
Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:
С помощью индекса массива можно обращаться к отдельным элементам любого массива, как к обычной переменной: можно получать значение этого элемента, отдельно присваивать ему значение, использовать его в выражениях.
Опишем переменные типа vector и stroka :
далее в программе мы можем обращаться к отдельным элементам массива a или c . Например, a [5]:=23; c [1]:=’ w ‘; a [7]:= a [5]*2; writeln ( c [1], c [3]).
Вычисление индекса массива Паскаля
Индекс массива в Паскале не обязательно задавать в явном виде. В качестве индекса массива можно использовать переменную или выражение, соответствующее индексному типу. Иначе говоря, индексы можно вычислять.
Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива».
Пример программы с ошибкой массива Паскаля
Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80.
Будем считать, что хорошая программа должна выдавать предупреждающее сообщение в случае попытки обращения к несуществующим элементам массива. Не лишним будет проверять возможный выход как за правую, так и за левую границы массива, ведь не исключено, что в результате вычисления значения выражения получится число, находящееся левее границы массива Паскаля.
Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива.
Основные действия с массивами Паскаля
Как известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,
то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!).
Ввод массива Паскаля
Для того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, т.е. простой арифметический цикл, где параметром цикла будет выступать переменная – индекс массива Паскаля. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.
Пример фрагмента программы ввода массива Паскаля
Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ).
Пример фрагмента программы заполнения массива Паскаля случайными числами
Вывод массива Паскаля
Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.
Пример фрагмента программы вывода массива Паскаля
Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
Пример программы вывода массива Паскаля в столбик
На экране мы увидим, к примеру, следующие значения:
Пример решения задачи с использованием массивов Паскаля
Задача: даны два n -мерных вектора. Найти сумму этих векторов.
Решение задачи:
- Входными данными в этой задаче будут являться два одномерных массива. Размер этих массивов может быть произвольным, но определенным. Т.е. мы можем описать заведомо большой массив, а в программе определить, сколько элементов реально будет использоваться. Элементы этих массивов могут быть целочисленными. Тогда описание будет выглядеть следующим образом:
Ход решения задачи:
- определим количество элементов (размерность) массивов, введем значение n ;
- введем массив a ;
- введем массив b ;
- в цикле, перебирая значения индекса i от 1 до n , вычислим последовательно значения элементов массива c по формуле:
Текст программы :
Пример программы суммирования векторов
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту
Одномерные массивы в Паскале
Как организовать дистанционное обучение во время карантина?
Помогает проект «Инфоурок»
Описание презентации по отдельным слайдам:
Одномерные массивы в Паскале
Линейная таблица в программировании называется одномерным массивом. Массив – это пронумерованная конечная последовательность однотипных величин. Индекс – порядковый номер элемента массива Каждый элемент массива обозначается индексированным именем в следующей форме: Имя массива [индекс]. Например: Т [2], Т [10]. Месяц 1 2 3 4 5 6 7 8 9 10 11 12 Температура -21 -18 -8 5 10 18 20 24 17 5 -7 -18
Обычную книгу можно считать массивом. Книга состоит из множества однотипных элементов – страниц, У каждой страницы есть номер (индекс). Все страницы объединены под одним названием (название книги)
Дом также можно считать массивом. Дому соответствует один почтовый адрес (город, улица, номер). Элементами дома можно считать квартиры, у каждой из которых есть номер (индекс).
Футбольную команду можно считать «массивом». команда состоит из нескольких людей, у каждого из них есть номер (индекс).
Описание массива Массивы описываются в разделе описания переменных. Общий вид описания: Имя: array [нижний индекс .. верхний индекс] of тип Имя — имя переменной-массива; array — ключевое слово, обозначающее, что переменная является массивом; нижний_индекс и верхний_индекс — целые числа, определяющие диапазон изменения индексов элементов. тип — тип элементов массива. Пример: Т : array [1..12] of integer; Создается массив Т из целых чисел, с нумерацией от 1 до 12 (всего 12 элементов).
Заполнение массива данными, вводимыми с клавиатуры Цикл по счету: For i:=1 to 12 do begin Writeln (‘Введите ‘,I, ‘элемент массива’); Readln (T [i]); End; Цикл «ПОКА»: i:=1; While i 8 слайд
Вывод массива на экран Цикл по счету: For i:=1 to 12 do writeln (‘T [‘ ,I, ‘] = ‘, T[i] ); Цикл «ПОКА»: i:=1; While i 9 слайд
Задача 1. Сформировать массив из 5 элементов. Вывести на экран максимальный элемент массива. Program maximum; var T: array [1..5] of integer; var i,max:integer; begin for i:=1 to 5 do begin write (‘Введите ‘,i, ‘ число:’); формирование массива read (T [i]); end; max:= T[1]; for i:=1 to 5 do begin обработка массива if T[i]>max then max:=T[i] end; write (‘максимальное число: ‘,max); end.
Задача 2. Сформировать массив из 8 элементов. Найти сумму положительных элементов массива. Program summa; var T: array [1..8] of integer; var i,s:integer; begin for i:=1 to 8 do begin write (‘Введите ‘,i, ‘ число:’); формирование массива readln (T [i]); end; for i:=1 to 8 do Begin обработка массива if T[i]>0 then s:=s+ T[i] end; write (‘Сумма положительных элементов массива равна ‘,s); end.
Задача 3. Сформировать массив из 6 элементов. Найти сумму отрицательных элементов массива. Program summa_masiva; var T: array [1..6] of integer; var i,s:integer; begin for i:=1 to 6 do begin write (‘Введите ‘,i, ‘ число:’); read (T [i]); end; for i:=1 to 6 do if T[i] 12 слайд
Заполнение массива случайными числами Установка датчика случайных чисел: Randomize При выполнении функции Random (X) ее результатом становится целое число в диапазоне от 0 до x. При выполнении функции Random (50) – 25 ее результатом становится целое число в диапазоне от -25 до 25.
Заполнение массива случайными числами от 0 до 100 Program Example; Var Rand: array [1..20] of integer; Var i: integer; Begin <Установка датчика случайных чисел>Randomize; <Заполнение массива случайными числами и вывод их на экран>Writeln (‘Массив случайных чисел:’); For i:=1 to 20 do Begin Rand [i]:= random (100); Write (Rand [i]:4); End; End.
Формирование массива случайными числами
Задача 4: Заполнить массив случайными числами. Найти количество вхождений числа X в массив. Program Example; Var Rand: array [1..20] of integer; i, x, s: integer; Begin Randomize; Writeln (‘Массив случайных чисел:’); For i:=1 to 20 do Begin Rand [i]:= random (100); Write (Rand [i]:4); End; Writeln (‘Введи число x:’); Readln (x); For i:=1 to 20 do if Rand [i]:=x then s:=s+1; If s:=0 then write (‘В массиве нет числа ’,x) else write (‘Число ’,x, ‘ в массиве присутствует ’ ,s, ‘раз’); End.
Бесплатный
Дистанционный конкурс «Стоп коронавирус»
- Шихмагомедов Эльбрус АсланбековичНаписать 2220 02.05.2018
Номер материала: ДБ-1538584
Добавляйте авторские материалы и получите призы от Инфоурок
Еженедельный призовой фонд 100 000 Р
- 01.05.2018 134
- 01.05.2018 443
- 29.04.2018 174
- 29.04.2018 392
- 29.04.2018 228
- 29.04.2018 2040
- 29.04.2018 258
- 29.04.2018 495
Не нашли то что искали?
Вам будут интересны эти курсы:
Все материалы, размещенные на сайте, созданы авторами сайта либо размещены пользователями сайта и представлены на сайте исключительно для ознакомления. Авторские права на материалы принадлежат их законным авторам. Частичное или полное копирование материалов сайта без письменного разрешения администрации сайта запрещено! Мнение редакции может не совпадать с точкой зрения авторов.
Ответственность за разрешение любых спорных моментов, касающихся самих материалов и их содержания, берут на себя пользователи, разместившие материал на сайте. Однако редакция сайта готова оказать всяческую поддержку в решении любых вопросов связанных с работой и содержанием сайта. Если Вы заметили, что на данном сайте незаконно используются материалы, сообщите об этом администрации сайта через форму обратной связи.
Массивы в Паскале
Массивы в Паскале
Кроме простых типов данных в языке программирования Паскаль есть несколько сложных, одним из которых является регулярный тип. Структура, описываемая таким типом, называется массивом.
Массивы в Паскале представляют именованную собой совокупность элементов одного типа, ранжированных по возрастанию их индексов.
Рис. 1. Одномерный массив.
Объявление массива выполняется с помощью ключевого слова ARRAY с указанием размерности массива и типа его элементов.
Например, массив в разделе описания переменных можно задать так:
Var Mass: array[1..10] of integer;
Доступ к элементу в массиве осуществляется через указание индекса. Например, число 10 в массиве Mass имеет порядковый номер 6. Обращаться к конкретной ячейке следует по имени массива, указывая в квадратных скобках номер индекса, например, Mass [6].
Рис. 2. Двумерный массив.
Массивы могут быть как одномерными, так и многомерными. Двумерный массив выглядит в виде таблицы, трехмерный массив с виду похож на кубик Рубика.
Рис. 3. Трехмерный массив.
Заполнение массива данными
Заполнить пустой массив данными можно следующими способами:
- В тексте программы присвоить ячейкам числа.
- Организовать ввод с клавиатуры.
- Воспользоваться процедурой генерации случайных чисел.
Для отладки программного модуля на разных диапазонах значений, необходимо вводить новые числа в ячейки массива при каждом выполнении программы. Для этого лучше воспользоваться вводом с клавиатуры или генерацией случайных чисел. Однако, клавиатурный ввод неудобен в том случае, когда массив имеет большое количество ячеек. Поэтому удобнее всего воспользоваться генерацией.
Заполнение массива Mass (10) случайными числами можно программное реализовать так:
program Massiv ;
var i: integer; Mass: array[1..10] of integer;
begin
for i:=1 to 10 do Mass [i]:=random(100);
Чтобы увидеть на экране сгенерированный массив, можно дополнительно в основную часть программы добавить процедуру вывода элементов массива на экран:
for i:=1 to 10 do write (Mass [i],` `);
Как видно из примера, для организации перебора индексов массива, используется циклическая конструкция оператора повтора с заданным числом повторений FOR .. TO.. DO.
Действия с массивами
Работа с массивами данных основывается на решении таких типовых задач, как:
- Определение суммы или произведения элементов массива.
- Поиск элемента в соответствии с определенным критерием.
- Сортировка массива.
Рассмотрим примеры программ обработки массивов
Определение суммы элементов массива
Расчет суммы элементов массива выполняется за счёт последовательного добавления слагаемых. Для этого следует задать некоторую переменную, в которой будет сохраняться результат сложения. Для каждого элемента массива его значение складывается с текущим значением переменной-аккумулятора и снова сохраняется в этой переменной. Аналогично вычисляется и произведение.
Перед фрагментом программы, вычисляющим сумму или произведение, следует инициализировать переменную, в которой будет накапливать результат. Если вычисляется сумма, то начальное значение переменной должно быть равно нулю. Если определяется произведение, то переменная должна иметь начальное значение равное единице.
Программно определение суммы можно записать так:
var summ, i: integer; Mass: array[1..10] of integer;
for i:=1 to 10 do Mass[i]:=random(100);
for i:=1 to 10 do write (Mass[i],` `);
for i:=1 to 10 do summ:=summ+Mass[i];
writeln (‘Сумма элементов массива десяти целых чисел равна ‘, summ)
Поиск элемента массива
В программируемых задачах обычно ищут наибольшее или наименьшее число, или число равное заданному.
Для организации поиска элемента массива, равного заданному, необходимо последовательно перебирать каждый из ячеек массива и сравнивать значения ячеек с заданной величиной. Перебор элементов организуют с использованием оператора повтора.
Программа для поиска элемента в массиве может выглядеть так:
var x, i, k: integer; Mass: array[1..10] of integer;
write(‘Введите некоторое целое число k = ‘);
for i:=1 to 10 do Mass[i]:=random(100);
for i:=1 to 10 do write (Mass[i],` `);
for i:=1 to 10 do
if Mass[i]=k then n:=i;
if n=0 then write(‘В массиве нет числа, равного заданному’) else write (‘Порядковый номер искомого числа равен’,i)
Сортировка массива
Сортировка массива заключается в упорядочении элементов массива по возрастанию или убыванию. Существуют разные способы сортировок элементов массива.
Самый простой способ при сортировке по возрастанию заключается в поиске наименьшего элемента, который затем меняется местами с элементом первой ячейки. В неотсортированной части снова выбирается наименьший элемент и обменивается с первым неотсортированным. Это выполняется до тех пор, пока все элементы массива не встанут на свои места.
Что мы узнали?
Массивы представляют собой именованную совокупность данных одного типа. Ввод элементов массива удобнее всего осуществлять с клавиатуры или путем генерации случайных чисел. Обработка массива включает в себя вычисление суммы или произведения элементов массива, поиска элемента в соответствии с заданным условием и сортировку массива.