- •Содержание
- •1.Введение
- •Рекомендуемая литература
- •1.1Этапы решения инженерных задач с помощью эвм.
- •1.2Алгоритмы решения задач.
- •1.2.1Понятие алгоритма, его свойства.
- •Свойства алгоритма
- •1.2.2Обозначения элементов алгоритмов (блоки).
- •1.2.3Базовые управляющие конструкции.
- •Основные блочные символы.
- •Базовые алгоритмические структуры.
- •1.2.4Некоторые стандартные приемы алгоритмизации.
- •1. Поменять местами содержимое двух переменных (три ведра).
- •Определить, имеют ли две переменные один знак.
- •Проверить делимость числа на 3.
- •Алгоритм обработки массива.
- •Найти сумму элементов массива.
- •Найти максимальный элемент массива.
- •Использование флага наступления события.
- •Построить таблицу значений функции на отрезке и найти ее максимальное значение.
- •1.3Системы программирования.
- •1.3.1Состав.
- •1.3.2Язык программирования, алфавит, синтаксис, семантика.
- •1.3.3Реализация языка.
- •1.4Характеристики языков программирования.
- •1.5Целевое назначение систем программирования.
- •1.5.1Машинно-ориентированные.
- •1.5.1.1Системы символического кодирования.
- •1.5.1.2Ассемблеры.
- •1.5.2Машинно-независимые.
- •1.5.2.1Процедурно-ориентированные.
- •1.5.2.2Проблемно-ориентированные.
- •1.6Этапы обработки программы машиной.
- •2.1История создания.
- •2.3Алфавит, структура программы.
- •2.3.1Алфавит.
- •2.3.2Структура программы.
- •2.4Типы данных Си. Константы. Переменные. Описания переменных.
- •2.5Выражения в языке Си.
- •2.5.1Арифметические операции и выражения.
- •2.5.2Логические операции и выражения.
- •2.5.3Некоторые другие операции в языке Си.
- •2.5.3.1Операция присваивания.
- •2.5.3.2Условная операция.
- •2.5.3.3Операция последовательного вычисления (запятая).
- •2.5.3.4Специфические формы операции присваивания.
- •2.5.3.5Приоритет выполнения операций.
- •2.5.4Стандартные функции.
- •2.5.4.1Правила записи.
- •2.5.4.2Основные математические функции.
- •2.6.2.2Оператор бесформатного ввода с клавиатуры.
- •2.6.2.3Функция форматного вывода на экран.
- •2.6.2.4Функция ввода символа с клавиатуры.
- •2.6.3Составной оператор.
- •3.Операторы управления.
- •3.1Условные операторы.
- •3.1.1Оператор if-else.
- •3.1.2Оператор else-if.
- •3.2Оператор-переключатель. Оператор break.
- •3.3Операторы для организации цикла.
- •3.3.1Оператор цикла с предусловием (while).
- •3.3.2Оператор цикла с постусловием (do).
- •3.3.3Оператор цикла с параметром (for) или пошаговый.
- •3.3.4Вложенные циклы.
- •3.3.5Операторы break и continue.
- •3.3.6Оператор безусловного перехода.
- •4.Использование массивов. Указатели.
- •4.1Массивы.
- •4.1.1Понятие массива. Описание массива.
- •4.1.2Инициализация массивов.
- •4.1.2.1Инициализация массивов при их объявлении.
- •4.1.2.2Инициализация массивов вводом с клавиатуры.
- •4.1.3Вывод массивов.
- •4.1.4Работа с массивами.
- •4.2Указатели.
- •4.2.1Адреса и указатели.
- •4.2.2Массивы и указатели.
- •4.2.3Строки и указатели.
- •5.Функции пользователя в языке Си.
- •5.1Назначение функций. Описание функции.
- •5.2Обращение к функции. Прототип функции. Область видимости и время жизни переменных.
- •5.3Правила соответствия формальных параметров и фактических аргументов.
- •5.4Передача данных по значению и по адресу. Функция scanf().
- •5.5Использование массивов в качестве аргументов функции.
- •Int na, nb; // количества введенных элементов этих массивов
- •Vvod_mas1(&na,a) // Ввод количества элементов na и массива a
- •Vvod_mas1(&nb,b) // Ввод количества элементов nb и массива b
- •If password("Мой пароль")
- •6.Работа с внешними файлами в Си.
- •6.1Файловый указатель. Открытие файла.
- •6.2Чтение данных из текстового файла.
- •6.3Запись данных в текстовый файл. Закрытие файла.
2.5.3Некоторые другие операции в языке Си.
Операции в языке Си составляют его фундамент. Их более 40 и они могут применяться не только к одному или двум, но и к 3 операндам. Рассмотрим еще некоторые: сначала основные, а затем специфические, позволяющие более коротко записывать выражения.
2.5.3.1Операция присваивания.
Операция присваивания имеет вид (синтаксис):
переменная = выражение
Семантика: сначала вычисляется выражение, затем результат заносится в переменную, при этом тип результата преобразуется к типу переменной (конечно, если это возможно, например, тип float нельзя перевести в int, если число > 32767). Результатом операции и его типом являются значение и тип переменной.
Если в выражении несколько операций "=", то они выполняются справа налево. Приоритет этой операции ниже приоритета всех остальных операций, кроме операции "запятая", которая рассмотрена ниже.
Пример 1:
float a=2.5,b; int c; char d;
Результатом выражения
Выражение |
Значение b |
Значение с |
Значение d |
Знач-е выр-я |
c=a+1 |
|
3 |
|
3 |
b=c=a+1 |
3.0 |
3 |
|
3.0 |
c=b=a+1 |
3.5 |
3 |
|
3 |
d=c='A'+4 |
|
69 |
'E' |
'E' |
(c=a+1)+2>5 |
|
3 |
|
0 |
В последнем примере необходимость скобок связана с тем, что приоритет у операции "+" выше, чем у "=".
2.5.3.2Условная операция.
Условная операция имеет 3 операнда (т.е. является тернарной) и выглядит так (синтаксис)
условие ? выражение1 : выражение2
Семантика: если условие истинно, то результатом операции является значение выражения1, если ложно, то значение выражения2.
Пример 2.
Значением выражения x>y ? x : y будет большее из x и y. Значением выражения x<0 ? -x : x является модуль x.
2.5.3.3Операция последовательного вычисления (запятая).
Операция последовательного вычисления имеет вид (синтаксис):
Выражение1,выражение2
Семантика: при выполнении этой операции сначала вычисляется выражение1, затем выражение2. Результатом операции является значение выражения2.
Приоритет у этой операции самый низкий из всех. Используется там, где по синтаксису допускается только одно выражение. Например, значением выражения x>y ? (y=0, x) : (x=0,y) будет большее из x и y, а меньшее обнулится .
2.5.3.4Специфические формы операции присваивания.
Для записи операций присваивания вида
переменная = переменная арифм.операция выражение,
например, m=m+2*(b-1), в языке Си предусмотрены специальные формы их записи, которые легче пишутся и быстрее выполняются:
переменная арифм.операция = выражение,
Например, вместо вышеуказанного выражения можно записать m+=2*(b-1), вместо m=m/2 можно записать m/=2 и т.п. Приоритет у этих операций такой же, как у обычного присваивания.
При необходимости увеличения (уменьшения) значения переменной на 1 предусмотрена еще одна удобная форма операции присваивания, называемая декрементом (инкрементом) и имеющая вид ++ (--), например, i++ означает i=i+1, а i-- означает i=i-1.
Такой вид записи обычно используется внутри выражений. При этом символы ++ (--) можно ставить как перед именем переменной (++n, префиксная форма операции), так и после него (n--, постфиксная форма). Отличие в этих формах состоит в том, что изменение переменной происходит в первом случае до использования ее значения в выражении, а во втором случае - после.
Пример 3. Пусть k=4. Операции m=k++ занесут сначала число 4 (т.е. значение k) в m , а затем увеличат k на 1. Наоборот, операции m=++k сначала увеличат k на 1, а затем результат (число 5) занесут в m.
