- •«Информатика»
- •Содержание
- •1. Константы
- •2. Типы констант
- •3. Переменные
- •4. Типы переменных
- •5. Операторы описания
- •6. Арифметические операции Операции по приоритету:
- •7. Расположение текста программы на экране дисплея
- •Правила набора текста программ:
- •Правило:
- •4 Write(6,*)’ Введите значения сторон треугольника a,b,c’
- •8. Технология прохождения фортран – программ на эвм
- •Технология прохождения фортран – программ на эвм
- •9. Арифметический оператор if
- •If(арифметическое выражение) m1, m2, m3
- •Примечание:
- •Правило:
- •If арифметический не может быть последним оператором в цикле do.
- •4 Write(6,*)’ Введите значения сторон треугольника a,b,c’
- •8 Write(6,*)’ Площадь треугольника равна нулю’
- •9 Write(6,*)’ Такой треугольник не существует’
- •10. If логический
- •If(логическое выражение) выполняемый оператор
- •70% Ошибок у программистов возникает из-за несоответствия типов переменных!.
- •Условные обозначения логических операторов на блок-схемах
- •If арифметический if логический
- •11. Табулирование функции
- •12. Оператор цикла do
- •Внимание:
- •Примечание:
- •3 Write(6,*)’Введите переменные a,b,c’
- •13. Массивы
- •Примечание:
- •Вычисление определенного интеграла
- •1 Write(6,*)’Введите значения a,b,dx’
- •14.Работа содномерными массивами Ввод массивов
- •Первый способ ввода массивов:
- •Второй способ ввода массивов:
- •Третий способ ввода массивов:
- •15. Вывод массивов Первый способ вывода массива
- •Второй способ вывода массива:
- •Третий способ вывода массива:
- •Четвёртый способ вывода массива:
- •Способ вывода массива в два столбца:
- •Фрагменты задач с одномерными массивами
- •If(b.Eq.K) write(6,*)’ Число m является чётным’
- •Сортировка массива
- •Второй способ сортировки массива:
- •16. Конструкция if then–else if then–else – end if
- •If (логическое выражение 1) then
- •Правила:
- •Примечания:
- •17. Оператор data
- •Правило:
- •Правило:
- •18.Работа с двухмерными массивами
- •19. Ввод двухмерного массива
- •Второй способ ввода массивов:
- •Третий способ ввода массивов:
- •Четвертый способ ввода массивов:
- •Фрагменты задач с двухмерными массивами
- •20. Вывод двухмерного массива
Примечание:
Желательно избегать арифметических действий с индексами массива, особенно при циклическом вычислении, т.к. это очень замедляет выполнение программы.
Двухмерные массивы в памяти ЭВМ располагаются по столбцам:
Пример заполнения ячейки двухмерного массива:
С(1,2)=1.8
При этом в строку номер 1 и столбец номер 2 массива С занесётся число 1.8.
При выполнении программы транслятор анализирует, не превышает ли значение вызываемого индекса массива его предельного значения, описанного в операторе DIMENSION(т.е. проверяется случай, когда вызываемый индекс массива не существует – массив имеет меньшие размеры).
Так при записи С(К,М)=С(1,1)+С(1,2), которая соответствует записи:
С(4,3)=С(1,1)+С(1,2) значение С(4,3) не соответствует. При попытке выполнить такую операцию будет выдана ошибка.
При работе с двухмерными массивами есть одна особенность, которую рассмотрим на примере:
READ(5,*)К
С(К,3)=7
Пока переменную К будем задавать равную от 1 до 3, программа будет выполняться корректно. Но, если К присвоить значение 4 и больше, то ЭВМ будет не в состоянии отследить, что пределы размерности массива нарушены. Обращение будет идти к совершенно иному, и даже случайному элементу памяти ЭВМ.
Массивы можно описать ещё и с помощью операторов описания REALиINTEGER:
REAL A(10)
INTEGER K(15)
Повторное описание массивов не допускается.
Массивы могут быть: целого, вещественного, комплексного, строкового и логического типа.
Для 8-разрядных ЭВМ максимальное значение индекса массива может быть равно 32767. Например: DIMENSION A(32767), B(32767, 32767).
Вычисление определенного интеграла
Задача:
Вычислить значение определённого интеграла на отрезке от a доbпометоду прямоугольников.
Заменим вычисление интеграла вычислением суммы:
С Программа №8.
С Вычисление определённого интеграла по методу прямоугольников
1 Write(6,*)’Введите значения a,b,dx’
READ(5,*) A,B,DX
C Вычисляем количество точек на кривой
N=(B-A)/DX+1
DX=(B-A)/(N-1)
C Вычисление суммы
F=0.
Как всегда, перед вычислением суммы обнуляем ячейку памяти
DO 2 X=A,B–DX,DX
Конечное значение цикла берём равным B-DX для того, чтобы не вычислить большую площадь, т.к. после окончания цикла переменная цикла имеет значение, которое больше конечного значения цикла на величину шага DX.
FX=SIN(X)**2+COS(X**2)
2 F=F+FX*DX
WRITE(6,*)’Значение интеграла равно ‘,F
PAUSE
GO TO 1
STOP
END
Оператором цикла DOпеременной циклаXприсваивается начальное значениеA. Организуются циклические вычисления в области цикла, включая оператор с меткой 2. На каждом новом цикле значениеXувеличивается на величину шагаDX. В области цикла сначала вычисляется значение функцииFX, а затем к переменной F, в которой накапливается сумма значений локальных интегралов, прибавляется значение функции, умноженное наDX. Вычисления будут проводиться до достижения переменной циклаXзначенияB-DX.В последний раз кF прибавитсяFX*DX(последняя площадка) и в области цикла вычисления завершатся.
Чем меньше величина шага DX, тем выше точность вычисления интеграла.
Задача 2:
Вычислить значение предыдущего интеграла, методом трапеции, который более точный.
Решение:
Вычислим все значения функции F(x) и запомним их в массиве.
Распечатаем все значения функции при соответствующем аргументе.
Вычислим значение суммы для получения значения интеграла по методу трапеции.
С Программа №9
С Вычисление определённого интеграла по методу трапеции
DIMENSION FX(1000)
Задаем размерность массива заведомо большую, чем возможное количество вычислений функции
WRITE(6,*)’Введите значения величин A,B,DX’
READ(5,*) A,B,DX
N=(B-A)/DX+1 Количество вычислений на отрезке
DX=(B-A)/(N-1) Уточненное значение шага
С Вычисляем значения массива
X=A Задаем начальное значение аргументу Х
DO 2 I=1,N
FX(I)=SIN(X)**2+COS(X**2) Формируем массив значений функции
WRITE(6,*)’При Х=’,X,’ значение функции равно ’,FX(I)
2 X=X+DX Задаем приращение аргумента
C Вычисление интеграла по формуле трапеции
F=0. Обнуляем ячейку памяти для накопления суммы
DO 1 K=1,N-1 Обратите внимание на количество циклов
F=F+(FX(K)+FX(K+1))/2.*DX
1 CONTINUE
WRITE(6,*)’Значение интеграла равно ’,F
PAUSE
STOP
END