- •Кафедра математики и информатики
- •Практикум
- •Введение
- •1. Арифметические основы построения эвм
- •2. Интегрированная среда Turbo Pascal 7.1
- •2.1. Основные элементы ide Turbo Pascal 7.1
- •2.2. Ввод программы в среде Turbo Pascal
- •2.3.Сохранение программы в файле
- •2.4. Работа с существующей программой
- •2.5. Компиляция программы в среде Turbo Pascal
- •(Успешная компиляция: Нажмите любую клавишу...)
- •2.6. Выполнение программы в среде Turbo Pascal
- •2.7. Выход из среды Turbo Pascal
- •3. Элементы языка Turbo Pascal
- •3.1. Алфавит
- •3.2. Идентификаторы
- •3.3. Разделители
- •3.4. Основные типы данных и операции с ними
- •3.5. Константы и переменные
- •3.6. Выражения
- •3.7. Стандартные математические функции языка Турбо - Паскаль
- •3.8. Структура программы на языке Pascal
- •X,y,z: Real; {переменные типа Real}
- •I,j,k: Integer; {переменные типа Integer}
- •3.9. Контрольные вопросы
- •4. Лабораторная работа №1: Программирование линейных вычислительных процессов
- •4.1. Оператор присваивания
- •4.2. Ввод исходных данных. Операторы Read и ReadLn
- •4.3. Вывод данных. Операторы Write и WriteLn
- •4.4. Примеры составления программы
- •4.5. Контрольные вопросы
- •Раздел Var;
- •4.6. Варианты заданий
- •5. Лабораторная работа №2: Программирование разветвляющихся процессов
- •5.1. Методические указания
- •5.2. Условный оператор If и составной оператор Begin … End
- •5.3. Логические операции
- •5.4. Оператор безусловного перехода Goto
- •5.5. Примеры составления программы
- •5.6. Контрольные вопросы
- •5.7. Варианты заданий
- •6. Лабораторная работа №3: Циклический процесс
- •6.1. Общие сведения
- •6.2. Цикл с параметром
- •6.3. Цикл с предусловием
- •6.4. Цикл с постусловием
- •6.5. Итерационные циклы
- •6.6. Контрольные вопросы
- •6.7. Варианты заданий
- •6.7.2. Циклы со счетчиками Составить программы используя разные циклы (с предусловием, с постусловием, с параметром)
- •6.7.2. Итерационные циклы
- •7. Лабораторная работа №4: Вложенные циклы
- •7.1. Общие сведения
- •7.2. Примеры выполнения задания
- •7.3. Контрольные вопросы
- •7.4. Варианты заданий
- •8. Лабораторная работа №5: Массивы
- •8.1. Одномерные и многомерные массивы
- •В квадратных скобках - индексы массива
- •8.2.Символьные массивы
- •8.3. Инициализация элементов массива
- •8.4. Примеры выполнения задания
- •8.5. Контрольные вопросы
- •8.6. Варианты заданий
- •9. Лабораторная работа №6: Сортировки
- •Приложение 1
- •Приложение 2 Структурограммы
- •Структурное программирование
- •Приложение 3
- •(Основная и дополнительная)
- •Приложение 4 Сообщения об ошибках компиляции
- •(Ошибка 15 : Файл не найден)
- •113. Error in statement (ошибка в операторе)
- •Приложение 5
- •21 Столетие Библиографический список
- •Содержание
8.3. Инициализация элементов массива
Помимо оператора присваивания значения компонентам массива можно задать оператором ввода. Для числовых данных в языке Паскаль применяется поэлементный ввод-вывод. При вводе компоненты массива отделяются друг от друга пробелом или запятой. По окончании ввода очередной порции данных нажимается клавиша Enter.
Для символьных массивов возможности стандартной процедуры ввода расширены. При вводе строковых переменных количество вводимых символов может быть меньше длины строки. В этом случае вводимые символы будут размещены в начале массива и далее строка дополнится нужным числом пробелов. Если количество введенных символов больше длины строки, будет произведено усечение данных. При вводе символы будут считываться с устройства начиная с текущего положения маркера до символа возврата каретки или перевода строки.
Поскольку каждый элемент массива имеет свой порядковый номер, то к каждому элементу можно обращаться непосредственно, указывая имя массива и в квадратных скобках порядковый номер элемента.
Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле, изменяя при каждой итерации значение индекса.
Инициализация массивов (присвоение начальных значений всем компонентам массивов) осуществляется двумя способами. Первый способ - с использованием типизированных констант, например:
Type
Mass= Array [1..10] Of Real;
Const
K: Mass=(0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3);
При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:
Type
Mass3x2= Array[1..3,1..2] Of Integer;
Const
L: Mass3x2=((1,2), (3,4), (5,6));
Пример 8.1. Ввод элементов одномерного массива с клавиатуры
A: Array [1..10] Of Integer.
For i:=1 To 10 Do
Begin
Write ('Введите A[',i,']');
Read (A[i]);
End;
Если необходимо инициализировать массив случайными значениями, то используют генератор случайных чисел.
Randomize;
For i:=1 To 10 Do
A[i]:=Random(100);
Процедура Randomize инициализирует встроенный генератор случайных чисел. Функция Random(100) возвращает при каждой итерации случайное число в диапазоне от 0 до значения заданного аргументом (100-1).
Пример 8.2 Ввод элементов двумерного массива.
B: Array [1..20,1..20] Of Real.
For i:=1 To 20 Do
F or i:=1 To 20 Do
Begin
Write ('Введите B[', i,']');
Read (B[i])
End;
Аналогично показанному выше, можно использовать генератор случайных чисел.
8.4. Примеры выполнения задания
Пример 1. Пусть необходимо вычислить значения функции , в точках множества X={x1,x2,…,x15}, где xi0.
Program Example_8_1;
Uses Crt; {Подключение модуля}
Var
x,y: Array [1..15] Of Real; {Описываем переменные}
i: Integer;
Begin {Начало основной программы}
ClrScr; {Очистка экрана}
For i:=1 To 15 Do {Открываем цикл для ввода}
ReadLn (x[i]); {Вводим данные с клавиатуры}
For i:=1 To 15 Do {Открываем цикл для подсчета}
Begin {Начало тела цикла}
y[i]:=ArcTan(x[i])/Sqrt(x[i]); {Вычисления выражения}
WriteLn ('y[',i,']=',y[i],' x[',i,']=',x[i]); {Вывод результата}
End; {Конец тела цикла}
End. {Конец основной программы}
Пример 2. Изменить знаки отрицательных элементов массива B[4,5] на противоположные.
Program Example_8_2;
Uses Crt; {Подключение модуля}
Var
i,j: Integer;
b: Array[1..4,1..5] Of Real; {Описываем переменные}
Begin {Начало основной программы}
ClrScr; {Очистка экрана}
For i:=1 To 4 Do {Открываем внешний цикл}
For j:=1 To 5 Do {Открываем внутренний цикл}
ReadLn (b[i,j]); {Вводим данные с клавиатуры}
For i:=1 To 4 Do {Открываем внешний цикл}
For j:=1 To 5 Do {Открываем внутренний цикл}
If b[i,j]<0 Then {Проверка условие, если}
b[i,j]:=-b[i,j]; {истинно, то меняем знак}
For i:=1 To 5 Do {Открываем внешний цикл}
For j:=1 To 5 Do {Открываем внутренний цикл}
WriteLn (b[i,j]); {Вывод данных на экран}
End. {Конец основной программы}