4 | -2 | 5 | 6 |
6 | 0 | -2 | 0 |
8 | 3 | 4 | 0 |
Задание №6.
Допустим, что нам известна таблица наблюдений за погодой за несколько лет и нужно подсчитать количество засушливых месяцев за этот период. Таблицу наблюдений обозначим за В, в ней число строк равно числу лет, а в каждой строке 12 элементов. Засушливым месяц считается, если количество осадков было ниже 10мм.
Алгоритм выглядит так:
Запросить “число лет” K.
Запросить таблицу В(к,12);
Присвоить n начальное значение 0.
Для каждого I от1 до к
Для каждого j от 1 до 12
если В(I, j)<10, то:
Присвоить n значение n+1
Конец ветвления
Конец цикла по j
Конец цикла по I
Сообщить “Число засушливых месяцев” ,n
Исполнить этот алгоритм может и компьютер, если его записать на языке программирования.
В программировании табличные данные чаще называют массивами.
На следующем уроке мы научимся использовать табличные данные в программах.
Домашнее задание.
Задание №1
Определить, как выглядит таблица А, состоящая из 4 строк и 5 столбцов, если для любых i и j
А(i, j)=max(i, j)
А(i, j)= 1, если i<=j, и 0, если i>j
Задание №2
Дана таблица В. Запишите, как выражаются её элементы В(i, j)через i и j, если таблица имеет вид:
1 | 2 | 3 | …. | n |
0 | 2 | 3 | …. | n |
0 | 0 | 3 | …. | n |
0 | 0 | 0 | …. | n |
в этой таблице n строки и n столбцов.
Задание №3
Для таблицы А (та же что и классной работе), выполнить действия.
Присвоить А(2,2) значение 2
Присвоить А(1,2) значение А(2,2)-А(1,2)
Если А(1,2)>3, то:
Присвоить А(3,3) значение А(3,1)/А(1,1).
Иначе:
Присвоить А(1,4) значение 3А(3,2).
Конец Ветвления.
Для каждого I от 1 до 3:
Присвоить А(I,4-I) значение А(4-I, I).
Конец ветвления
Тема урока №3«Описание массива на языке программирования »
Цель урока. Объяснить учащимся структуру описания массива на языке программирования.
Ход урока.
Проверка домашнего задания, выборочно по тетради.
Самостоятельная работа на 15 мин.
1 вариант | 2 вариант |
Определить значение ячеек таблицы, состоящей из 3 строк и 4 столбцов а(i,j)=max(i,j) | Определить значение ячеек таблицы, состоящей из 4 строк и 3 столбцов а(I,j)=|i-j| |
Выполнить действия. Присвоить А(1,1) значение 2 Присвоить А(1,2) значение А(2,2)-А(1,1) Если А(1,2)<3, то: Присвоить А(3,3) значение А(3,1)/А(1,1). Иначе: Присвоить А(1,4) значение 3А(3,2). Конец Ветвления. Для каждого I от 1 до 3: Присвоить А(I, I) значение А(4-I, I). Конец ветвления | Выполнить действия. Присвоить А(2,2) значение 2 Присвоить А(1,1) значение А(2,2)-А(1,1) Если А(1,2)>3, то: Присвоить А(3,3) значение А(3,1)+А(1,1). Иначе: Присвоить А(1,4) значение А(3,2)-3. Конец Ветвления. Для каждого I от 1 до 3: Присвоить А(I,3-I) значение А(3-I, I). Конец ветвления |
Новый материал.
В программировании чаще табличные величины называют массивами. И дается следующее определение.
Массив - это пронумерованная последовательность величин одинакового типа, обозначаемая одним именем. Элементы массива располагаются в последовательных ячейках памяти, обозначаются именем массива и индексом. Каждое из значений, составляющих массив, называется его компонентой (или элементом массива).
Массив данных в программе рассматривается как переменная структурированного типа. Массиву присваивается имя, посредством которого можно ссылаться как на массив данных в целом, так и на любую из его компонент.
Переменные, представляющие компоненты массивов, называются переменными с индексами в отличие от простых переменных, представляющих в программе элементарные данные. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа. Порядковый тип подразумевает, что все его составляющие идут в строгом порядке. Тип integer является порядковым, т. к. целые числа всегда идут друг за другом в определенном порядке, грубо говоря, мы всегда знаем, что после 1 будет 2, после 6 - 7 и т. д. С этих позиций тип real не является порядковым, т. к. мы не можем сказать, какое число будет следовать после, например, или 1.52.
Если за каждым элементом массива закреплен только один его порядковый номер, то такой массив называется линейным. Вообще количество индексов элементов массива определяет размерность массива. По этом признаку массивы делятся на одномерные (линейные), двумерные, трёхмерные и т. д. Двумерные массивы будут рассмотрены нами на следующих занятиях.
Пример: числовая последовательность четных натуральных чисел 2, 4, 6, ..., N представляет собой линейный массив, элементы которого можно обозначить А[1]=2, А[2]=4, А[3]=6, ..., А[К]=2*(К+1), где К — номер элемента, а 2, 4, 6, ..., N — значения. Индекс (порядковый номер элемента) записывается в квадратных скобках после имени массива. Например, A[7] - седьмой элемент массива А; D[6] - шестой элемент массива D.
Для размещения массива в памяти ЭВМ отводится поле памяти, размер которого определяется типом, длиной и количеством компонент массива. В языке Pascal эта информация задается в разделе описаний. На языке BASIC массив задается командой DIM(DIMENSION –размер).
Прежде чем использовать табличные данные в программах, надо дать указание машине, чтобы она отвела в памяти место для таблицы. Для этого необходимо знать количество элементов. Если это линейная таблица аn…..am, то количество определяется по формуле m-n+1. Например в таблице а4…..a67 всего 67-4+1=64 элемента.
Если это прямоугольная таблица, то количество элементов равно произведению количества элементов в строке на количество элементов в столбце, т. е. n*m ..
Например: а[1:10,1:5] в ней 10*5=50 элементов
При n=m - таблицу называют квадратной. Например: а[1:5,1:5] в ней 5*5=25 элементов
Самостоятельно ( 1 ученик у доски)
Определить количество элементов в линейных таблицах
а8…..а55, а81…..а332,
а0…..аm-1, а51…....аm,
Определить количество элементов в прямоугольных таблицах
а[1:4,1:r] f[n, n]
а[1:m,1:r] f[m, n]
В Паскале можно определить (описать) массив любой размерности. Ограничения, которые имеются при описании массивов следующие:
1) границы изменения индексов (размерность) необходимо определить либо в описании массива, либо до его описания в разделе констант.
PASCAL | VBASIC |
var | dim |
a:array [1..5,1..4] of real; | A(1 to 5,1 to 4) as single |
или | или |
const | const |
N=5; M=4; | N=5, m=4 |
var | Dim |
a:array [1..N,1..M] of real; | A(1 to n,1 to m) as single |
2) максимальный объем памяти, выделяемый под массив не должен превышать 64 КБайта.
Домашнее задание
Определить количество элементов в таблицах
а5…..а33, а[1:m,7:r]
а5…..аm, f[n, n]
Вопросы
1. Что такое массив?
2. Как определить местоположение элемента в массиве?
3. Чto такое индекс? Каким требованиям он должен удовлетворять?
4. Особенности расположения элементов массива в памяти ЭВМ. Особенности расположения в памяти элементов многомерных массивов.
5. Каким образом задается описание массива, что в нем указывается?
6. , 0бщие и отличительные черты одномерных, двумерных и n-мерных массивов.
стр. 214-215 вопросы устно с 1-6 читать $9.1 стр.181-184
Тема урока №4«Описание массива в Паскале (Vbasic). Способы заполнения массива»
Цель урока. Объяснить учащимся структуру описания массива на языке программирования. Охарактеризовать способы заполнения массива.
Ход урока.
Опрос учащихся
1. Чем характеризуются элементы массива?
2. Что объединяет элементы массива?
3. Как можно определить месторасположения элемента в массиве?
4. Что такое индекс? Каким требованиям он должен удовлетворять?
Новый материал.
Секрет могущества компьютера – высокая скорость и большая память. Мы уже научились использовать скорость машины: команды циклов позволяют составлять короткие алгоритмы, при выполнении которых компьютер быстро совершает очень длинные последовательности действий. До сих пор, однако, во всех алгоритмах объем информации, хранимый в памяти, в процессе выполнения алгоритма был очень невелик.
Теперь мы познакомились с массивами, которые предполагают работу с сотней, тысячей или сотней тысяч чисел. Как же задать массив в память машины? Мы уже выяснили, что массив характеризуется размером и типом элементов. Каждый элемент массива нумеруется и в памяти машины занимает 1 ячейку. Сколько элементов столько ячеек памяти они занимают. Особенностью языка Паскаль является то, что число элементов массива фиксируется при описании и в процессе выполнения программы не меняется.
Описание массива включает в себя имя, размер и базовый тип массива. Тип элемента массива называется базовым. Тип индекса определяет границы изменения значения индекса и может быть только целым. Так как не может быть пол элемента или полтора элемента. Для описания массива в Паскале предназначено словосочетание ARRAY OF (массив из).
![]() |
Формат записи для одномерного массива будет такой
var идентификатор: array[1..n]of тип
В отличие от Pascal в VBASIC не требуется строгое описание массива, число элементов можно задавать переменной, значение которой можно менять в ходе выполнения программы.
Описание массива осуществляется операторjм DIMENTION
DIM идентификатор (1.to. n) as тип
Опишем несколько массивов
Список класса из 20 человек
PASCAL | VBASIC |
var FIO: array[1..20]of string | DIM FIO(1 to 20) as string |
100 целых чисел
PASCAL | VBASIC |
Var a: array[1..100]of integer; | DIM a(1.to.100) as integer |
Формат записи для двумерного массива будет такой
PASCAL | VBASIC |
var идентификатор: array[1..n,1..m]of тип; | dim идентификатор [1.to. n,1.to. m] as of тип; |
Таблица 5 строк 4 столбца, состоящая из натуральных чисел
PASCAL | VBASIC |
var a: array[1..5,1..4]of word; | dim a [1.to.5,1.to.4] as of byte; |
Таблица шахматного турнира для 8 участников
PASCAL | VBASIC |
var a: array[1..8,1..8]of real; | dim a [1.to.8,1.to.8] as of real; |
При описании прямоугольной таблицы на первом месте записывается количество строк, на втором количество столбцов. В память машины заносится массив построчно. Элементы с меньшими значениями индекса хранятся в более низких адресах памяти.
Существует несколько способов занесения начальные данных массива в память машины, т. е. заполнения массива. Один из распространенных является ввод данных с клавиатуры с помощью оператора READ (INPUT) или READLN(INPUTBOX). Ввод значений осуществляется поэлементно с помощью цикла FOR
Например, необходимо в память машины ввести массив из 20 элементов (хотя бы список из 20 фамилий).
Это одномерный массив, который характеризуется 1 индексом, поэтому используем один цикл. Имя массива – FIO Размер 20 элементов, значит индекс меняется от1 до 20
PASCAL | VBASIC |
FOR i:=1 to 20 do | FOR i=1 to 20 |
readln(fio[i]); | INPUT fio(i) |
Next i |
Если нам необходимо ввести данные в виде таблицы 5 строк и 4 столбца, то используют 2 цикла, вложенных друг в друга
PASCAL | VBASIC |
FOR i:=1 to 5 do | FOR i=1 to 20 |
FOR j:=1 to 4do | FOR j=1 to 4 |
readln(a[i, j]); | INPUT a(i, j) |
Next j | |
Next i |
Еще один способ занесения начальных данных – это использование случайной функции RANDOM(I) (RND())
Для использования случайной функции необходимо подключить в программу стандартный модуль CRT командой USES CRT, это касается только PASCAL.
PASCAL | VBASIC |
randomize; | FOR i=1 to 20 |
FOR i:=1 to 20 do | A(i)=rnd(i) |
a[i]:=random(i); | Next i |
Также можно заполнить массив командой присваивания, если известны формулы вычисления значений.
Например, мы рассматривали на прошлом уроке задачу - A[i, j]:=i*i, и ввод элементов данной таблицы осуществим следующим образом:
PASCAL | VBASIC |
FOR i:=1 to 5 do | FOR i=1 to 5 |
FOR j:=1 to 4do | FOR j=1 to 4 |
A[i,j]:=i*i; | A(i,j)=i*i; |
Next j | |
Next i |
Вывод осуществляется тоже с помощью цикла или 2 вложенных циклов для прямоугольной таблицы.
Напишем вывод для таблицы прямоугольной и для линейной, в частности для наших предыдущих массивов.
PASCAL | VBASIC | ||
FOR i:=1 to 5 do | FOR i:=1 to 20do | FOR i=1 to 5 | FOR i=1 to 20 |
begin | writeln(fio[i]); | FOR j=1 to 4 | Print fio(i); |
FOR j:=1 to 4do | Print (I, j); | ||
write(a[I, j]); | Next j | ||
writeln; | |||
end; | Next i |
Мы рассмотрели 3 способы ввода элементов массива в память машины и вывод на экран.
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 |



