Способы ввода одномерных массивов:
Предположим, что массив уже описан в программе. Например:
Const n=15;
Type Massive=array[1..n] of integer; {Определение типов ‘TYPE’}
Var {Описание переменных}
a: array [0..8] of string[20];
b, с : array [10..n+5] of real;
d: Massive;
Как только в памяти машины вырезаны ленточки нужной длины, эти ячейки заполняются нулями. Теперь нам предстоит их заполнить конкретными значениями.
Способ последовательное присваивание элементам массива соответствующий значений.
Фрагмент программы:
Const n=10;
Var
a: array [2..n] of integer;
Begin
a[2]:=-4,a[4]:=-6; a[5]:=10; a[9]:=-12;
В результате в соответствующие ячейки ленточки ‘a’ заносятся нужные значения, а остальные элементы по-прежнему равны нулю:
-
-4
0
-6
10
0
0
0
-12
0
t[2]
t[3]
t[4]
t[5]
t[6]
t[7]
t[8]
t[9]
t[10]
Eсли в массиве много элементов, но не вводить же 50 элементов массива пятьюдесятью операторами присваивания!
Способ ввода массива с клавиатуры.
Стандарт ввода массива Aиз n элементов:
For i:= 1 to n do Begin
Write(‘a[‘,i,’]=?);
Readln(a[i]);
End;
В результате запрашивается последовательно элементы массива a[1]=?, a[2]=?, …a[n]=? Этот способ ввода хорош тем, что пользователь видит элементы, которые вводит. Но, ошибившись с вводом одного элемента, он вынужден продолжать ввод, пока не закончится цикл. Далее, при повторном запуске программы пользователю придется вновь вводить те же самые элементы. Поэтому предпочтительнее последующие способы ввода.
Способ ввода массива, заданного формулой.
Этот способ ввода наиболее прост, удобен, но реализуется он редко из-за того, что в нашем мире мало что происходит по формулам. Введем массивы А, В, С, D такие, что:
A – массив заглавных латинских букв;
B – массив четных байтовых чисел;
C – массив степеней двойки от нулевой до двадцатой;
D – массив, где каждый элемент равен синусу его номера, а номера не превосходят 100.
Соответствующий фрагмент программы:
Var i: byte; t :LongInt;
a: array [1..26] of Char;
b: array [0..50] of Byte;
c: array [0..20] of LongInt;
d: array [0..100] of Real;
Begin
For i:=1 to 26 do a[i]:=chr(i+64);
For i:=0 to 50 do b[i]:=2*i;
t:=1; c[0]:=1;
For i:=1 to 20 do begin
t:=t*2; c[i]:=t;
end;
For i:=0 to 100 do d[i]:=sin(i);
Заметьте, во-первых, что ASCII – коды заглавных латинских изменяются от 65 до 90, что и позволяет реализовать формулу a[i]:=chr(i+64);. Во-вторых, степени двойки накапливались в целочисленной ячейке t, что чуть более громоздко, чем реализация формулы b[i]:=exp(i*ln(2)), но зато получается результат целого, а не вещественного типа.
Способ ввода массива через типизированные константы.
В этом случае, если при последующих запусках на исполнение программа будет обрабатывать один и тот же массив, имеет смысл ввести его в программе через типизированные константы. Получаем следующую структуру ввода массива:
Constn=10;
TypeMassive=array[1..n]ofReal;
Const
a: Massive=(-2,0,8,9,5,-9,2,0,6,-7);
Теперь в программе вполне можно использовать массив а[i] из 10 элементов с начальными значениями a[1]:=-2.0, a[2]:=0.0… Если мы изменим количество элементов в большую или меньшую сторону, то вырезаемая в структуре TYPE-CONST ленточка окажется или слишком большой, или слишком маленькой для восьми перечисляемых чисел. В результате ЭВМ сообщениями об ошибках либо предложит добавить числа в перечень, либо выбросить из него последние числа. Это снижает универсальность ввода.
Способ ввода массива через генератор случайных чисел.
Если конкретные значения элементов массива не играют роли, то можно позволить себе ввести их случайным образом. Для этого необходимо знать: 1) Тип элементов массива, 2) Примерный диапазон их возможных значений.
Генерация случайных чисел осуществляется с помощью функций Random или Random(N). В первом случае генерируется случайное ВЕЩЕСТВЕННОЕ число от 0 до 1. Если умножить Random на число N, то будет получено случайное ВЕЩЕСТВЕННОЕ число от 0 до N. Функция Random(N) производит генерацию случайного ЦЕЛОГО числа от 0 до N.
Пример. Сгенерируем 10 случайных целых чисел, заключенных на отрезке от 0 до 100:
Program Random_Int;
Uses CRT;
Var
i: byte;
Begin
{ Randomize; }
For i:=1 to 10 do Write(Random(100),’ ‘);
Writeln;
Repeat Until KeyPressed;
End.
Результат работы программы:
0 3 86 20 27 67 31 16 37 42
Запустим программу еще раз. Вновь получим ряд чисел:
0 3 86 20 27 67 31 16 37 42
Следовательно, о случайности производимых чисел можно говорить лишь с некоторой приближенностью, ибо программа генерации этих чисел каждый раз производит одни и те же числа. Но если убрать фигурные скобки вокруг слова Randomize, тогда процедура изменения программы генерации случайных чисел Randomize уже будет запускаться при исполнении программы, меняя результат:
6 47 70 17 41 40 70 80 50 35
И еще раз:
4 16 21 3 29 60 74 33 73 32
Если требуется получить случайные числа x, принадлежащие отрезку [a,b], можно воспользоваться формулами:
x:=a+Random(b-a) - для целых чисел;
x:=a+(b-a) *Random- для вещественных чисел;
В приведенных соотношениях генератор случайных чисел в первую очередь масштабируется по длине отрезка (b-a), а потом результат сдвигается на а.
Yandex.RTB R-A-252273-3
- Министерство образования и науки рф
- Оглавление
- 6.Проверка адекватности модели 48
- 7.Анализ результатов моделирования 49
- Лекция 1 Предмет информатики. Основные составные части персонального компьютера. Понятие и представление информации. Принципы организации порядковых систем счисления.
- Понятие информатика
- Понятие информации
- Представление данных в пэвм
- Представление информации в компьютере
- Принципы организации порядковых систем счисления
- Позиционные и непозиционные
- Правила перехода из системы в систему Алгоритм перевода целых чисел из системы с основанием р в систему с основаниемq:
- Алгоритм перевода целого числа из десятичной системы счисления в систему счисления с произвольным основанием (р)
- Алгоритм перевода целого числа из системы счисления с произвольным основанием (р) в десятичную систему счисления
- Перевод дробных чисел из одной системы счисления в другую Алгоритм перевода правильной дроби с основанием р в дробь с основаниемq
- Алгоритм перевода числа, заданного в виде правильной дроби из десятичной системы счисления в систему счисления с основание р.
- Алгоритм перевода произвольных чисел
- Перевод чисел из системы счисления с основанием 2 в систему счисления с основанием 2п и обратно Алгоритм перевода целых чисел
- Алгоритм перевода дробных чисел
- Алгоритм перевода произвольных чисел
- Лекция 2
- Арифметические и логические операции. Приоритет операций.
- Логические основы.
- Основы логики
- Обозначения для логических связок (операций):
- Логические операции
- Логические операции и таблицы истинности
- Порядок выполнения логических операций в сложном логическом выражении
- Построение таблиц истинности для сложных выражений
- Скнф и сднф
- Алгоритмы получения формулы по таблице истинности сднф и скнф
- Правила упрощения логических структур
- Приоритет арифметико-логических операций
- Лекция 3 Основные составные части пк. Файлы и файловые системы эвм. Операционные системы. Поколения эвм
- Структура пк
- Достоинствами пк
- Основные характеристики пк
- Устройство пк
- Основные устройства системного блока
- Типы процессоров
- Внешняя (долговременная) память
- Внешние устройства (устройства для ввода-вывода информации)
- Файлы и файловые системы
- Типы файлов
- Операционная система (ос)
- Лекция 4
- Основные понятия моделирования
- Основные виды моделей и их свойства
- 1.Основные виды моделей
- 2.Основные свойства моделей
- Цели, принципы и технология моделирования
- 1.Цели моделирования
- 2.Основные принципы моделирования
- 3.Технология моделирования
- 4.Основные методы решения задач моделирования
- 5.Контроль правильности модели
- Задачи моделирования
- 1.Постановка задачи моделирования
- 2.Концептуальная формулировка задачи
- 3.Построение математической модели
- 4.Выбор метода решения
- 5.Программная реализация модели на эвм
- 6.Проверка адекватности модели
- 7.Анализ результатов моделирования
- Алгоритмизация и программирование Понятие алгоритма
- Свойства алгоритма
- Формы записи алгоритмов
- Типы алгоритмов
- Методология решения задач с помощью эвм
- Классификация программных средств
- Лекция 5 Данные в языке Turbo-Pascal7.0. Стандартные функции языкаTurbo-Pascal. Структура программы на языке Турбо Паскаль. ОператорыTurbo-Pascal. Программирование линейных алгоритмов.
- Достоинствами языка Паскаль являются:
- Алфавит языка
- Данные – это простейшие объекты программной обработки.
- Характеристики основных типов данных
- Стандартные функции языка Турбо-Паскаль
- Нестандартные функции
- Структура программы на языке Турбо Паскаль
- Оператор присваивания имеет следующую структуру:
- Стандарты ввода – вывода данных
- Составной оператор
- Программирование линейных алгоритмов
- Лекция 6
- Процедуры Procedure
- Условные операторы
- Оператор ‘if-then’
- Оператор ‘if-then-else’
- Тройное ветвление
- Оператор варианта ‘case…of’
- Лекция 7 Циклические структуры. Вложенные циклы. Рекурсивные функции. Операторы прерывания.
- Определенные циклы ‘for…do…’
- Первая форма записи оператора foRс последовательным увеличением счетчика.
- Вторая форма записи оператора foRcуменьшением счетчика:
- Циклы с постусловием ‘repeat…until…’
- Циклы с предусловием ‘while…do…’
- Вложенные циклы
- Рекурсивные функции
- Операторы прерывания Операторы Break и Continue
- Лекция 8 Обработка одномерных и двумерных массивов Понятие и описание массива
- Примеры одномерного, двухмерного, трехмерного массивов
- Способы ввода одномерных массивов:
- Печать массива
- Локальная обработка массива
- Глобальная обработка массива
- Инверсия
- Циклический сдвиг
- Вычисление среднее арифметическое, среднее геометрическое, среднее квадратичное среднее гармоническое
- Сортировка массива
- Сортировка одномерного массива методом пузырька
- Пример. Сортировка обменом по возрастанию массива a из n целых чисел.
- Обработка двумерных массивов
- Литература Основная литература
- Дополнительная литература