
- •1.Учебно-методический комплекс дисциплины
- •Данные о преподавателе:
- •1.2 Данные о дисциплине:
- •Выписка из учебного плана
- •1.3 Пререквизиты
- •1.4 Постреквизиты
- •1.5 Цели и задачи дисциплины
- •1.6 Перечень и виды заданий и график их выполнения
- •Виды заданий и сроки их выполнения
- •1.7 Список литературы
- •1.8 Контроль и оценка знаний.
- •1.9 Политика и процедура курса
- •2 Содержание Активного раздаточного материала
- •2,1 Тематический план курса
- •2.2 Конспект лекционных занятий
- •#Define millenium 1000
- •// Нельзя изменять
- •/* Это моя первая программа на Си*/
- •Void main()
- •Void main ()
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Void main(void)
- •If (логическое выражение) оператор 1;
- •Void main()
- •If (логическое выражение)
- •If (условие 1 )
- •If (условие 1 )
- •If (X) printf ("Число не равно нулю");
- •Void main()
- •Void main(void)
- •Void main()
- •Void main()
- •Int n; // Количество узлов интерполяции
- •Int k; // Номер узла
- •Void main()
- •Vvedi 5 7
- •Int *a; // Указатель на массив целых чисел
- •Void main()
- •Int vect[10], s1[50];
- •Int vect [n];
- •Void main( )
- •Int min; // номер минимального элемента
- •Int random ( int n )
- •Void lin(char a)
- •Void z1(int * X, int * y)
- •Void z1(int*, int*);
- •Int имя переменной;
- •Void main()
- •8 Есть цифра
- •8 Есть буква или цифра
- •Int integ;
- •Void main()
- •Void main()
- •Void main()
- •Void main()
- •Int ocen;
- •Void main( )
- •File *указатель на файл;
- •Fclose(имя_указателя);
- •Void main()
- •Int h; /*дескриптор создаваемого файла*/
- •Void main()
- •Initgraph(&g_driver,&g_mode," ");
- •Vgamed 1 640x350
- •Vgahi 2 640x480
- •Initwindow ( 400, 300 ); // открыть окно для графики 400 на 300
- •Void main(void)
- •Int g_driver,g_mode,g_error;
- •2.3 Планы лабораторных занятий
- •Планы занятий в рамках самостоятельной работы студентов под руководством преподавателя (срсп).
- •2.5 Планы занятий в рамках самостоятельной работы студентов (срс).
- •2.6 Тестовые задания для самоконтроля с указанием ключей
- •Глоссарий
Void main()
{
int x=5;
int y=60:
x++;
++y;
printf("x=%d y=%d\n", x, y);
printf("x=%d y=%d\n", x++, ++y);
}
Результатом работы этой программы будет следующее:
х=6, у=61;
х=6, у=62.
Обратите внимание на то, что напечатанное значение х не изменилось при втором обращении к функции printf(), а значение у увеличилось на единицу. На самом деле значение переменной х также увеличилось на единицу, но уже после выхода из функции printf(). Различие в использовании префиксной ++х и постфиксной x++ форм состоит в следующем:
x++ - значение переменной х сначала используется в выражении, и лишь затем переменная увеличивается на единицу;
++х - переменная х сначала увеличивается на единицу, а затем ее значение используется в выражении.
Старшинство арифметических операций следующее:
++, --
- (унарный минус)
*, /, %
+, -
Операции, одинаковые по старшинству, выполняются в порядке слева направо. Конечно же, для того чтобы изменить порядок операций, могут использоваться круглые скобки.
Операции отношения и логические операции
Операции отношения используются для сравнения. Полный список операций отношения в языке С следующий:
< меньше,
<= меньше или равно,
> больше,
>= больше или равно,
== равно,
!= не равно.
В языке С имеется также три логические операции:
&& и (AND),
|| или (OR),
! не (NOT).
Операции отношения используются в условных выражениях (условиях). Примеры условных выражений:
а<0, 101>=105, 'а'=='А' , 'а'!='А'
Каждое условное выражение проверяется: истинно оно или ложно. Точнее следует сказать, что каждое условное выражение принимает значение "истинно" ("true") или "ложно" ("false"). В языке С нет логического (булевого, boolean) типа. Поэтому результатом логического выражения является целочисленное арифметическое значение. В языке С "истинно" - это ненулевая величина, "ложно" - это нуль. В большинстве случаев в качестве ненулевого значения "true" используется единица. Так, из приведенных выше примеров условных выражений 2-е и 3-е приняли значение "нуль", а 1-е и 4-е - ненулевые значения. Рассмотрим пример.
#include <stdio.h>
/* Пример 12 */
main()
{
int tr, fal;
tr = (10l<=105); /*выражение "истинно" */
fal = (101>105); /*выражение "ложно" */
printf("true - %d , false - %d\n", tr, fal);
}
Программа выведет на экран:
true – 1 , false - 0
Логические операции в языке С соответствуют классическим логическим операциям AND(&&), OR (||) и NOT (!), а их результат - соответствующим таблицам, которые принято называть таблицами истинности:
Х |
Y |
X AND Y |
X OR Y |
NOT X |
X XOR Y |
1 1 0 0 |
1 0 1 0 |
1 0 0 0 |
1 1 1 0 |
0 0 1 1 |
0 1 1 0 |
Операция XOR называется операцией "исключающее или". В языке С нет знака логической операции XOR, хотя она может быть реализована с помощью операций AND, OR и NOT. Однако в дальнейшем мы будем рассматривать побитовые операции, среди которых операция "исключающее или" уже есть.
Операции отношения и логические операции имеют приоритет ниже, чем арифметические операции. Это значит, что выражение 12>10+1 рассматривается как выражение 12>(10+1).
Старшинство логических операций и операций отношения следующее:
!
> < >= <=
== !=
&&
||
Операция присваивания
Операция присваивания в языке С обозначается просто знаком =. В отличие от других языков в языке С оператор присваивания может использоваться в выражениях, которые также включают в себя операторы сравнения или логические операторы.
В фрагменте
if ((f=x-y)>0) printf ("Число х, больше чем у)
сначала вычисляется величина х-у, которая присваивается переменной f, затем сравнивается ее значение с нулем. Еще одной особенностью использования оператора присваивания в языке С является возможность записать оператор:
а=b=с=х*у
Дополнительные операции присваивания
В языке С имеются дополнительные операции присваивания
+=, -=, /= *= и %=.
Вместо выражения n = n + 5 можно использовать выражение n += 5. Здесь += аддитивная операция присваивания, в результате выполнения которой величина, стоящая справа, прибавляется к значению переменной, стоящей слева.
Аналогично
m-=20 то же самое, что и m=m-20;
m*=20 то же самое, что и m=m*20;
m/=10 то же самое, что и m=m/10;
m%=10 то же самое, что и m=m%10.
Поразрядные операции (побитовые операции)
Поразрядные операции можно проводить с любыми целочисленными переменными и константами. Нельзя использовать эти операции с переменными типа float, double и long double. Результатом побитовой операции будет целочисленное значение.
Поразрядными операциями являются:
& AND,
| OR,
^ XOR,
NOT,
<< сдвиг влево,
>> сдвиг вправо.
Операции AND, OR, NOT и XOR полностью аналогичны соответствующим логическим операциям. Только в этом случае сравниваются не значения выражений, а значения каждой соответствующей пары разрядов (битов).
Операции сдвига >> и << применимы только к целочисленным переменным. В результате применения этой операции сдвигают все биты левого операнда на число позиций, определяемых выражением справа соответственно вправо или влево. Недостающие значения битов дополняются нулями.
Значением выражения х=х<<3 в двоичном виде будет 11111000.
Значением выражения х=х>>3 в двоичном виде будет 00011111.
Поразрядные операции порождают еще несколько сложных операций присваивания:
|=, &=, ^=, <<=, >>=.
Прочие операции
операции () и [ ]
В языке С круглые и квадратные скобки также рассматриваются как операции. Причем эти операции имеют наивысший приоритет.
операция УСЛОВИЕ ?:
Операция условие - единственная операция языка С, имеющая три операнда. Эта операция имеет вид:
перем = (лог_выраж.) ? (выраж.1) : (выраж.2);
Вычисляется выражение (лог_выраж.). Если это выражение имеет ненулевое значение, то вычисляется выражение (выраж.1). Результатом операции будет значение выражения (выраж.1).
Если значение выражения (лог_выраж.) равно нулю, то вычисляется выражение (выраж.2) и его значение будет результатом операции.
операция ЗАПЯТАЯ
Операция запятая имеет самый низкий приоритет из всех операций языков С и C++. Операция запятая выполняется слева направо, и ее значением является значение правого операнда.
операция SIZEOF
Операция sizeof имеет две формы: sizeof (тип) или sizeof (выражение).
Результатом этой операции является целочисленное значение величины типа или выражения в байтах. При использовании второй формы значение выражения не вычисляется, а лишь определяется его тип. Примеры использование: sizeof (short int) или sizeof (х). В качестве типа в операции sizeof не может использоваться тип void.
Приоритеты операций и порядок их выполнения приведены в таблице1
Таблица 1
Приоритеты операций и порядок
Прио-ритет |
Операция |
Название |
Порядок выполнения |
|
1 |
( ) |
Скобки, вызов функции |
Слева направо |
|
1 |
[ ] |
Квадратные скобки |
Слева направо |
|
1 |
. |
Выделение элемента структуры |
Слева направо |
|
1 |
-> |
Выделение элемента структуры |
Слева направо |
|
2 |
++ -- |
Инкремент , декремент |
Справа налево |
|
2 |
~ |
Побитовое НЕ |
Справа налево |
|
2 |
! |
Логическое НЕ |
Справа налево |
|
2 |
+ - |
Унарный минус, унарный плюс |
Справа налево |
|
2 |
& |
Взятие адреса |
Справа налево |
|
2 |
* |
Обращение по адресу, разыменование |
Справа налево |
|
2 |
(тип) |
Преобразование типов |
Справа налево |
|
2 |
sizeof |
Определение размера в байтах |
Справа налево |
|
3 |
* |
Умножение |
Слева направо |
|
3 |
/ |
Деление |
Слева направо |
|
3 |
% |
Остаток от деления |
Слева направо |
|
4 |
+, - |
Сложение, вычитание |
Слева направо |
|
5 |
>>, << |
Сдвиги влево, вправо |
Слева направо |
|
6 |
< , > |
Меньше, больше |
Слева направо |
|
6 |
<= ,(!=>) |
Меньше или равно |
Слева направо |
|
6 |
>=, (!<) |
Больше или равно |
Слева направо |
|
Прио-ритет |
Операция |
Название |
Порядок выполнения |
|
7 |
== , != |
Равно, не равно |
Слева направо |
|
8 |
& |
Побитовое И |
Слева направо |
|
9 |
^ |
Побитовое исключ. ИЛИ |
Слева направо |
|
10 |
| |
Побитовое ИЛИ |
Слева направо |
|
11 |
&& |
Логическое И |
Слева направо |
|
12 |
|| |
Логическое ИЛИ |
Слева направо |
|
13 |
?: |
Условная операция |
Справа налево |
|
14 |
=, *=, /=, %= , +=, -= |
Присваивание, умножение и присваивание, деление и присваивание, и т.п. |
Справа налево |
|
14 |
<<=, >>=, &=, ^= , != |
Поразрядные операции и присваивание |
Справа налево |
|
15 |
, |
Операция запятая |
Слева направо |
Математические функции
Язык С имеет широкий набор библиотечных функций. В таблице 2 приведены некоторые математические функции, описание которых содержится во включаемых файлах math.h и stdlib.h.
Таблица 2
Математические функции
Функция |
Матем. обозначение |
Обозначение |
Абсолютное значение |
|x| |
fabs(x)
|
Косинус |
cos x |
cos(x) |
Синус |
sin x |
sin(x) |
Тангенс |
tg x |
tan(x) |
Экспонента |
ех |
exp(x) |
Возведение в степень |
ху |
pow(x,y) |
Степенная функция |
10n |
pow10(n) |
Логарифм натуральный |
ln x |
log(x) |
Логарифм десятичный |
log x |
log10(x) |
Корень квадратный |
|
sqrt(x) |
Вычислить
,
при x=2.444, y=0.0869, z=-130.0
Текст программы может иметь следующий вид:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#define x 2.444
#define y 0.00869
#define z -130.0