Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Какие бывают массивы

Рисуем простейшие фигуры | Работа с цветом. Заливка. Стиль линийи заливки | Используем в рисовании переменные величины | Использование случайных величинпри рисовании | Постановка задачи | Записываем программу целиком | Порядок описания переменных, процедур и других конструкций Паскаля | Управление компьютером с клавиатуры. Функции ReadKey и KeyPressed | Буфер клавиатуры | Использование пробела |


Читайте также:
  1. V) Массивы и функции
  2. Автоматизация поиска информации. Категория «Ссылки и массивы».
  3. Бывают ли “добрые” маги?
  4. Глава 12 СНЫ СБЫВАЮТСЯ
  5. Глава 9. Кормящая мать: что вы выбираете и какие могут быть препятствия
  6. Двумерные массивы
  7. Динамические массивы

Массивы могут быть одномерные, двумерные, трехмерные, четырехмерные и т.д.:

array [1..10] of Integer -одномерный массив 10 ячеек

array [1..10, 1..5] of Integer -двумерный массив 50 ячеек

array [1..10, 1..5, 1..2] of Integer -трехмерный массив 100 ячеек

array [1..10, 1..5, 1..2, 1..3] of Integer -четырехмерный массив 300 ячеек

 

Массивы бывают не только числовые, но и символьные, строковые и прочие. Подходит любой известный нам тип. Например:

array [1..50] of Char

Это означает, что в каждой из 50 ячеек должно находиться не число, а произвольный символ. Еще один пример:

array [1..50] of String

Здесь в каждой из 50 ячеек должна находиться строка. Примеры программ с такими массивами мы увидим в 12.13.

Границы индексов в квадратных скобках тоже могут быть разными, например:

array [20..60] of Real

Здесь под вещественные числа отводится 41 ячейка.

array [0..9, -10..30] of Real

Здесь под вещественные числа отводится 10*41=410 ячеек.

Вообще индексы могут быть не только числовыми, но и любыми порядковыми. Например,

array [‘А’..’Я’] of Real

Зачем это нужно, будет ясно в 12.8.

Полная синтаксическая информация о массивах будет приведена в 14.8.

 

Какая польза от массивов при программировании игр? Вряд ли хоть одну «умную» игру можно запрограммировать без применения массивов. Возьмем хотя бы «крестики-нолики» на поле 3 на 3. Вам придется рисовать на экране большие клетки, а в них – нолики (кружочки) после ваших ходов и крестики (пересекающиеся линии) после ходов компьютера. Но этого недостаточно. Чтобы компьютер мог поставить крестик в свободном поле, он должен хотя бы знать, а в каких клетках крестики и нолики уже стоят. Анализировать для этого информацию о пикселах экрана очень неудобно. Гораздо разумнее заранее организовать VAR a: array[1..3,1..3] of Byte и записывать туда в нужные места нолики после ходов человека и единички после ходов компьютера. Сразу же после записи в массив 0 или 1 программа должна рисовать в соответствующем месте экрана кружок или крестик. Мыслить компьютер мог бы при помощи примерно таких операторов – if (a[1,1]=0) AND (a[1,2]=0) then a[1,3]:=1. Это очевидный защитный ход компьютера.

 

Определения констант

Приведем программу вычисления среднегодовой температуры для задания 1 из 12.3.

VAR s,i:Integer; t: array [1..365] of Integer;

BEGIN

for i:=1 to 365 do ReadLn(t[i]);

s:=0;

for i:=1 to 365 do s:=s+t[i];

WriteLn(s/365)

END.

Пусть нам потребовалось переделать эту программу на вычисление средней недельной температуры. Для этого достаточно везде в тексте программы число (константу) 365 заменить на число (константу) 7. В больших программах одна и та же константа может встречаться десятки раз и подобный процесс может потребовать значительного расхода времени. В 10.4 мы уже сталкивались с такой ситуацией. Там мы нашли выход в том, что вместо константы записывали переменную величину. Но в нашем случае этого не получится, так как Паскаль запрещает задавать границу в описании массива переменной величиной. В таких случаях поступают следующим образом. Константе придумывают имя (как переменной), например k, и в специальном разделе constей задается значение. Вот наша программа с использованием константы k:

CONST k =365; {Обратите внимание, что в определении вместо := стоит = }

VAR s,i:Integer;

t: array [1..k] of Integer;

BEGIN

for i:=1 to k do ReadLn(t[i]);

s:=0;

for i:=1 to k do s:=s+t[i];

WriteLn(s/k)

END.

В приведенном виде программа стала универсальной. Теперь для ее переделки под средненедельную температуру достаточно в одном месте поменять определение k=365 на k=7.

Значению константы запрещено меняться в процессе выполнения программы, то есть запрещены операторы вида k:=30 и ReadLn(k). Паскаль присматривает за этим.

Тип константы указывать нельзя[10]. Паскаль сам догадается о типе по записи:

CONST n =800; {тип целочисленный}

e =2.7; {тип Real}

bukva =’ж’; {тип Char}

Slash =’/’; {тип Char}

slovo =’хорошо’; {тип String}

OK =true; {тип Boolean}

Имя константы образуется из букв и цифр так же, как и имя переменной. Важное отличие константы от переменной в том, что значение переменной задается на этапе выполнения программы, а значение константы - раньше, на этапе компиляции. Рекомендую вам там, где можно, вместо переменных применять константы. Программа получается строже.


Дата добавления: 2015-11-14; просмотров: 53 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Одномерные массивы| Действия над порядковыми типами

mybiblioteka.su - 2015-2024 год. (0.008 сек.)