- •Информатика
- •Введение
- •1. Правило выбора заданий и оформления контрольных работ
- •2. Позиционные системы счисления
- •2.1. Перевод целых десятичных чисел
- •2.2. Перевод дробных десятичных чисел
- •2.3. Взаимосвязь двоичной, восьмеричной и шестнадцатеричной систем счисления
- •3. Подготовка задач для программирования
- •4. Разработка схемы алгоритма
- •4.1. Разветвляющиеся вычислительные процессы
- •4.2. Циклические вычислительные процессы
- •Останов.
- •5. Алгоритмические языки программирования инженерных задач
- •5.1. Основные понятия
- •5.2. Алгоритмический язык Fortran
- •5.2.1. Алфавит языка
- •5.2.2. Константы и переменные
- •5.2.3. Элементарные функции
- •5.2.4. Выражения
- •5.2.5. Основные операторы языка
- •5.2.6. Арифметический оператор присваивания
- •5.2.7. Задание исходных данных
- •5.2.8. Оператор вывода
- •5.2.9. Оператор stop
- •5.2.10. Оператор end
- •5.2.11. Операторы управления
- •5.2.12. Структура программы
- •5.2.13. Программирование алгоритмов разветвленной структуры
- •5.2.14. Оператор цикла
- •5.2.15. Массивы переменных
- •5.2.16. Ввод – вывод одномерных массивов
- •5.2.17. Программирование алгоритмов циклической структуры
- •5.3. Алгоритмический язык Basic
- •5.3.1. Алфавит языка
- •5.3.2. Переменные и константы
- •5.3.3. Элементарные функции
- •5.3.4. Выражение
- •5.3.5. Задание исходных данных
- •5.3.6. Оператор вывода
- •5.3.7. Оператор end
- •5.3.8. Операторы управления
- •5.3.9. Структура программы
- •5.3.10. Программирование алгоритмов разветвленной структуры.
- •5.3.11. Массивы переменных
- •5.3.12. Оператор цикла
- •5.3.13. Программирование алгоритмов циклической структуры
- •6. Образец выполнения контрольной задачи
- •6.1. Выбор номеров вариантов и заданий для контрольной работы
- •6.2. Задание 1. Позиционные системы счисления.
- •6.3. Задание 2. Разветвляющиеся вычислительные процессы.
- •6.4. Задание 3. Циклические вычислительные процессы.
- •7. Таблицы заданий контрольной работы
- •8. Контрольные вопросы
- •Литература
- •Содержание
5.2.16. Ввод – вывод одномерных массивов
Ввод одномерных массивов может быть выполнен следующими способами:
По имени массива;
С использованием неявной формы оператора DO;
С помощью невыполняемого оператора DATA.
Рассмотрим эти способы на примере ввода массива Y, состоящем из 5 элементов:
1.25, -3.4, 0.55, 2.5, -7.8
1 способ. Используется, если массив вводится полностью. Данные будем вводить с клавиатуры под управлением списка. Фрагмент программы приведен ниже.
DIMENSION Y(5)
READ(*,*)Y
Строка ввода имеет вид:
1.25 -3.4 0.55 2.5 -7.8 или
1.25, -3.4, 0.55, 2.5, -7.8
Вводить с клавиатуры целесообразно только массивы маленькой размерности. Обычно, элементы массивов размещают в файле. Файл – это набор данных, объединенных по некоторому признаку. Строка файла с данными будет иметь такой же вид, как и строка ввода.
2 способ. Позволяет вводить элементы массива частично. Данный способ удобен при вводе массивов большой размерности. Ниже приведен фрагмент программы с неявной формой оператора цикла. Данные вводятся из файла, которой ассоциируется с устройством под номером 1
DIMENSION Y(5)
READ(1,*)(Y(I),I=1,5)
Содержание файла с данными описано в первом способе.
3 способ. Используется при решении задач с одним набором данных. Фрагмент программы приведен ниже.
DIMENSION Y(5)
DATA Y/1.25,-3.4,0.55,2.5,-7.8/
В контрольных задачах задания 3 исходные массивы вводятся полностью, но числовые значения данных не заданы. Поэтому будем использовать первый способ ввода, размещая исходные данные в файле.
Вывод одномерных массивов, как и ввод, может быть выполнен по имени массива или с использованием неявной формы оператора цикла.
5.2.17. Программирование алгоритмов циклической структуры
Номера примеров указаны в соответствии с номерами схем вычислений данных задач, разработанных в пункте 4.2. Циклические вычислительные процессы.
Пример 4. Задан массив по имени А, состоящий из 20 элементов, Аi , i = 1,2,…,20. Написать программу вычисления суммы и произведения элементов этого массива.
Алгоритм вычисления разобран в п. 4.2, схема вычисления представлена на рис.4. имена переменных в программе выбраны в соответствии со схемой.
Исходные данные элементы массива А - это переменные действительного типа. Разместим элементы в файле. При вводе используем 1-й способ. Результаты вычисления сумму S и произведение P выведем на дисплей под управлением списка. Для “читаемости” программы запишем ее с комментариями. Причем в первой строке программы расположен комментарий, в котором указана постановка задачи (в дополнении можно указать автора программы и любую другую информацию). Такой подход реализован и в последующих программах.
Текст программы представлен ниже.
* Вычисление суммы S и произведения P массива
DIMENSION A(20)
* Ввод массива.
READ(1,*)A
* Задание начальных значений S и P
S = 0
P = 1
* Организация цикла
DO I = 1,20,1
S = S + A(I)
P = P * A(I)
ENDDO
* Печать результатов
WRITE(*,*)’ S=’,S,’ P=’,P
STOP
END
Пример 5. Задан массив X, состоящий из 10 элементов, Xj, j=1,…,10. Написать программу вычисления произведения положительных элементов этого массива.
Алгоритм вычисления разобран в п. 4.2, схема представлена на рис.5.
Исходные данные – переменные действительного типа. Разместим элементы массива в файле. При вводе массива используем 1-й способ, результат выведем на дисплей под управлением списка.
При вычислении произведения положительных элементов используем структурный логический оператор IF. Текст программы с комментариями представлен ниже.
* Вычисление произведения положительных элементов массива
DIMENSION X(10)
* Ввод массива
READ(1,*)X
* Задание начального значения P
P = 1
* Организация цикла
DO J = 1,10,1
* Выбор положительных элементов и вычисление произведения
IF(X(J) > 0)THEN ! или IF(X(J) .GT. 0) THEN
P = P*X(J)
ENDIF
ENDDO
* Печать результата.
WRITE(*,*)’ P=’,P
STOP
END
Пример 7. Задан массив X, состоящий из 20 элементов, XI, I=1,…,20. Составить программу вычисления среднего арифметического значения положительных элементов.
Алгоритм вычисления разобран в п. 4.2, схема вычисления представлена на рис.7. Имена переменных в программе выбраны в соответствии со схемой.
Исходные данные – элементы массива X разместим в файле. При вводе используем 1-й способ, т.е. введем по имени массива. Результат выведем на дисплей под управлением списка. При написании программы используем комментарии. Текст программы представлен ниже.
* Вычисление среднего арифм. значения положительных элементов
DIMENSION X(20)
* Ввод массива
READ(1,*)X
* Задание начальных значений
S = 0
K = 0
* Организация цикла
DO I = 1,20
* Выбор положительных элементов и подсчет их суммы и количества
IF(X(I) >= 0)THEN ! или IF(X(J) .GE. 0) THEN
S = S + X(I)
K = K + 1
ENDIF
ENDDO
* Проверка числа элементов К=0? Печать результата
IF(K = = 0)THEN ! или IF((K .EQ. 0)) THEN
WRITE(*,*)’ Положительных элементов нет’
ELSE
R = S/K
WRITE(*,*)’ Среднее арифметическое R=',R
ENDIF
STOP
END
Пример 8. Заданы два массива AI, I = 1,…,25, и BJ, J = 1,…,30. Составить программу вычисления количества положительных элементов в каждом массиве. Определить в каком массиве больше положительных элементов.
Алгоритм вычисления представлен в п. 4.2, схема вычисления – на рис. 8. Имена переменных в программе соответствуют именам переменных в схеме.
Элементы исходных массивов разместим в файле и введем по имени массивов. Результаты выведем на дисплей под управлением списка.
Текст программы с комментариями представлен ниже.
* Вычисление количества положительных элементов в массивах
DIMENSION A(25),B(30)
* Ввод массивов
READ(1,*)A
READ(1,*)B
* Задание начальных значений
KA = 0
KB = 0
* Организация цикла по параметру I
DO I = 1,25
* Выбор положительных элементов массива A и подсчет их количества
IF(A(I) > = 0)THEN ! или IF(A(I) .GE. 0) THEN
KA = KA + 1
ENDIF
ENDDO
* Организация цикла по параметру J
DO J = 1,30
* Выбор положительных элементов массива B и подсчет их количества
IF(B(J) > = 0)THEN ! или IF(B(J) .GE. 0) THEN
KB = KB + 1
ENDIF
ENDDO
* Печать количества положительных элементов KA и KB
WRITE(*,*)KA,KB
* Определение числового соотношения положительных элементов
IF(KA > KB )THEN ! или IF(KA .GT. KB) THEN
WRITE(*,*)’ В массиве A больше пол. элементов’
ELSE
IF(KA < KB)THEN ! или IF(KA .LT. KB) THEN
WRITE(*,*)’ В массиве B больше пол. элементов’
ELSE
WRITE(*,*)’ Количество пол. элементов совладает’
ENDIF
ENDIF
STOP
END
Пример 9. Задан массив YJ, J=1,…,30. Составить программу нахождения максимального (наибольшего) элемента этого массива.
Алгоритм вычисления представлен в п. 4.2, схема вычисления – на рис.9. Имена переменных в программе выбраны в соответствии с именами переменных в схеме. Элементы массива разместим в файле и введем по имени массива. Результат выведем на дисплей под управлением списка.
Текст программы представлен ниже.
* Нахождение максимального элемента массива
DIMENSION Y(30)
* Ввод массива
READ(1,*)Y
* Задание начального значения максимального элемента
YMAX = Y(1)
* Организация цикла
DO J = 2,30
* Выбор максимума из текущего элемента Y(J) и YMAX
IF(Y(J) >= YMAX)THEN ! или IF(Y(I) .GE. YMAX) THEN
YMAX = Y(J)
ENDIF
ENDDO
* Печать результата.
WRITE(*,*)’ YMAX=’,YMAX
STOP
END
