Бочаров презентации 1 семестр / Tech_Progr_PPT_2p_2016
.pdfНаименование дисциплины
Технология и языки программирования
Преподаватель
Бочаров Юрий Иванович
доцент кафедры микро- и наноэлектроники НИЯУ МИФИ
E-mail: micro.nano@yandex.ru
Web-сайты:
http://yibocharov.narod.ru
http://bocharov.my1.ru
Общие замечания
При проведении практических занятий и лабораторных
работ по дисциплине использовался свободно распространяемый пакет Pelles C for Windows, включающий типовые инструментальные средства создания и отладки программ: С-компилятор, отладчик и интегрированную среду разработки (IDE) с графическим интерфейсом пользователя (GUI).
Все приведенные примеры программ тестировались с использованием этого программного пакета.
Поскольку инструментальные средства, входящие в пакет, не русифицированы, то в текстах программ нигде кроме комментариев не используются символы кириллицы.
Данная презентация является второй частью комплекта иллюстративных материалов к проведению практических занятий по дисциплине. Первая часть посвящена общему ознакомлению с языком С и простыми средствами ввода и вывода. Во второй части рассматриваются основные операции и управляющие операторы языка С.
2 |
Технология и языки программрования |
Выполнение простых операций над числами
Пример – ввод и деление двух целых чисел
int x=0; int y=0;
float z=0.0;
printf("Enter inline integer x and y: "); scanf("%d%d",&x,&y);
printf("\nDividend= %d, Divisor= %d\n",x,y); z = x/y;
printf("\nQuotient z=x/y= %4.2f\n\n",z);
Если будут введены, например, числа 7 и 4, то будет выведено z= 1.00, что является верным результатом целочисленного деления 7 на 4 с выводом частного в форме с плавающей точной.
Тип результата определяется типом операндов. Если хотя бы у одного из операндов задать тип float, то результат был бы тоже float.
3 |
Технология и языки программрования |
Выполнение простых операций над
числами (продолжение)
Если оба операнда – целые числа, а результат надо получить в форме с плавающей точкой, то следует явно указать на преобразование формата:
int x,y=0; float z=0.0;
printf("Enter integer x and y: "); scanf("%d%d",&x,&y);
z = (float) x/y; //(float) - оператор преобразования формата printf("\nz=x/y= %12.4f\n\n",z);
Еще пример:
float x,y=1.0; int z=0;
printf("Enter float x and y: "); scanf("%f%f",&x,&y);
z = (int) x+y; printf("\nz=x+y= %d\n\n",z);
4 |
Технология и языки программрования |
Список основных операций
++Постинкремент (увеличение значения переменной на 1 после ее использования в выражении), например j++
-- Постдекремент (уменьшение значения переменной на 1 после ее использования в выражении), например j--
++Преинкремент (увеличение значения переменной на 1 до ее использования в выражении), например ++i
-- Предекремент (уменьшение значения переменной на 1 до ее использования в выражении), например --i
Пример
#include <stdio.h> int main(void)
{
int a=3, b=33; printf("%d %d\n", a, b); ++a; ++b;
printf("++a -> %d ++b -> %d\n", a, b);
printf ("a++ -> %d b++ -> %d\n", a++, b++);
printf("%d |
%d\n", a, b); |
return 0; |
|
} |
|
5 |
Технология и языки программрования |
Список основных операций
(продолжение)
( ) |
- Вызов функции, например putchar(x) |
[ ] |
- Обращение к элементу массива, например A[1][0] |
*- Умножение
/ - Деление
%- Нахождение остатка от деления
+ - Сложение
—- Вычитание
sizeof() - Определение размера переменной или типа в байтах, например, если задан массив arr, то число его элементов можно вычислить так: (sizeof(arr) / sizeof(arr[0]))
(тип) - Преобразование типов, например (float)
6 |
Технология и языки программрования |
Список основных операций
(продолжение)
Операции отношения (сравнения). Они имеют результатом логические значения - ложь (представляется нулем) или истина (представляется числом отличным от нуля):
<Меньше
<= Меньше или равно
>Больше
>= Больше или равно == Равно != Не равно
Упрощенно можно считать, что результат этих операций есть как бы ответ на некоторый вопрос, причем этот ответ может или подтверждать содержащееся в вопросе утверждение (ответ - ДА, истина), или противоречить ему (ответ - НЕТ, ложь). Например:
if (z<=0) z++; else z--;
Если z меньше или равно 0 (ДА, истина), то z увеличивается на 1, если z больше 0 (НЕТ, ложь), то z уменьшается на 1
7 |
Технология и языки программрования |
Список основных операций
(продолжение)
Логические операции выполняются над операндами, которые имеют логические значения ложь или истина. Аргументами логических операций могут быть результаты операций отношения, а также любые числа. Число 0 интерпретируется как ложь, а отличное от нуля – как истина. Результатами логических операций также являются логические значения, причем за истинное значение принимается 1.
! Инверсия, логическое отрицание, операция НЕ, NOT && Конъюнкция, логическое умножение, операция И, AND || Дизъюнкция, логическое сложение, операция ИЛИ, OR
Определение логических функций
Функции задаются на всей области определения своих аргументов с помощью таблиц истинности (T – true, истина, F – false, ложь):
X |
(NOT X) |
X Y |
(X && Y) |
X Y |
(X || Y) |
||
T |
F |
F F |
F |
F F |
F |
||
F |
T |
F T |
F |
F |
T |
T |
|
|
|
T |
F |
F |
T |
F |
T |
|
|
T |
T |
T |
T T |
T |
Функция исключающее ИЛИ: X XOR Y = X^Y = (!X && Y) || (X && !Y)
применяется в побитовых операциях
8 |
Технология и языки программрования |
Список основных операций
(продолжение)
Пример
z=0; z= x && y; if (z) z++;
Если значения обеих переменных - x и y отличны от 0, то x && y = 1 (истина), переменной z присваивается значение 1, а затем, поскольку операнд в скобках условного оператора if… равен 1 (истина), то значение z увеличивается на 1 и становится равным 2.
Если же значение x или y, или обеих переменных равно 0, то x && y = 0 (ложь), поэтому операция инкремента не выполняется, и значение z остается равным 0.
9 |
Технология и языки программрования |
Список основных операций
(продолжение)
Побитовые операции выполняются над отдельными битами чисел ~ побитовая инверсия, отрицание, операция НЕ, NOT
& побитовая конъюнкция, операция И, AND
| побитовая дизъюнкция, операция ИЛИ, OR
^побитовое сложение по модулю 2, исключающее ИЛИ, операция
XOR
<< сдвиг двоичного представления числа влево >> сдвиг двоичного представления числа вправо Примеры:
printf(”Res= %d\n\”, 9 & 6); |
// результат = 0 |
|
printf(”Res= %d\n\”, 7 & 13); |
// результат = 5 |
|
printf(”Res= %d\n\”, 13 | 3); |
// результат = 15 |
|
printf(”Res= %d\n\”, 8 | 12); |
// результат = 12 |
|
printf(”Res= %d\n\”, 12 ^ 3); |
// результат = 15 |
|
printf(”Res= %d\n\”, 6 |
^ 6); |
// результат = 0 |
printf(”Res= %d\n\”, 8 |
^ 12); |
// результат = 4 |
printf(”Res= %d\n\”, 7 |
>> 1); |
// результат = 3 |
printf(”Res= %d\n\”, 7 |
<< 2); |
// результат = 28 |
printf(”Res= %d\n\”, ~7); |
// результат = -8 |
10 |
Технология и языки программрования |