- •Содержание
- •Глава 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. Собственное число
- •Комментарии к задачам
1.7. Метки, оператор goto, условные конструкции, оператор break, функция exit
Оператор безусловного перехода записывается в виде
goto метка ;
где метка - это некоторый идентификатор, использованный в данной функции в виде метка : оператор . Имена меток никак не описываются в программе и распознаются компилятором по контексту. Передача управления разрешена на любой помеченный оператор в теле функции. Однако в С++ существует одно ограничение : запрещено обходить описания, содержащие инициализацию объектов. Это ограничение не распространяется на вложенные блоки, которые можно обходить целиком.
Перед рассмотрением условных конструкций еще раз отметим, что в языке С в явном виде булевский, или логический, тип данных отсутствует, а значения true и false обозначаются соответственно ненулевым и нулевым значениями. Такой подход лишает компилятор языка С возможности выявления определенного класса ошибок. Например, с точки зрения языка С, каждое из следующих двух выражений корректно и имеет значение true: 1<10<100 , 100<10<1 . Для второго выражения: 100<10 дает 0 (false) и 0<1 дает true. Другой пример : если i и k -целые переменные, то когда вместо выражения i<k по ошибке будет записано выражение i+k , то компилятор не в состоянии будет обнаружить эту ошибку.
В языке C есть особая операция, которая называется “операция выбора” ( обозначается как ?: ), она применяется к трем операндам и записывается в виде
( логическое выражение ) ? выражение1 : выражение2
В данном случае в качестве логического может использоваться любое выражение; оно интерпретируется как ложное, если его значение равно нулю, и как истинное во всех остальных случаях. Результат операции выбора равен значению выражение1, если логическое выражение истинно, и значению выражение2, если логическое выражение ложно. Тип результата операции равен старшему из типов выражения1 и выражения2. Операция выбора старше операций присваивания и младше всех других операций, несколько записанных подряд операций выбора выполняются в последовательности справа налево. Например, выражение (a<0)?-a:a дает абсолютную величину a.
Условный оператор if в языке С записывается в виде:
If ( логическое выражение ) оператор/блок [ else оператор/блок ]
Логическое выражение (обязательно заключенное в круглые скобки) - это любое выражение, считающееся истинным, если оно не равно нулю. Условный оператор в свою очередь может включать условный оператор, таким образом допустимы вложенные условные операторы. Синтаксис языка предполагает, что при вложениях условных операторов каждое else соответствует ближайшему к нему предшествующему if. Отличие от языка PASCAL состоит лишь в отсутствии ключевого слова THEN и в том, что перед else ставится ; .
Условный оператор switch имеет вид :
switch ( выражение ) {
case кв1 : [ операторы1 ]
case кв2 : [ операторы2 ]
..........................
default : [ операторы ]
}
выражение должно иметь целый тип ; кв1 , кв2 и т.д. - константные выражения целого типа. Порядок выполнения оператора switch следующий: вычисляется выражение в скобках, если его значение равно значению какого либо из константных выражений, происходит переход к первому из операторов, стоящих после этого константного выражения, в противном случае - к оператору, стоящему после метки default, затем операторы выполняются последовательно. Метку default не обязательно включать в оператор. Выхода из оператора switch при достижении следующего case или метки default не происходит - в отличие от аналогичного оператора CASE языка PASCAL. Однако эти действия можно задать явно, используя специальный оператор выхода break; , который можно включить в последовательности выполняемых операторов. Оператор break аналогичен по своему действию процедуре Break в языке PASCAL, он вызывает немедленное завершение выполнения условной или циклической конструкции, в частности, оператора switch.
В любом месте любой функции для остановки программы можно использовать функцию void exit(int status) , где status - код завершения, передаваемый операционной системе. Функция exit аналогична процедуре Halt в языке PASCAL.
