Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Инфрм отв.rtf
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
11.08 Mб
Скачать

36) " Массивы в языке с. "

1. Цель урока:      Сегодня Вы познакомитесь с новым разделом в языке С. Это массивы. Очень интересный раздел. Ваши возможности в языке С намного расширятся в связи с изучением этого раздела. Вы научитесь вводить строки, исправлять их, решать многие сложные задачи и алгоритмы, и вообще это будет более живая работа, чем было до сих пор.      Цель нашего очередного урока - разобраться с понятием массива и решить первую задачу на эту тему.      Хотя должен Вам сказать, что по идее полагалось бы вначале досканально изучить простые и вложенные циклы прежде чем изучать массивы. Но я думаю, что лучше раньше начать изучение массивов. Тогда ученикам станет в дальнейшем более ясно назначение и необходимость самих циклов и область их применения в информатике. Это мое личное мнение. Я считаю допустимым как можно раньше вводить в школе и использовать это понятие на уроках по программированию, особенно для будущих программистов.  2. Понятие массива.      Язык С имеет базовые или встроенные типы данных, которые позволяют строить другие типы и структуры данных. Это, как известно: char (символьные), int (целые), float (с плавающей точкой), double (с плавающей точкой двойной длины), void (пустой, не имеющий значения). На основе этих пяти типов строятся дальнейшие типы данных.      Массив - это одна из известных и наиболее простых структур данных. Под массивом в языке С понимают набор данных одного и того же типа, собранных под одним именем. Массив определяется именем массива и порядковым номером каждого своего элемента. Обычно порядковый номер элемента называют индексом. Так будет более кратко. Хотя не значит, что более понятно. Надо запомнить, что индекс (то есть поряковый номер элемента: видите, как длинно?) в языке С всегда целое число.  3. Объявление массива.      В каждой программе, использующей массив, он обязательно объявляется. Делается это следующим образом. Пусть массив имеет размерность N. Что это такое? N - это максимальное количество элементов в массиве. Иначе - размерность массива. Итак, основная форма объявления массива следующая:  тип<имя массива>[размер1][размер2]...[размер N];      Чаще всего используются одномерные массивы. Их форма описания такова:  тип<имя массива>[размер1];      Поясним, что такое тип. Тип - это базовый, то есть основной тип элементов массива.      Размер - это, как выше было сказано, количество элементов одномерного массива. Все дело в том, что в двухмерном массиве размер определяется с помощью умножения. При описании двумерного массива его объявление будет таково:  тип<имя массива>[размер1][размер2];      Это будет массив массива. То есть массив размера [размер2], элементами которого являются одномерные массивы: <имя массива>[размер1]. Размер массива в языке С задается константой или контантным выражением. Нельзя задавать массив переменного размера. Для этого существует отдельный механизм, называемый динамическим выделением памяти. Вопрос о динамическом выделении памяти и о переменных массивах будет изучаться нами попозже. Но первоначально уделим больше внимания одномерным массивам.  4. Важные сведения о массивах.      В языке С нумерация элементов начинается с нуля. То есть миниальный неотрицательный индекс элемента есть число - ноль. Таким образом, всегда первый элемет массива - это элемент с нулевым номером. Предположим, что Вы объявили массив  int a[100];      Это означает, что массив содержит следующие элементы: a[0], a[1], a[2],..., и так далее, a[99]. Легко подсчитать, сколько байт памти потребуется под одномерный массив.  Количество байт = <размер базового типа> * <количество элементов в массиве>      Следует знать, что в языке С под массив всегда выделяется непрерывное место в оперативной памяти. Выход массива за cвои опеределенные командой пределы в С не проверяется. Это следует помнить. То есть, например, если массив имеет 100 элементов и описан как a[100], то при обращении к элементу a[200] язык С не дает программе средств для контроля того факта, что имеется выхода за пределы памяти, отведенной под массив. Программа на языке С не выдаст сообщение об ошибке. Такие возможности разработчиками не предусмотрены. Возможно потому, что в те времена особенно дефицитным ресурсом была память и ее экономили на сам транслятор и потому не уделяли такого внимания анализу ошибок программиста. Отметим, что можно определять массивы любого ранее рассмотренного типа:  unsighed arr[40], long double al[1000], char ch[80]. 

37,38,39) Ввод/вывод элементов массива

Пусть в программе описана переменная-массив:

VAR   V : Array [1..100] of Integer;

Значения элементов массива необходимо ввести с клавиатуры. Поскольку с элементами массива можно обращаться как с обычными переменными, мы вправе написать следующие строчки:

Write(‘Введите V[1]: ’); ReadLn(V[1]); Write(‘Введите V[2]: ’); ReadLn(V[2]); . . . . . . . . . Write(‘Введите V[100]: ’); ReadLn(V[100]);

Однако писать сто почти одинаковых строчек занятие весьма утомительное и главное не разумное. Отличие этих строк состоит лишь в индексе элемента массива. Здесь на помощь приходит оператор FOR, так как именно он позволяет самым эффективным образом организовать циклический процесс с заданным числом повторений. Кроме этого параметр цикла можно использовать в качестве индекса массива V. Итак, ввод элементов массива V можно оформить следующим образом:

FOR i:=1 TO 100 DO begin   Write(‘Введите V[‘,i,’]: ’);   ReadLn(V[i]) end;

Если необходимо вывести все элементы массива на экран (в строчку), то это также можно сделать с помощью оператора FOR:

FOR i:=1 TO 100 DO Write( V[i]:5 );

Примечание: Запись V[i]:5 в процедуре Write означает, что при выводе значения переменной V[i] под число будет отведено 5 знакомест (подробнее о форматах вывода см. здесь).

Ввод и вывод элементов двумерного массива. При вводе и выводе элементов двумерного массива (матрицы) тоже удобно использовать оператор FOR. Только теперь необходимо уже два оператора FOR, так как у матрицы каждый элемент имеет два индекса – номер строки и номер столбца. Ниже приведен пример программы, иллюстрирующей ввод элементов массива размером 5х3 с клавиатуры с последующим выводом элементов массива на экран в виде матрицы.

PROGRAM Array_Input_Output; VAR      M : array [1..5, 1..3] of Integer;   i, j : Integer; BEGIN   Writeln(‘Ввод элементов массива.’);   FOR i:=1 TO 5 DO    FOR j:=1 TO 3 DO begin     Write(‘Введите элемент M[‘, i, ’,’, j, ’]: ’);     Readln(M[i,j])   end;   Writeln(‘Вывод массива в виде матрицы.’);   FOR i:=1 TO 5 DO begin     FOR j:=1 TO 3 DO Write( M[i,j]:5 );     Writeln   end; END.