
- •Методические указания
- •Введение
- •1. Операционная система (ос)
- •1.1. Семейство операционных систем Windows
- •1.3 Магнитные диски
- •Раздел I. Контрольная работа (части I и II). Лабораторная работа №1
- •1.1. Общие сведения о языке Фортран. Этапы обработки программ
- •1.1.2 Основные символы и ключевые слова фортраНа
- •1.1.3 Основные элементы фортраНа
- •1.1.4 Типы данных в фортраНе
- •1.1.5 Арифметические выражения и операции
- •1.1.6 Операции над вещественными и целыми величинами
- •1.1.7 Возведение в вещественную степень ( )
- •1.1.8 Возведение в отрицательную степень
- •1.1.9 Корень квадратный
- •1.1.9.1 Таблицы с примерами записей выражений на Фортране:
- •1.1.9.2 Операции отношения
- •1.1.9.3 Логические значения
- •1.1.10 Тригонометрические функции
- •1.1.11 Обратные тригонометрические функции
- •1.1.12 Арифметический оператор присваивания
- •1.2 Запись программ на Фортране
- •1.2.1 Обработка программ на компьютере
- •1.2.2 Оператор бесформатного ввода read
- •Read(5,*) список
- •1.2.3 Операторы вывода
- •1.2.4 Отчет по лабораторной работе
- •1.2.5 Оператор parameter
- •1.2.6 Блок-схемы
- •1.2.7 Алгоритм выполнение практической работы
- •1.2.8 Консоль- проект
- •1.3 Задания к контрольной работе (часть 1)
- •1.3.1 Оператор format
- •Вывод по спецификации е12.5 Таблица №10
- •1.3.2 Задания к контрольной работе (часть 2)
- •1.3.3 Пример выполнения контрольной работы (часть1, 2)
- •Вопрос 1. (часть 1)
- •Вопрос 2.
- •Логическое выражение на фортране
- •Вопрос 3.
- •Вопрос 4. (часть 2.)
- •1.3.4 Задания к лабораторной работе № 1
- •1.3.5 Пример выполнения лабораторной работы № 1
- •1.3.6 Метки операторов
- •1.3.7 Форматный ввод
- •Раздел II. Лабораторная работа № 2
- •2.1. Алгоритмы
- •2.2 Рассмотрим пример составления схем алгоритмов.
- •2.3 Операторы передачи управления.
- •2.4 Вычисляемый оператор перехода
- •2.5 Условный арифметический оператор if:
- •2.6 Логический условный оператор if.
- •2.8 Задания к лабораторной работе № 2
- •Раздел III. Лабораторная работа № 3
- •3.1 Циклический алгоритм
- •3.2 Вспомогательные операторы управления
- •3.3 Оператор паузы
- •3.4 Массивы. Общие сведения о массивах
- •3.5 Оператор dimension
- •3.6 Индексные выражения
- •3.7 Ввод – вывод одномерных массивов (в/в)
- •3.8 Оператор цикла do
- •3.9 Задания к лабораторной работе № 3
- •3.10 Пример выполнения задания лабораторной работы № 3
- •Раздел IV. Лабораторная работа № 4
- •4.1 Дополнение к оператору цикла do
- •4.2 Двумерные массивы
- •4.2.1 Вод/вывод елементов матрицы
- •4.3 Вложенные циклы
- •4.4 Задания к лабораторной работе № 4
- •4.5 Пример выполнения задания лабораторной работы № 4
- •Раздел V. Лабораторная работа № 5
- •5.1. Программные единицы
- •5.2. Оператор function
- •5.3 Другие операторы, входящие в подпрограммную–функцию
- •5.4. Обращение к подпрограмме – функции
- •5.5 Примеры решения заданий к лабораторной работе № 5
- •5.6 Задания на тему: составление подпрограмм типа function .
- •Раздел VI. Лабораторная работа № 6
- •6.1 Подпрограммы типа subr0utine
- •6.2 Правила установления соответствия между формальными и фактическими аргументами при обращении к подпрограммам
- •6.3 Примеры выполнения задания к лабораторной работе № 6
- •6.4 Задания на тему: составление подпрограмм типа subr0utine.
- •Рекомендуемая литература
- •Раздел 5.6 ; задание 2)
- •Раздел 6.4 ; задание 1)
- •Раздел 6.4 ; задание 2)
- •Раздел 6.4 ; задание 3)
- •Раздел 5.6 ; задание 2)
- •Введение…………………………………………............………………..…….……......3
- •1. Операционная система (ос)…………..………..………….…………..………..…...3
- •Раздел I. Контрольная работа (части I II). Лабораторная работа №1…………......5
- •Раздел II. Лабораторная работа № 2..……………..…………………………….....33
- •Раздел III. Лабораторная работа № 3 ………………………………………........40
- •Раздел IV. Лабораторная работа № 4 …………………………………………......48
- •Раздел V. Лабораторная работа № 5………………………………..………........52
- •Раздел VI. Лабораторная работа № 6……………………………..…………..…..58
3.5 Оператор dimension
Для записи массива должно быть выделено место в памяти ЭВМ. Выделение памяти для хранения массива осуществляется с помощью неисполняемого оператора DIMENSION. Этот оператор должен быть расположен в программе перед исполняемыми операторами. Общая форма оператора DIMENSION имеет вид: DIMENSION « список ». Список содержит имена массивов с границами индексных выражений, заключенными в скобки. Например:
DIMENSION A(20), R(5), M(3, 3)
Этот оператор резервирует в памяти 20 ячеек для хранения вещественных чисел А(1), А(2) …А(20). Выделяет также пять ячеек для хранения вещественных чисел, составляющих массив R, и девять ячеек для хранения целых чисел, составляющих массив М. Если указывается только одна граница индексного выражения, то она определяет его наибольшее значение. Одним оператором можно определить несколько массивов. Другой пример: DIMENSION M(-1:1)
Данный оператор выделяет в памяти ЭВМ три ячейки М(-1), М(0) и М(1) для хранения целых чисел. Следующий пример:
DIMENSION A(3)
DIMENSION M(-1: 1)
Эти операторы выделяют память для трех вещественных элементов массива А и трех целых элементов массива М. Если требуется дать массиву имя, не соответствующее соглашению о типах, то следует воспользоваться оператором описания типа. В этом операторе можно указывать границы индексных выражений. В таком случае массив не нужно определять с помощью оператора DIMENSION. Например, INTEGER GRM (0: 2) выделяет память для трех элементов целого массива GRM.
3.6 Индексные выражения
Индексные выражения могут принимать любое целое значение – положительное, отрицательное или ноль – в пределах, определенных оператором DIMENSION или его эквивалентами. Индексные выражения могут быть целыми константами, целыми переменными и целыми выражениями. Значение индексного выражения вычисляется во время выполнения оператора, содержащего обращения к элементу массива. Это значение определяет расположение элемента в массиве Если і представляет собой текущее значение целой переменной І, то А (І)– і-тый элемент массива А, например при І=3, А(3)– третий элемент массива. Выражение А(І * (М – 1)) может указывать на различные элементы массива А в зависимости от значений І и М. Если І = 2, М = 4, то выражение указывает на элемент А(6). Если значения индексных выражений выходят за границы индексов, заданных в описании массивов, то значение данной переменной с индексами считается неопеределенным. Оно не может использоваться в вычислениях, и компьютер в таких случаях выдает сообщение об ошибке. Например,
А (І * (М – 1)) при І = 2, и М = 6 указывает на элемент А (10), но если оператором
DIMENSION описан массив А (8), то следует сообщение об ошибке.
3.7 Ввод – вывод одномерных массивов (в/в)
Значение отдельных элементов массива можно ввести в память, включив эти элементы в список оператора READ. Например: READ(5,*) N, X, A(2), A(3), I (1)
В этом случае оператор READ считывает пять чисел из записи исходных данных и присваивает их значения целой переменной N, вещественной переменной X, элементам вещественного массива А(2) и А(3) и элементу целого массива I (1) соответственно.
Оператор READ(5,*) А(1), A(2), A(3), А(4) считывает из записи данных четыре числа и заносит их в ячейки соответствующие элементам А(1), A(2), A(3), А(4) массива А. Такая конструкция оператора неудобна, когда требуется вводить большой набор данных. В этом случае лучше применить оператор, в конструкцию которого входит неявный цикл. Например: READ(5,*) (А(I), I = 1,4). Этот оператор также, как и в предыдущем примере, считывает из записи данных четыре числа и заносит их в ячейки памяти, соответствующие элементам массива А(1), A(2), A(3), А(4). Если количество вводимых чисел может меняться при каждом прогоне программы, то оператор ввода изменяется так, чтобы сначала вводилось целое число, обозначающее количество вводимых элементов массива. А за этим вводом должна следовать конструкция оператора с неявным циклом. Например:
DIMENSION A (50)
READ (5, *) N
READ (5, *) (А(I), I = 1, N)
В этом примере оператор DIMENSION размещает в памяти 50 ячеек для хранения массива А. Второй оператор считывает целое число из записи данных и присваивает его целой переменной N. Третий оператор последовательно считывает со следующей записи данных N вещественные числа, которые заносятся в N элементов массива А: А(1), А(2).. А(N). Если ввод завершен, а в записи данных остались неиспользованные числа, то последние теряются. Если же в текущей записи данных не хватает, то оператор READ продолжает ввод с начала следующей записи, размещенной на следующей строке.
Оператор DIMENSION отводит для хранения массива область памяти фиксированного размера. Если N превысит установленный размер массива (в нашем примере 50), то транслятор может выдать сообщение об ошибке. Если такого сообщения не последует, то последние числа из записи могут быть размещены в непредсказуемых областях памяти, что приводит к труднообнаруживаемым ошибкам исполнения. Если N < 50, то в массиве А останутся элементы с неопределенными значениями и их не следует использовать, пока они не получат конкретные значения программы. Оператор ввода с неявным циклом может вводить числа не во все элементы массива подряд, а с некоторым шагом. Например, оператор READ(5,*)(А(I),I=1,5, 2) первое число из записи данных вносит в элемент А(1), второе – в элемент А (3), третье в элемент (5). Оператор ввода может иметь и такую форму:
READ (5, *) (А(I), I = 4, 0, -2)
Этот оператор последовательно считывает три числа и заносит первое число в А (4), второе–в А(2) и третье – в А(0). Таким образом, можно сделать вывод, что общая форма неявного цикла для одномерного массива имеет вид: (А (І), І = К1, К2, К3),
где К1 – начальный номер элемента массива. Если массив имеет имя А, то эта конструкция неявного цикла обращается сначала к элементу А(К1), затем к А(К1+ К3), потом – А(К1 + 2 * К3) и т.д. до тех пор, пока значение индексного выражения не превысит К2. Если константа К3 в конструкции неявного цикла опущена, то ее значение по умолчанию полагается равным 1. В операторе READ можно записать лишь имя массива без индексов. Например:
DIMENSION А (50)
READ (5, *) А
В этом случае оператор READ записывает информацию в каждый элемент массива А. Поэтому в исходных данных должно быть достаточно чисел для заполнения всех элементов массива А, определенного оператором DIMENSION.
Все сказанное выше в полной мере относится и к операторам вывода под управлением списка. Замена оператора READ на оператор PRINT приведет к выводу значений элементов массива на печать. Каждый оператор PRINT начинает печатать с начала новой строки, поэтому все данные, которые нужно напечатать в одной строке, следует указывать в одном операторе PRINT. Для иллюстрации сказанного заменим в ранее рассмотренных примерах оператор READ на PRINT:
PRINT *, N, X, A (2), A (3), I (1)
PRINT *, A (1), A (2), A (3), A (4)
PRINT *, (A (I), I = 1, 4)
PRINT *, (A (I), I = 1, N)
PRINT *, A
Неявный цикл заключен в скобки и представляет собой четко завершенную конструкцию. Поэтому его можно интерпретировать как отдельный элемент списка оператора ввода – вывода. Отсюда следует, что допустим оператор вида:
PRINT *, X, Y, (A(I), I =1, N), Z, (B(J), J =10, 1, -1)
Если на строке не хватит места для печати очередного значения, то вывод автоматически будет продолжен с начала новой строки.