- •Содержание
- •Глава 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.4. Операции. Выражения
В языке С определены следующие операции:
a) арифметические операции:
унарный +, унарный -, сложение +, вычитание - , умножение *, деление /, остаток от деления %, инкремент ++, декремент --. Операция / определена как для вещественных операндов, так и для целых, но для целых операндов результат всегда целый и равен целой части частного. Инкрементная и декрементная операции применимы только к переменным, выражение x++ эквивалентно выражению x=x+1 . Возможны постфиксная и префиксная формы этих операций. При использовании префиксной формы значение переменной изменяется до его подстановки в выражение, а при использовании постфиксной формы - после вычисления выражения. Например, пусть переменная x описана как int x=5; тогда значение выражения ++x*2 будет равно 12, а значение выражения x++*2 равно 10, значение переменной в обоих случаях станет равным 6.
б) операции сравнения:
равно == , не равно != , больше > , больше либо равно >= , меньше < , меньше либо равно <= . Результат операции сравнения есть целое число 0 или 1.
в) логические операции:
отрицание ! , логическое “и” && , логическое “или” ||. При вычислении логических выражений любое ненулевое значение считается истинным, результат логической операции - целое число 0 или 1. Таким образом, логические операции применимы к любым скалярным величинам, в языке С вообще нет специального типа данных для логических, или булевских, величин. Логические выражения всегда вычисляются только до получения результата; так в выражении x!=2||1/x>3 при x=0 не произойдет ошибки, т.к. выражение 1/x не будет вычисляться.
г) операция sizeof:
sizeof ( тип ) или sizeof выражение .
Результат операции - размер объекта в байтах, тип результата всегда unsigned. В языке PASCAL эта операция реализована встроенной функцией SizeOf.
д) операция явного преобразования типа:
( тип ) выражение
Если операнды некоторого выражения имеют разный тип, то они автоматически приводятся к одному (старшему) типу. Старшинство типов возрастает в такой последовательности : char < unsigned char < int < unsigned < long < float < double .
е) битовые операции:
побитовое отрицание ~ , побитовое "и" & , побитовое исключающее "или" ^ , побитовое "или" | , сдвиг битов влево << , сдвиг битов вправо >> .
Битовые операции применимы только к целым операндам, все они имеют аналоги в языке PASCAL : ~ = NOT, & = AND, ^ = XOR, | = OR, << = ShL, >> = ShR.
ж) операции присваивания:
в отличие от языка PASCAL в языке С конструкция, состоящая из двух операндов и операции присваивания, является выражением, его значение равно значению, полученному переменной в левой части выражения. Кроме обычной операции присваивания = существует еще 10 операций: += , -=, *= , /= , %= , <<= , >>= , &= , ^= , |= , смысл которых очевиден из простейшего примера : x+=a означает x=x+a .
з) операция адрес:
& переменная
Эта унарная операция применима только к переменным, ее аналог в языке PASCAL - операция @.
и) операция "запятая" - довольно необычная операция, имеющаяся только в языке C. Несколько выражений, разделенных запятыми, вычисляются последовательно слева направо. В качестве результата сохраняются тип и значение самого правого выражения.
Приоритеты операций определены следующим образом:
унарные операции > {*, /, %} > {+, -} > {<<, >>} > {>, >=, <, <=}> {==, !=} > & > ^ > | > && > || > операции присваивания > операция "запятая".
Операции одного приоритета выполняются в последовательности слева направо, кроме унарных операций и операций присваивания, которые выполняются справа налево. Для того чтобы изменить порядок выполнения операций, в выражении используются круглые скобки.
