Это моя личная ссылка-приглашение на Stepik для вас. Регистрируясь по этой ссылке, записываясь на курсы и решая задачи, Вы помогаете автору данного сайта принять участие в конкурсе платформы Stepik! Подробности конкурса здесь: https://vk.cc/75rKuS
понедельник, 15 июля 2013 г.
Занятие 11. Одномерные массивы. Программирование для начинающих.
Прочитайте улучшенную версию этого урока «Одномерные массивы».
- Ещё более доступное объяснение
- Дополнительные материалы
- 9 задач на программирование с автоматической проверкой решения
Добрый день. Сегодня поговорим о массивах. Не будем тянуть быка за хвост, а сразу же возьмем его за рога. Вот представьте, вы хотите написать программу, которая будет вычислять среднее арифметическое ваших (или вашего чада) оценок за четверть/семестр.
И при этом вы хотите не только посчитать среднее, а еще и по какому предмету, у вас максимальный средний балл, сколько пятерок получено за все предметы вместе взятые, и сколько неудов поставлено за весь период и много еще чего. Ясное дело все эти оценки надо где-то хранить.
ИНФОРМАТИКА 9 класс: Массивы в Паскале | Одномерные массивы. Описание, заполнение вывод массива
Можно конечно завести пару сотен переменных, придумать им всем разные названия, да еще и так, чтобы отличать в каких именно хранятся оценки по математике, а в которых по русскому. А как средний балл потом как считать? Складывать между собой 200 разных переменных и результат сложения делить на 200?
Ну общая идея конечно такова, но в такой реализации её может исполнить только истинный мазохист. Но есть и хорошая новость для нас с вами. Для хранения больших объемов однотипной информации можно использовать массивы.
Как себе представить массив? Да легко. Можно считать, что массив это такая таблица, точнее один столбик (или одна строчка) некоторой таблицы. Возвращаясь к нашей задаче с оценками можно, это выглядело бы так.
Рис.1 Пример целочисленного массива оценок. |
Кстати, запомните, в массиве могут храниться данные только одного типа. Т.е. нельзя в одном массиве хранить данные типа int и типа float. В примере выше, все данные в массиве целые числа. Это и понятно, так как оценок 3.7, 4.2, 2.73 не предусмотрено.
Теперь разберемся с тем, как объявить массив, как с ним работать и чем он может нам помочь.
Для начала научимся объявлять массив. Ничего нового тут нет, Америку сейчас я не открою.
Итак, внимание на экран.
Рис 2. Объявление массива |
Паскаль с нуля [ч7]. Одномерные массивы.
Как видите, объявление массива почти не отличается об объявления переменной. Точно так же сначала записывают типа данных, которые будут храниться в массиве. Далее следует имя будущего массива. А теперь, как говорится, десерт, а точнее именно то, что отличает массив от переменной. После имени массива в квадратных скобках пишут размерность массива. Размерность массива это количество данных, которые предполагается хранить в массиве. В нашем случае это 8. То есть мы предполагаем хранить в нашем массиве 8 элементов.
Пришло время рассказать еще об одной особенности массива. Каждый элемент массива имеет свой номер. И причем нумерация элементов начинается с нуля. Поэтому многие программисты, вероятно чувствуя свою элитарность начинают счет с нуля. Ну вы понимаете. =)))
Рис 3. Массив оценок |
Кстати, это является не только поводом для шуток, но и для трудностей. Одной из самых распространенных ошибок, при работе с массивами является выход за пределы массива. Это когда у нас есть массив из 8 элементов, а мы пытаемся обратиться к элементу с номером 53. Как видите, размерность у нас 8, а последний номер элемента 7. Вроде бы ничего сложно, помни, что у тебя на один номер меньше, чем объявлял и всё. Но нет ошибались, ошибаются и будут ошибаться.
Теперь посмотрим как занести данные в массив, и как их оттуда извлечь.
Например, мы хотим сохранить данные в первый элемент массива ( помним, что это первый элемент это, элемент с цифрой 0).
Листинг 11.1
ochenka [0] = 4; // занести в нулевой элемент значение 4
printf( «%d » , ochenka[0]); // вывести значение хранящееся в // нулевом элементе
В общем и целом работа с отдельным элементом массива ничем не отличается от работы с обычной переменной. Элемент массива можно использовать везде, где вы использовали переменные. Единственно что нужно следить за типом данных, но это нужно делать и при работе с обычными переменными.
А теперь рассмотрим одну из задач, которые встречаются в ЕГЭ. Как будет выглядеть массив после выполнения следующей программы. Только не надо её переписывать в среду разработки, прокрутите программу ручками. Это называется компиляция в уме. Нарисуйте массив, и последовательно выполняйте операции, шаг за шагом.
int A[10], k=0;
Правильный ответ написан ниже, белым цветом.Выделите строку и сразу его увидите. Настоятельно вас прошу, проделать это упражнение самостоятельно, без помощи компьютера.
0 1 2 3 4 5 6 7 8 9
Вернемся на секундочку к нашему примеру, который мы описали в начале урока. Давайте таки найдем среднее арифметическое из оценок и посчитаем количество двоек например.
int main() <
int ochenka[8];
for ( int i=0; i printf ( «Vvedite %d ochenku:» , i+1);
scanf( «%d» ,
>
int k=0; //переменная счетчик для двоек
float s_a=0; //переменная для хранения среднего арифметического
for ( int i=0; i if (ochenka[i] == 2)
k++;
s_a+=ochenka[i];
>
printf( «Kolichestvo dvoek = %d srednii ball = %3.2fn» , k, s_a/8);
return (0);
>
Результат выполнения данной программы представлен на следующем рисунке.
Рис 4. Программа вычисляющая средний балл и количество двоек. |
Как видите, работа с массивами подразумевает неплохое владение операторами цикла. Редко используют лишь один какой-то элемент массива. Чаще изменения затрагивают все элементы массива, поэтому используются циклические конструкции. Работать же с конкретным элементом массива, приходится уже внутри цикла.
- научились основным действия при работе с массивами: объявление массива из нескольких элементов, присвоение конкретному элементу некоторого значение.
- попрактиковались выполнять программу в уме (на листочке)
Задание для практической работы:
- Выполнить задание, которое описано в уроке. Разобраться в нем, особенно если у вас не сразу получился правильный ответ.
- Задан целочисленный массив из N элементов. N
- Написать программу, которой на вход подается три массива оценок: сначала по русскому языку, потом по математике и наконец по физике. Причем, количество их заранее не известно, но не превышает 20 штук, по любому из предметов. По разным предметам может быть введено различное количество оценок. Ввод оценок производится пользователем с клавиатуры, причем сначала он вводит одну из цифр 1, 2, 3 которая определяет, по какому предмету эта оценка. (1 -русский язык, 2 — математика и 3 — физика)
Если Вам понравился этот урок, расскажите о нем вашим друзьям. В этом Вам могут помочь кнопки основных социальных сетей, расположенные ниже. Вам остается всего лишь кликнуть по любой из них.
Источник: www.youngcoder.net
Одномерные массивы (Руководство по программированию на C#)
Для создания одномерного массива используется оператор new и указывается тип элементов массива и число элементов. В следующем примере показано объявление массива, содержащего пять целых чисел:
int[] array = new int[5];
Этот массив содержит элементы с array[0] по array[4] . Элементы массива инициализируются до значения по умолчанию для типа элемента. Для целых чисел это 0 .
Массивы могут хранить любой указанный тип элемента. Например, в следующем примере приводится объявление массива строк:
string[] stringArray = new string[6];
Инициализация массива
Элементы массива можно инициализировать при объявлении. В этом случае не требуется спецификатор длины, поскольку он уже задан по числу элементов в списке инициализации. Пример:
int[] array1 = new int[] < 1, 3, 5, 7, 9 >;
Ниже приведено объявление массива строк, где каждый элемент массива инициализируется с использованием названия дня:
string[] weekDays = new string[] < «Sun», «Mon», «Tue», «Wed», «Thu», «Fri», «Sat» >;
Если массив инициализируется при объявлении, можно не использовать выражение new и тип массива, как показано в следующем коде. Такой массив называется неявно типизированным:
int[] array2 = < 1, 3, 5, 7, 9 >; string[] weekDays2 = < «Sun», «Mon», «Tue», «Wed», «Thu», «Fri», «Sat» >;
Переменную массива можно объявить без ее создания, но при присвоении нового массива этой переменной необходимо использовать оператор new . Пример:
int[] array3; array3 = new int[] < 1, 3, 5, 7, 9 >; // OK //array3 = ; // Error
Массивы типов значений и ссылочных типов
Рассмотрим следующее объявление массива:
SomeType[] array4 = new SomeType[10];
Результат этого оператора зависит от того, является ли SomeType типом значения или ссылочным типом. Если это тип значения, оператор создает массив из 10 элементов, каждый из которых имеет тип SomeType . Если SomeType является ссылочным типом, этот оператор создает массив из 10 элементов, каждый из которых инициализируется с использованием ссылки NULL. В обоих случаях элементы инициализируются до значения по умолчанию для типа элемента. См. дополнительные сведения о типах значений и ссылочных типах.
Получение данных из массива
Получить данные из массива можно с помощью индекса. Пример:
string[] weekDays2 = < «Sun», «Mon», «Tue», «Wed», «Thu», «Fri», «Sat» >; Console.WriteLine(weekDays2[0]); Console.WriteLine(weekDays2[1]); Console.WriteLine(weekDays2[2]); Console.WriteLine(weekDays2[3]); Console.WriteLine(weekDays2[4]); Console.WriteLine(weekDays2[5]); Console.WriteLine(weekDays2[6]); /*Output: Sun Mon Tue Wed Thu Fri Sat */
Источник: learn.microsoft.com
Массивы в Pascal. Одномерные массивы
Один из самых распространенных способов
организации данных – табличный.
Таблицы могут состоять из 1 строки (линейная):
а1 а2 а3 а4
и из нескольких строк и столбцов (прямоугольная):
а11 а12 а13 а14
а21 а22 а23 а24
а31 а32 а33 а34
3. Одномерные массивы
Массив – пронумерованная
совокупность ячеек памяти, названная
одним именем
Обозначаются массивы латинскими
буквами, строки нумеруются сверху вниз,
столбцы слева направо. Элемент,
расположенных на i – том месте линейной
таблицы обозначается A [ i ]
Название
массива
Номер
элемента
4.
Определение
1
1
2
3
4
5
6
7
44 22 10 Индекс
11 14 30 19
Имя массива
(порядковый
номер) элемента
массива
А
A [ 4 ] := 11;
Значение
элемента
массива
5. Массивы Одномерные массивы
Прежде чем использовать массив в
программе необходимо зарезервировать в
памяти место под него. Для этого
используется зарезервированное слово
array.
6.
Описание массива
2
Объявление массива в разделе описания
переменных:
Var имя:ARRAY[1..N] OF тип;
Например:
Имя массива
Количество Тип элементов
элементов
Var A:Array[1..10] of Integer;
Var Tem:Array[1..100] of Real;
7.
Описание массива
3
Количество элементов можно
описать в разделе констант
Const
m=10;
Var a : array [1.. m] of integer;
Иногда массив объявляют
как пользовательский тип
данных
Type t=array[1..10] of integer;
Var a : t;
8. Способы задания элементов массива:
Ввод с клавиатуры.
Write(‘Введите число элементов’);
Read(n);
Ввод элементов массива
For i:=1 to n do
Read(a[i]);
Writeln;
Вывод элементов массива
For i:=1 to n do
Write(a[i]:4);
1.
9. Способы задания элементов массива:
2. С помощью генератора случайных чисел.
Randomize;
Write(‘Введите число элементов’);
Ввод
элементов
Read(n);
массива
For i:=1 to n do begin
a[i]:=random(10);
Вывод элементов массива
Write(a[i]:4);
End;
10.
Вывод массива
8
а) в столбик:
For i:=1 to N do Writeln(a[i]:4:2);
б) в строку
For i:=1 to N do Write(a[i]:4:2);
i , 1, N
2.23
Вывод a i
2.23
3.19
1.44
4.93
5.58
3.19 1.44 4.93 5.58
11.
Вывод массива в две строки
9
var
A:array
[1..10]массив
of integer;
Задача
1. Заполнить
из 10 элементов случайными
Оператор
выводана экран, а
i:integer;
числами
из интервала от -10
до 10, вывести
без LN, вывод
затем
элемент
массива на 1 и
Begin увеличить каждый осуществляется
в
Пустой
оператор
повторно
вывести на экран.
Clrscr;
строку
вывода с LN, когда
for
i:=1 to
10 do begin
первая
строка
закончена, переходa[i]:= random(21)-10;
на вторую
write(a[i]:5);
Оператор вывода
end;
без LN, вывод
writeln;
осуществляется в
for i:=1 to 10 do begin
строку
a[i]:=a[i]+1;
write(a[i]:5);
end;
end.
12. Двумерные массивы
13. Массивы Двумерные массивы
Двумерный массив (матрица) – это
прямоугольная таблица, состоящая из
нескольких строк и столбцов.
-1 3 -2 6
Обозначение: a[i,j],
-4 0 5 -2
где i – номер строки,
9 -8 3 2
j – номер столбца
14.
Двумерный массив. Описание
5
Описание массива
a : array [1..10, 1..20] of real;
Количество
Имя Описание
строк
как массив массивов: Тип
массива
данных в
Количество
массиве
a: array [1..10] ofстолбцов
array [1.. 20] of real;
Одномерный
массив
Каждый элемент
которого в свою
очередь является
одномерным
массивом
15.
Двумерный массив. Заполнение
8
Цикл отвечающий за перебор строк.
первую,
вторую и так далее
Заполнение Берем
массива
с клавиатуры:
строки
For i := 1 to 3 do begin
For j := 1 to 4 do
begin
write(‘A[ ‘, i, ‘, ‘,j, ‘]= ‘);
readln(a[i, j])
end;
Цикл отвечающий за
end;
перебор ячеек в
каждой строке.
16.
Двумерный массив. Заполнение
9
Блок-схема заполнения с клавиатуры:
i , 1, N
Цикл отвечающий за
перебор строк.
(Внешний цикл)
j , 1, N
Ввод a i , j
Цикл отвечающий за
перебор ячеек в
каждой строке.
(Внутренний цикл)
17.
Двумерный массив. Заполнение
10
Заполнение массива случайными числами:
For i := 1 to 3 do begin
For j := 1 to 4 do begin
a[i, j] := random(21) — 10;
write(a[i, j]:6);
Когда i-я строка
end;
закончилась,
Write
без LN выводит
пишем пустой
writeln;
элементы
массива в
WriteLN
для
строку
end;
перехода на
новую строку
18.
Двумерный массив. Заполнение
i , 1, N
j , 1, N
11
Цикл отвечающий за
перебор строк.
(Внешний цикл)
a i , j=
случайное[-10;10]
Вывод a i , j
Цикл отвечающий за
перебор ячеек в
каждой строке.
(Внутренний цикл)
19.
Одномерный массив
Одномерный массив можно рассматривать как список однотипных элементов.
Например, список фамилий студентов группы – одномерный массив, численные
данные о средней температуре за месяц — одномерный массив, буквы русского
алфавита — одномерный массив.
В Бейсике элементы массива располагаются в последовательных ячейках памяти. Это
означает, что массив занимает непрерывную область памяти. Прежде чем мы
сможем обращаться к массиву из программы, надо указать, сколько памяти
необходимо для размещения массива. Всему массиву, определяется объемом
памяти, занимаемым одним элементом массива умноженным на число элементов
в массиве. Поэтому нужно указать максимальное число элементов массива.
В Бейсике фирмы Microsoft описание размера массива делается с помощью
оператора DIM, который имеет следующий синтаксис:
DIM имя массива (максимальное число элементов массива)
Например:
DIM S(5)
DIM M(25)
S имя массива, 5- максимальное число элементов массива,
M имя массива, 25- максимальное число элементов массива.
20.
Присваивание значений элементам массива
1 способ (заполнение массива с помощью оператора ввода
CLS
INPUT “Введите количество элементов массива”; N
DIM A(N)
FOR I =1 TO N
PRINT “Введите”; i ; “элемент массива”
INPUT A(I)
NEXT I
FOR I=1 TO N
PRINT A(I)
NEXT I
Результаты работы программы для 3-х элементов будут выглядеть так:
Введите 1 элемент массива
? 23
Введите 2 элемент массива
? -54
Введите 3 элемент массива
? 21
23
-54
21
21.
Присваивание значений элементам массива
2 способ (заполнение массива с помощью генератора случайных чисел)
DIM S(IOO)
FOR i=1 ТО 100
S(i) = 1+INT(1000*RND)
NEXT i
22.
В двумерном массиве каждый элемент
фиксируется номером строки и столбца, на
пересечении которых он расположен.
Положение элемента в двумерном массиве
определяется
двумя
индексами.
Они
разделяются запятой.
В качестве индексов могут использоваться
любые арифметические выражения, константы,
переменные. Если арифметическое выражение
содержит дробную часть, то при определении
индекса она отбрасывается.
При появлении отрицательного значения
индекса вызывает сообщение об ошибке.
23. Обращение к элементам массива При обращении к элементу двумерного массива необходимо указывать два индекса: номер строки и номер столбца.
При обращении к элементу
двумерного массива необходимо
указывать два индекса: номер строки и
номер столбца.
57
34
56
21
44
88
90
11
91
45
88
92
0
37
73
67
85
16
42
30
22
65
92
49
64
27
82
19
62
37
99
10
35
21
11
Элемент двумерного массива А(3,6) равен 30
24. Описание двумерного массива
Для определения двумерного массива в
программе используется тот же оператор
DIM, только при определении размера
необходимо указать два индекса –
количество строк и столбцов:
DIM A(5,7)
Данное описание предполагает, что в массиве
с именем А будет 5 строк и 7 столбцов.
25.
DIM A(N)
FOR I = 1 TO N
INPUT A(I)
NEXT I
FOR I = 1 TO N
PRINT A(I)
NEXT I
DIM A(M,N)
FOR I = 1 TO M
FOR J = 1 TO N
INPUT A(I,J)
NEXT J
NEXT I
FOR I = 1 TO M
FOR J = 1 TO N
PRINT A(I,J)
NEXT J
NEXT I
26. Пример 2 В одномерном массиве вычислить минимальный элемент
program minimum;
uses crt;
var a:array[1..10] of integer;
i,n,min:integer;
begin
clrscr; write(‘Введите число элементов’);
read(n);
for i:=1 to n do
read(a[i]); writeln;
for i:=1 to n do
write(a[i]:4);
min:=a[1];
for i:=2 to n do
if a[i] writeln;
write(‘Мин. элемент= ‘,min);
readkey;
end.
27. Найти наименьший элемент одномерного массива.
INPUT N
DIM A(N)
FOR i=1 TO N
A(i)=INT(RND(1)*10)
NEXT i
K=1
MIN=A(1)
FOR i=2 TO N
IF A(i) NEXT i
? “Массив”
FOR i=1 TO N
?A(i);
NEXT i
? “Минимальный элемент массива”;MIN; “расположен на”;K;
“месте”
END
Источник: ppt-online.org