в какой строке не правильное описание массива
Тест. Тест «Массивы в Паскале»
Список вопросов теста
Вопрос 1
Для заполнения массива путем ввода чисел с клавиатуры мы используем оператор…
Варианты ответов
Вопрос 2
Найдите правильное описание массива.
Варианты ответов
Вопрос 3
Вопрос 4
Для подсчета суммы элементов массива А в цикле используем следующую запись…
Варианты ответов
Вопрос 5
Массив R[1]=12, R[2]=3, R[3]=-5, R[4]=-6, R[5]=4, R[6]=9, R[7]=0, R[8]=8.
Определите значение sum после выполнения следующего фрагмента программы:
sum:=1;
for i:=1 to 7 do
if r[i]>5 then
sum:=sum+r[i];
Вопрос 6
Как задается количество элементов массива?
Варианты ответов
Вопрос 7
Варианты ответов
Вопрос 8
Массив данных имеет
Варианты ответов
Вопрос 9
Что выполняет следующий фрагмент программы:
For i:=1 to N do
write (a[ i ], ‘ ’);
Варианты ответов
Вопрос 10
Массив R[1]=12, R[2]=3, R[3]=-5, R[4]=-6, R[5]=4, R[6]=9, R[7]=0, R[8]=8.
Определите значение переменной kol после выполнения следующего фрагмента программы:
kol:=0;
for i:=4 to 8 do
if r[i]
kol:=kol+1;
Вопрос 11
Массив R[1]=12, R[2]=3, R[3]=-5, R[4]=-6, R[5]=4, R[6]=9, R[7]=0, R[8]=8.
Определите значение переменной kol после выполнения следующего фрагмента программы:
kol:=0;
for i:=1 to 8 do
if r[i]>-2 then
kol:=kol+1
Вопрос 12
Массив R[1]=12, R[2]=3, R[3]=5, R[4]=6, R[5]=4, R[6]=9, R[7]=12, R[8]=8.
Определите значение переменной min после выполнения следующего фрагмента программы:
Вопрос 13
Массив R[1]=12, R[2]=3, R[3]=-5, R[4]=-6, R[5]=4, R[6]=9, R[7]=0, R[8]=8.
Определите значение переменной k после выполнения следующего фрагмента программы:
k:=0;
for i:=1 to 8 do
if r[i]>5 then
k:=k+i;
Вопрос 14
В записи D[4]=2.5,
2.5 обозначает
Варианты ответов
Вопрос 15
Что выполняет следующий фрагмент программы?
Min := a [1];
For i:=1 to N do
if a[i]
Варианты ответов
Вопрос 16
В какой строке НЕ правильное описание массива?
Варианты ответов
Вопрос 17
Какое количество данных может находиться в данном массиве
var ch: array[3..15] of integer; ?
Варианты ответов
Вопрос 18
Каким способом осуществляется ввод элементов массива
writeln(‘Введите количество элементов массива’);
Варианты ответов
Вопрос 19
Каким способом осуществляется ввод элементов массива
writeln(‘Введите количество элементов массива’);
Варианты ответов
Вопрос 20
Числовой одномерный массив А заполнен последовательно числами 4, 8, 13, 25. Укажите значение элемента А[3].
Тест с ответами: “Одномерные массивы”
1. Укажите, какой из операторов используется для различного вывода значений массива:
for i:=1 to 10 do write (a[i], ‘ ‘);
а) вывод значений в одну строку +
б) вывод значений столбиком
в) правильны оба варианта
2. Укажите какой из операторов используется для различного вывода значений массива:
for i:=1 to 10 do writeln (a[i], ‘ ‘);
а) вывод значений в одну строку
б) вывод значений столбиком +
в) правильны оба варианта
3. Укажите правильное описание массива:
а) Var a: array 86 of integer;
б) Var a: array [1:100] of integer;
в) Var a:array[1..100] of integer; +
4. Указан фрагмент программы: const b: array [1..5] of integer = (4, 2, 3, 5, 7). Укажите значение элемента массива b[4]:
а) 5 +
б) 3
в) 7
5. Сопоставьте способы заполнения массива значениями:
Ввод каждого значения с клавиатуры:
а) randomize;
for i:=1 to 10 do a[i]:=random(100)
б)
в) for i:=1 to 10 do read (a[i]) +
6. Сопоставьте способы заполнения массива значениями:
С помощью оператора присваивания (случайными числами):
а) for i:=1 to 10 do read (a[i])
б) randomize;
for i:=1 to 10 do a[i]:=random(100) +
в)
7. Сопоставьте способы заполнения массива значениями:
С помощью оператора присваивания (по формуле):
а) randomize;
for i:=1 to 10 do a[i]:=random(100)
б) for i:=1 to 10 do read (a[i])
в)
8. Что называется массивом:
а) совокупность конечного числа данных одного тип +
б) совокупность бесконечного числа данных одного типа
в) совокупность конечного числа данных различных типов
9. Какой ряд данных можно назвать целочисленным массивом:
а) 1,5,f,c,7
б) сентябрь, октябрь, ноябрь, декабрь
в) 1,3,5,7,9 +
10. Целочисленный массив обозначается:
а) А: array [1..5] of real;
б) А: array [1..5] of integer; +
в) А: array [1..5] of strong;
11. В массиве индексом называется:
а) порядковый номер элемента массива +
б) значение элемента массива
в) имя массива
12. В записи “a[5]=10” – А обозначает:
а) значение пятого элемента массива
б) имя массива +
в) индекс элемента массива
13. Что называется одномерным массивом:
а) совокупность конечного числа данных однотипных типов +
б) совокупность конечного числа данных различных типов
в) совокупность бесконечного числа данных однотипных типов
14. Целочисленный массив А заполнен последовательно числами: 15, 17, 13, 19. Укажите, значение элемента массива А[3]:
а) 17
б) 15
в) 13 +
15. Для заполнения массива путем ввода чисел с клавиатуры в Паскале используется оператор:
а) readln +
б) for i:=1 to 10 do
в) writeln
16. Выберите способ описания в программе массива F, состоящего из 20 целых чисел:
а) Var f:array[1..20] of real;
б) Var f:array[1..20] of integer; +
в) Var f:array[1..n] of integer;
17. Фрагмент программы
t:=a[n];
for i:=n−1 downto 1 do
a[i]:=a[i+1];
a[1]:=t;
а) сдвигает все элементы массива а вправо на одну позицию
б) присваивает первому элементу массива а значение переменной t
в) сдвигает все элементы массива а влево на одну позицию +
18. Оператор: for i:=1 to 20 do
if a[i] 0 then writeln (a[i]);
выводит на экран:
а) отрицательные элементы массива а
б) ненулевые элементы массива а +
в) положительные элементы массива а
23. Фрагмент программы заполнения целочисленного массива А десятью случайными числами из интервала [0, 10]:
а) for i:=1 to 10 do a[i]:=random(10);
б) for i:=1 to 9 do a[i]:=random(11)−1;
в) for i:=1 to 10 do a[i]:=random(11); +
24. Описание одномерного целочисленного массива:
а) var а: array [1..5] of real;
б) var а: array [1..5] of integer; +
в) var а: array [1..5] of char;
25. Каким способом можно заполнить массив:
а) классическим
б) циклическим
в) ввод с клавиатуры +
26. Каким способом можно заполнить массив:
а) табличным
б) по формуле +
в) графическим
27. Каким способом можно заполнить массив:
а) случайным образом +
б) теоретическим
в) любым удобным
28. Для печати массива в окне результатов в Паскале используется оператор:
а) readln (a[i]);
б) for i:=1 to 10 do
в) writeln(‘a[‘,i,’]=’,a[i]); +
29. Найдите правильное описание массива:
а) D: array [1..5] of integer; +
б) D [1..5]: array of integer;
в) D: of [1..5] array of integer;
30. Массив данных имеет:
а) один тип данных
б) общее имя и один тип данных +
в) общее имя
Урок 20. Описание массива
Урок из серии: «Язык программирования Паскаль»
В предыдущем уроке мы ввели понятие структурированных данных.
Изучение данных структурированного типа начнем с регулярного типа данных — массивов.
Название регулярный тип массивы получили за то, что в них объединены однотипные элементы, упорядоченные (урегулированные) по индексам, определяющим положение каждого элемента в массиве.
Массив — структурированный тип данных, состоящий из фиксированного числа однотипных элементов, объединённых одним именем, где каждый элемент имеет свой номер (индекс).
Когда возникает необходимость использовать массивы?
Рассмотрим следующую задачу: ввести с клавиатуры 30 целых чисел и вычислить их сумму, при этом каждое из чисел сохранить в памяти для последующей обработки.
Мы будем вынуждены ввести 30 имен переменных, что, естественно, очень неудобно. Как быть?
В этом случае лучше организовать массив. Имя у всех элементов будет общее. Чтобы получить доступ к элементу, достаточно будет указать имя массива и его порядковый номер.
И так, массивы будем использовать тогда, когда нужно обработать большой объем однотипной информации, которую необходимо сохранить в памяти для последующей обработки.
Определим еще несколько понятий, связанных с массивами.
Элемент массива — отдельная переменная, входящая в массив.
Размерность массива — количество индексов, по которым определяется положение элемента в массиве.
Индексы элемента массива — совокупность номеров, определяющих его местоположение в массиве.
Чтобы лучше понять, что такое размерность массива, сравним их с таблицами.
Одномерный массив сравним с таблицей, состоящей из одной строки. Для определения положения элемента в строке достаточно знать порядковый номер ячейки, в которой находится элемент. Поэтому в одномерном массиве один индекс — порядковый номер элемента.
Двумерный массив — прямоугольная таблица. Для определения положения элемента в прямоугольной таблице нужно знать порядковый номер строки и столбца, на пересечении которых находится ячейка. Поэтому в двумерном массиве — два индекса, номер строки и номер столбца.
И так, потребность использовать массив возникает всякий раз, когда при решении задачи приходится иметь дело с большим, но конечным количеством однотипных данных, которые необходимо хранить в памяти.
Переходим к изучению массивов.
Описание массива
Прежде чем использовать массив в программе, его необходимо предварительно описать. Описать массив — значит выделить в памяти место, достаточное для хранения всех его элементов. Для этого надо указать имя массива и длину массива — количество элементов в нем. В большинстве случаев при задании размеров массива используются диапазоны изменения значений индекса.
При описании массива используется зарезервированное слово array (массив), указываются диапазон изменения для индексов и тип компонентов массива.
Способ 1. Описание массива с определением типа.
Способ 2. Описание массива без определения типа.
Двумерный массив описывается так же, как и одномерный. Различие состоит в том, что вы должны указать диапазон для двух индексов массива — положение каждого элемента массива A[i, j] определяется номером строки и номером столбца.
Например, описание двумерного массива натуральных чисел размера N x М может быть задано следующей строкой:
Вернемся к нашей задаче. У нас 30 целых чисел, выделим для них 30 ячеек, объединим их общим именем А.
№ | A | Имя А — это общее имя для всех элементов. Элементы массива — это числа, их 30 |
1 | 25 | |
2 | 64 | |
3 | 27 | |
… | … | |
29 | 53 | |
30 | 89 |
Опишем одномерный массив из 30 целых чисел для этой задачи следующим образом:
Напомним, что раздел типов начинается со служебного слова type, после этого идет имя нового типа и его описание. Между именем типа и его описанием ставится знак «равно» (в разделе переменных между именем переменной и её описанием ставится двоеточие).
myarray — это имя нового типа;
array — служебное слово (в переводе с английского означает «массив», «набор»);
[1..30] — в квадратных скобках указывается номер первого элемента, затем, после двух точек, номер последнего элемента массива, в этом примере первый элемент имеет номер 1, а последний — номер 30;
Of — служебное слово (в переводе с английского — «из»);
Integer — тип всех элементов массива.
Так как каждый элемент имеет свой номер, то к каждому элементу можно обращаться непосредственно. Для того чтобы получить доступ к i-му элементу этого массива, необходимо записать: A[i] — сначала имя массива, а в квадратных скобках указывается номер элемента, к которому обращаемся, — i.
Например, обращаемся к первому элементу массива А — А[1], а к пятому — А[5].
Тот же самый массив может быть задан и при определении соответствующей переменной:
Особенность языка Паскаль
Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется. Это считается недостатком языка, так как не во всех программах можно заранее предсказать необходимый размер массива (который может определяться в зависимости от тех или иных условий, возникающих в процессе исполнения).
Для решения этой проблемы используют прием, позволяющий имитировать работу с массивами переменной длины, который заключается в следующем: в разделе описания предварительно определяют возможное максимальное значение размера массива, а затем в программе запрашивают текущее значение размера и используют это значение далее при заполнении и обработке массива.
На следующем уроке мы рассмотрим основные алгоритмы, которые используются при обработке данных, хранящихся в массиве.
Pascal: Занятие № 5. Одномерные массивы в Паскале
Одномерные массивы в Паскале
Объявление массива
Массивы в Паскале используются двух типов: одномерные и двумерные.
Определение одномерного массива в Паскале звучит так: одномерный массив — это определенное количество элементов, относящихся к одному и тому же типу данных, которые имеют одно имя, и каждый элемент имеет свой индекс — порядковый номер.
Описание массива в Паскале (объявление) и обращение к его элементам происходит следующим образом:
Объявить размер можно через константу:
Инициализация массива
Кроме того, массив может быть сам константным, т.е. все его элементы в программе заранее определены. Описание такого массива выглядит следующим образом:
const a:array[1..4] of integer = (1, 3, 2, 5);
Заполнение последовательными числами:
var a: array of integer; var n:=readInteger; a:=new integer[n];
var a: array of integer; var n:=readInteger; SetLength(a,n); // устанавливаем размер
begin var a: array of integer; a := new integer[3]; a[0] := 5; a[1] := 2; a[2] := 3; end.
begin var a: array of integer; a := new integer[3](5,2,3); print(a) end.
Ввод с клавиатуры:
var a:=ReadArrInteger(5); // целые var a:=ReadArrReal(5); // вещественные
Вывод элементов массива
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 с параметром, так как обычно известно, сколько элементов в массиве, и можно использовать счетчик цикла в качестве индексов элементов.
[Название файла: taskArray0.pas ]
В данном примере работы с одномерным массивом есть явное неудобство: присваивание значений элементам.
for var i:=0 to a.Length-1 do a[i] += 1;
Проход по элементам (только для чтения):
Пример:
foreach var x in a do Print(x)
Функция Random в Pascal
Диапазон в Паскале тех самых случайных чисел от a до b задается формулой:
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]:
или с дополнительными параметрами (диапазон [5;15]):
[Название файла: taskArray1.pas ]
Числа Фибоначчи в Паскале
Наиболее распространенным примером работы с массивом является вывод ряда чисел Фибоначчи в Паскаль. Рассмотрим его.
Получили формулу элементов ряда.
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.
[Название файла: taskArray2.pas ]
Максимальный (минимальный) элемент массива
Поиск максимального элемента по его индексу:
[Название файла: taskArray_min.pas ]
[Название файла: taskArray4.pas ]
[Название файла: taskArray5.pas ]
[Название файла: taskArray6.pas ]
Пример:
[Название файла: taskArray7.pas ]
Поиск в массиве
Рассмотрим сложный пример работы с одномерными массивами:
Для решения поставленной задачи понадобится оператор break — выход из цикла.
Решение Вариант 1. Цикл 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.
begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.IndexOf(3)) // 1 end.
или метод a.Contains(x) наравне с x in a :
begin var a := new integer[10]; a := arrRandomInteger(5,0,5); //[1,3,5,4,5] print(a.Contains(3)); // True print(3 in a)// True end.
Рассмотрим эффективное решение:
Алгоритм:
решение на Паскале Вариант 2. Цикл While:
Поиск элемента в массиве
Предлагаем посмотреть подробный видео разбор поиска элемента в массиве (эффективный алгоритм):
Пример:
[Название файла: taskArray8.pas ]
Циклический сдвиг
Решение:
Программа:
[Название файла: taskArray9.pas ]
Перестановка элементов в массиве
Рассмотрим, как происходит перестановка или реверс массива.
Решение:
Псевдокод:
Программа:
[Название файла: taskArray10.pas ]
Выбор элементов и сохранение в другой массив
Решение:
Вывод массива B:
writeln(‘Выбранные элементы’); for i:=1 to count-1 do write(B[i], ‘ ‘)
[Название файла: taskArray11.pas ]
Сортировка элементов массива
Выполнение на Паскале:
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;
[Название файла: taskArray12.pas ]
Выполнение на Паскале:
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;
[Название файла: taskArray13.pas ]
Рубрики:
См. пузырьковая сортировка.
При второй итерации цикла (согласно вашим рисункам и коду ) нет надобности сравнивать первый элемент со вторым. Снова вы всех путаете =)
admin
Именно поэтому в коде : for j:=N-1 downto i do
downto i — то есть мы доходим сначала до первого элемента, потом до второго и т.д.
Bronislav
Смотрите. Ваш код работает. Но работает не так, как вы пишете перед этим. Он просеивает минимальный элемент с конца через весь массив до первой позиции (первого индекса если хотите). А не так как вы пишете: «При второй итерации цикла нет надобности сравнивать последний элемент с предпоследним. Последний элемент уже стоит на своем месте, он самый большой.» Соответственно вашему коду и вашим рисункам на второй итерации не сравнивается первый элемент (минимальный) со вторым, а не последний (который вообще не факт что максимальный) с предпоследним. Вот об чем речь. Или код меняйте или описание алгоритма перед кодом.
Владимир
В сохранении в другой массив ошибка. Надо поменять местами счётчик и команду сохранения. В массиве В нет элемента 0.
Aurangzeb
А как заполнить случайными числами (из файла!) такой массив: Type mass=array[1..n] of smallint; var A:array[1..n] of mass… В файле они введены, допустим, квадратно! Потом её нужно перевернуть и записать в выходной файл! Подумайте!
Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
Программирование. Одномерные массивы Pascal-Паскаль
Понятие структуры
Массив – однородная совокупность элементов
Самой распространенной структурой, реализованной практически во всех языках программирования, является массив.
Другая особенность массива состоит в том, что к любой его компоненте можно обращаться произвольным образом. Что это значит? Программа может сразу получить нужный ей элемент по его порядковому номеру (индексу).
Индекс массива
Описание массива в Паскале. В языке Паскаль тип массива задается с использованием специального слова array (англ. – массив), и его объявление в программе выглядит следующим образом:
где I – тип индекса массива, T – тип его элементов.
Можно описывать сразу переменные типа массив, т.е. в разделе описания переменных:
При этом длину массива Паскаля характеризует выражение:
Вот, например, объявление двух типов: vector в виде массива Паскаля из 10 целых чисел и stroka в виде массива из 256 символов:
С помощью индекса массива можно обращаться к отдельным элементам любого массива, как к обычной переменной: можно получать значение этого элемента, отдельно присваивать ему значение, использовать его в выражениях.
Опишем переменные типа vector и stroka :
Вычисление индекса массива Паскаля
Индекс массива в Паскале не обязательно задавать в явном виде. В качестве индекса массива можно использовать переменную или выражение, соответствующее индексному типу. Иначе говоря, индексы можно вычислять.
Этот механизм – весьма мощное средство программирования. Но он порождает распространенную ошибку: результат вычислений может оказаться за пределами интервала допустимых значений индекса, то есть будет произведена попытка обратиться к элементу, которого не существует. Эта типичная ошибка называется «выход за пределы массива».
Пример программы с ошибкой массива Паскаля
Хотя данная программа полностью соответствует синтаксису языка, и транслятор «пропустит» ее, на стадии выполнения произойдет ошибка выхода за пределы массива Паскаля. При n =45 выражение n *2=90, компьютер сделает попытку обратиться к элементу массива a [90], но такого элемента нет, поскольку описан массив размерностью 80.
Будем считать, что хорошая программа должна выдавать предупреждающее сообщение в случае попытки обращения к несуществующим элементам массива. Не лишним будет проверять возможный выход как за правую, так и за левую границы массива, ведь не исключено, что в результате вычисления значения выражения получится число, находящееся левее границы массива Паскаля.
Из всего этого следует сделать вывод: программисту надо быть очень аккуратным при работе с индексами массива.
Основные действия с массивами Паскаля
Как известно, определение типа данных означает ограничение области допустимых значений, внутреннее представление в ЭВМ, а также набор допустимых операций над данными этого типа. Мы определили тип данных как массив Паскаля. Какие же операции определены над этим типом данных? Единственное действие, которое можно выполнять над массивами целиком, причем только при условии, что массивы однотипны, – это присваивание. Если в программе описаны две переменные одного типа, например,
то можно переменной a присвоить значение переменной b ( a := b ). При этом каждому элементу массива a будет присвоено соответствующее значение из массива b. Все остальные действия над массивами Паскаля производятся поэлементно (это важно!).
Ввод массива Паскаля
Для того чтобы ввести значения элементов массива, необходимо последовательно изменять значение индекса, начиная с первого до последнего, и вводить соответствующий элемент. Для реализации этих действий удобно использовать цикл с заданным числом повторений, т.е. простой арифметический цикл, где параметром цикла будет выступать переменная – индекс массива Паскаля. Значения элементов могут быть введены с клавиатуры или определены с помощью оператора присваивания.
Пример фрагмента программы ввода массива Паскаля
Рассмотрим теперь случай, когда массив Паскаля заполняется автоматически случайными числами, для этого будем использовать функцию random ( N ).
Пример фрагмента программы заполнения массива Паскаля случайными числами
Вывод массива Паскаля
Вывод массива в Паскале осуществляется также поэлементно, в цикле, где параметром выступает индекс массива, принимая последовательно все значения от первого до последнего.
Пример фрагмента программы вывода массива Паскаля
Вывод можно осуществить и в столбик с указанием соответствующего индекса. Но в таком случае нужно учитывать, что при большой размерности массива все элементы могут не поместиться на экране и будет происходить скроллинг, т.е. при заполнении всех строк экрана будет печататься очередной элемент, а верхний смещаться за пределы экрана.
Пример программы вывода массива Паскаля в столбик
На экране мы увидим, к примеру, следующие значения:
Пример решения задачи с использованием массивов Паскаля
Решение задачи:
Ход решения задачи:
Текст программы :
Пример программы суммирования векторов
Программирование
Исходники Pascal (127)
Справочник
Справочник по паскалю: директивы, функции, процедуры, операторы и модули по алфавиту