- •Содержание
- •Глава 1. Описание языка c ......................................................................... 5
- •Глава 2. Описание языка fortran ....................................................... 38
- •Глава 3. Решение задач на языках c и fortran ................................ 70
- •Глава 1. Описание языка c
- •1.1. Структура c-программы
- •1.2. Скалярные типы данных и константы, строковые константы
- •1.3. Описание скалярных переменных. Директива #define
- •1.4. Операции. Выражения
- •1.5. Стандартные математические функции
- •1.6. Ввод-вывод
- •Int printf ( строка формата [ , список вывода ] )
- •Int scanf ( строка формата , список ввода )
- •1.7. Метки, оператор goto, условные конструкции, оператор break, функция exit
- •If ( логическое выражение ) оператор/блок [ else оператор/блок ]
- •1.8. Циклические конструкции
- •1.9. Указатели, адресная арифметика
- •1.10. Массивы
- •1.11. Функции
- •1.12. Классы памяти. Общие правила описания. Оператор typedef
- •1.13. Строковые переменные, ввод-вывод строк, стандартные функции обработки строк. Функции проверки символов
- •Int sprintf(char* s,char* формат [ , список вывода ] )
- •1.14. Макроопределения
- •1.15. Внешние файлы
- •Int fclose(file* указатель на файл )
- •Int feof(file* файл )
- •1.16. Структуры, объединения, битовые поля
- •1.17. Динамическое распределение памяти
- •1.18. Графика
- •Глава 2. Описание языка fortran
- •2.1. Структура fortran-программы
- •2.2. Типы данных. Константы
- •2.3. Описание переменных, правила умолчания, операторы
- •Implicit тип ( буквы ) , ...
- •2.4. Оператор присваивания. Операции
- •2.5. Стандартные математические функции
- •2.6. Ввод-вывод
- •2.7. Оператор соntinue. Операторы перехода. Условные операторы
- •If (логическое выражение)оператор
- •If (арифметическое выражение)метка1,метка2,метка3
- •2.8. Операторы цикла
- •2.9. Функции loc, locfar, locnear
- •2.10. Массивы
- •2.11. Подпрограммы subroutine, function и interface
- •Intrinsic список имен
- •2.12. Общие области, подпрограмма block data. Оператор equivalence
- •2.13. Символьные переменные
- •2.14. Операторные функции
- •2.15. Внешние файлы
- •2.16. Структуры
- •2.17. Динамические массивы
- •2.18. Графика
- •Глава 3. Решение задач на языках c и fortran
- •Задача 1. Вывод натурального числа
- •Задача 2. Сумма ряда
- •Задача 3. Медленная сортировка
- •Задача 4. Быстрая сортировка
- •Задача 5. Слова
- •Задача 6. График
- •Задача 7. Кубическое уравнение
- •Задача 8. Собственное число
- •Комментарии к задачам
Глава 2. Описание языка fortran
В этой главе содержится краткое описание языка FORTRAN 77, соответствующее компилятору Microsoft FORTRAN Optimizing Compiler Version 5.00.
2.1. Структура fortran-программы
FORTRAN - позиционный язык; это означает, во-первых, что операторы языка должны располагаться в строго определенных позициях, и, во-вторых, что значение символа может зависеть от его местонахождения. Каждая строка FORTRAN-программы может содержать не более одного оператора. Операторы записываются в позициях с 7-й по 72-ю. Если оператор не умещается на одной строке, его можно продолжить на следующей строке, записав в 6-й позиции любой символ, кроме пробела и символа 0. В 6-й позиции начальной строки допускается символ 0. Позиции с 1-й по 5-ю могут содержать метки. Метка в языке FORTRAN - это натуральное число (можно с ведущими нулями). Пустые строки допускаются. Комментарий занимает целую строку, в первой позиции строки комментария должен стоять один из символов *, C или c. Второй тип комментария - комментарий в остатке строки, он отделяется от оператора символом “ ! ”. И наконец, в любой строке позиции с 73-й и до конца строки есть позиции комментария. Пробелы допускаются в любом месте оператора, компилятор считает пробелы значащими только внутри символьных констант, в других местах они игнорируются. Это означает, в частности, что можно вставлять пробелы в идентификаторы : MYNUMBER и MY NUMBER и M Y N U M B E R - это корректная запись одного и того же идентификатора. Компилятор не различает в идентификаторах строчные и прописные буквы. Длина идентификатора может быть любой, но учитываются только шесть первых символов. Ключевые слова языка FORTRAN не резервируются никогда, их можно использовать в любых целях.
Последним оператором программы должен быть оператор END , первым оператором может быть (но не обязательно) оператор
PROGRAM имя программы
Кроме операторов текст программы может содержать так называемые метакоманды, которые дают возможность устанавливать и менять режимы компиляции. Метакоманда начинается с символа $, который записывается в первой позиции. Одна из метакоманд - $INCLUDE - включает в текст программы внешний файл, она записывается в виде $INCLUDE:'имя файла'
2.2. Типы данных. Константы
В языке FORTRAN есть арифметические, логические и символьные данные. Арифметические типы данных:
INTEGER*1 - аналогичен char в языке C и ShortInt в языке PASCAL;
INTEGER*2 - аналогичен int в языке C и Integer в языке PASCAL;
INTEGER*4 - аналогичен long в языке C и LongInt в языке PASCAL;
INTEGER - соответствует либо INTEGER*2, либо INTEGER*4 - в зависимости от настройки компилятора, по умолчанию это INTEGER*4. Явно задать длину данных типа INTEGER можно с помощью метакоманды $STORAGE:2 или $STORAGE:4
REAL*4 (или REAL) - аналогичен float в языке C и Single в языке PASCAL;
REAL*8 (или DOUBLE PRECISION) - аналогичен double в языке C и Double в языке PASCAL;
COMPLEX*8 (или COMPLEX) - комплексные числа, действительная и мнимая части которых имеют тип REAL*4
COMPLEX*16 - комплексные числа, действительная и мнимая части которых имеют тип REAL*8
Логические типы данных:
LOGICAL*1
LOGICAL*2
LOGICAL*4
LOGICAL - соответствует либо LOGICAL*2, либо LOGICAL*4, в зависимости от настройки компилятора, по умолчанию это LOGICAL*4. Длина типа LOGICAL также определяется метакомандой $STORAGE.
Символьные типы данных:
CHARACTER - символ,
CHARACTER*длина - строка символов.
Вообще говоря, различие между символом и символьной строкой в языке FORTRAN не проводится, CHARACTER или CHARACTER*1 - это строка из одного символа.
Целые константы в языке FORTRAN могут иметь основание от 2 до 36 и записываются в виде [ [ основание ] # ] константа . Если опущены основание и символ #, то константа считается десятичной, если опущено только основание, то константа 16-ричная. Например: 2#11111111, 3#100110, 255, #FF, 19#D8. В целых константах с основанием, большим 10, в качестве дополнительных цифр используются латинские буквы A=10, B=11, ... ,Z=35. Все целые константы имеют тип INTEGER.
Вещественные константы записываются с фиксированной или плавающей точкой и имеют по умолчанию тип REAL : 2. , -.05 , 1E0 , -.3E-7 . В константах двойной точности вместо буквы E пишется D : 1D0 , -67.3D-7 .
Логические константы записываются в виде .FALSE. или .TRUE.
Строковые константы записываются либо в виде 'символы' , либо в виде 'символы' C. Последняя запись называется C-строкой (т.е. это строка, организованная так же, как в языке C), она всегда заканчивается 0-символом (который явно не записывается) и может содержать специальные символы \n, \t, \v, \b, \r, \f, \a, \', \”, \\, \8-ричный номер , \x16-ричный номер. Например, 'это - FORTRAN-строка' или 'это - \"C-строка\"\n\a'C .
Комплексные константы записываются в виде:
( действительная часть , мнимая часть )
Для записи действительной и мнимой частей можно использовать любые константы, в том числе и целые : (-1,0.5) , (2D0,-3.5) .
