Разделы презентаций


Основы программирования на Си, С++

Содержание

СодержаниеИстория.Архитектура компьютера. Алфавит языка. Пример программы на С. Разбор программы. Изучение синтаксиса. Функция печати. Спецсимволы управления печатью. Простые типы переменных. Основные операции. Примеры решения задача. Контрольные вопросы.

Слайды и текст этой презентации

Слайд 1Основы программирования на Си, С++
доцент кафедры теоретической кибернетики
Киевского национального университета

имени Тараса Шевченко
Бычков Алексей Сергеевич

Основы программирования на Си, С++доцент кафедры теоретической кибернетикиКиевского национального университета имени Тараса ШевченкоБычков Алексей Сергеевич

Слайд 2Содержание
История.
Архитектура компьютера. Алфавит языка. Пример программы на С. Разбор программы.


Изучение синтаксиса. Функция печати. Спецсимволы управления печатью. Простые типы переменных.

Основные операции. Примеры решения задача.
Контрольные вопросы.
СодержаниеИстория.Архитектура компьютера. Алфавит языка. Пример программы на С. Разбор программы. Изучение синтаксиса. Функция печати. Спецсимволы управления печатью.

Слайд 3Цели
Узнать:
что такое компьютер, программа
Написать первую программу
Научиться писать простые программы (очень

простые)

ЦелиУзнать:что такое компьютер, программаНаписать первую программуНаучиться писать простые программы (очень простые)

Слайд 4Что такое компьютер?
Вкратце: компьютер — устройство для программируемой обработки информации. А

это значит…
Компьютер может управлять доменной печью. А может помогать печатать

тексты. И то, и другое — обработка информации.
Чтобы компьютер работал, в него надо загрузить задание по обработке информации, так называемую программу. И наша задача — научиться эти программы писать.
Что такое компьютер?Вкратце: компьютер — устройство для программируемой обработки информации. А это значит…Компьютер может управлять доменной печью. А

Слайд 5Что такое компьютер?
Из чего компьютер состоит.
Память, в которой компьютер держит

программу, по которой работает, и данные, которые обрабатывает.
Арифметико-логическое устройство. Состоит

из небольшого количества памяти (т. н. регистров процессора) и логических схем, которые по команде извне соединяют регистры друг с другом. Например, соединили два регистра схемой суммирования — получили сумму двух чисел.
Устройство управления, которое загружает из памяти команды и исполняет их на арифметико-логическом устройстве.
Устройства ввода-вывода.

Что такое компьютер?Из чего компьютер состоит.Память, в которой компьютер держит программу, по которой работает, и данные, которые

Слайд 6Что такое компьютер?
арифметико-логическое устройство + устройство управления
=
центральный процессор.

Что такое компьютер?арифметико-логическое устройство + устройство управления = центральный процессор.

Слайд 7Архитектура компьютера
ГАРВАРДСКАЯ АРХИТЕКТУРА

Архитектура компьютераГАРВАРДСКАЯ АРХИТЕКТУРА

Слайд 8ГАРВАРДСКАЯ АРХИТЕКТУРА
Применяется в основном в специальных компьютерах и микроконтроллерах. Компьютеры

гарвардской архитектуры работают в ваших флэшках, клавиатурах, модемах.
Два запоминающих устройства

— выше скорость (память намного медленнее арифметико-логического устройства).
Крайне сложно испортить программу по ошибке программиста.
Программная память может быть постоянная, а память данных — оперативная. В таком случае гарвардской ЭВМ вообще не нужна начальная загрузка.

ГАРВАРДСКАЯ АРХИТЕКТУРАПрименяется в основном в специальных компьютерах и микроконтроллерах. Компьютеры гарвардской архитектуры работают в ваших флэшках, клавиатурах,

Слайд 9АРХИТЕКТУРА ФОН НЕЙМАНА

АРХИТЕКТУРА ФОН НЕЙМАНА

Слайд 10АРХИТЕКТУРА ФОН НЕЙМАНА
Применяется в компьютерах общего назначения. Это ваши настольные

компьютеры, ноутбуки, телефоны, планшеты, маршрутизаторы.
Общая память для программ и данных

=> возможны сложные операционные системы наподобие Windows и Linux, загружающие программы в память и выгружающие их.
Для прикладного программиста разница между этими архитектурами невелика. И на тех, и на других можно программировать на языке Си.

АРХИТЕКТУРА ФОН НЕЙМАНАПрименяется в компьютерах общего назначения. Это ваши настольные компьютеры, ноутбуки, телефоны, планшеты, маршрутизаторы.Общая память для

Слайд 11Немного о Си
Язык Си был разработан Брайаном Керниганом и Деннисом

Ричи в 1973 году. Первой крупной разработкой на Си стало

ядро операционной системы Unix.
Существуют три стандарта Си:
ANSI C (1989)
C99 (1999)
C11 (2011)
Си и его последователь Cи++  — основные языки профессионального программирования.

Немного о СиЯзык Си был разработан Брайаном Керниганом и Деннисом Ричи в 1973 году. Первой крупной разработкой

Слайд 12Немного о Си
Наиболее известные компиляторы Си:
Microsoft Visual C++
Intel C Compiler
GNU

Compiler Collection
Clang

Немного о СиНаиболее известные компиляторы Си:Microsoft Visual C++Intel C CompilerGNU Compiler CollectionClang

Слайд 13Алфавит
Буквы: A–Z, a–z, подчёркивание _.
Подчёркивание считается буквой. Язык Си

отличает заглавные буквы от строчных.
Цифры: 0–9.
Невидимые: пробел; TAB, приравнивающийся к

пробелу; перевод строки.
Специальные: ! # % ^ & * ( ) − + = ~ [ ] ' | \ ; : " { } , . < > / ?

Слайд 14Алфавит
Зарезервированные слова:
Auto, break, case, char, const, continue, default, do, double,else,enum,

extern, float, for,goto, if, inline, int, long, register, return, short,

signed, sizeof, static, struct, switch, typedef, union, unsigned, void, volatile, while
АлфавитЗарезервированные слова:Auto, break, case, char, const, continue, default, do, double,else,enum, extern, float, for,goto, if, inline, int, long,

Слайд 15Первая программа на Си
/*
Первая программа на Си

Выводит на экран Hello world
*/
// Подключение заголовочного файла
#include


// Главная функция
int main()
{
printf("Hello world!\n");
return 0;
}

Первая программа на Си/*   Первая программа на Си   Выводит на экран Hello world*///

Слайд 16Первая программа на Си
/*
Первая программа на

Си
Выводит на экран Hello world
*/

Это комментарий — пояснение

к программе. Компиляторы его пропускают.
Начиная с C99, разрешены и однострочные комментарии — от // и до конца строки.

Первая программа на Си/*   Первая программа на Си   Выводит на экран Hello world*/Это

Слайд 17Первая программа на Си
#include

Это так называемая «директива препроцессора». Эта

директива подключает к нашей программе файл с функциями ввода-вывода (standard

input-output).
Первая программа на Си#include Это так называемая «директива препроцессора». Эта директива подключает к нашей программе файл с

Слайд 18Первая программа на Си
int main()
{
…..
}

Тело программы всегда содержится в функции

с названием main, которая не принимает никаких параметров (пустые скобки)

и возвращает целое число (int, сокращение от integer).
Первая программа на Сиint main(){…..}Тело программы всегда содержится в функции с названием main, которая не принимает никаких

Слайд 19Первая программа на Си
printf("Hello world!\n");
 
Для чего мы подключали stdio.h? Из

него нам нужна функция printf (print форматный). Текст берётся в

двойные кавычки; \n — обозначение для символа перехода на новую строку.
Хороший тон: всё, что в фигурных скобках, сдвигать вправо.
То есть, мы пишем текст «Hello world» и переводим курсор на новую строку.
В конце каждой команды должна быть точка с запятой.
Первая программа на Сиprintf(

Слайд 20Первая программа на Си
return 0;
 
Наша функция main всегда возвращает 0.

Этот ноль — так называемый «код возврата из программы». Принято,

что нормально закончившаяся программа возвращает ноль, закончившаяся с ошибкой — не ноль. Коды возврата используются, когда одна программа вызывает другую.
Первая программа на Сиreturn 0; Наша функция main всегда возвращает 0. Этот ноль — так называемый «код возврата

Слайд 21Первая программа на Си
Кроме \n, существуют такие спецсимволы:
\n — перейти

на новую строку.
\a — звуковой сигнал.
\r — возврат каретки (вернуться

в начало строки).
\t — табуляция (переход к ближайшей позиции 1, 9, 17, 25, 33…)
\b — сдвинуть курсор на одну позицию назад.
\" — кавычка
\' — апостроф
\\ — обратная косая черта.
\123 — символ, заданный восьмеричным кодом. До трёх цифр.
\xAB — символ, заданный шестнадцатеричным кодом. Сколько угодно цифр.
Первая программа на СиКроме \n, существуют такие спецсимволы:\n — перейти на новую строку.\a — звуковой сигнал.\r —

Слайд 22Первая программа на Си
Одной функцией printf можно написать и несколько

строк текста, например,

printf(“Мы студенты первого курса\nКиевского национального университета\n”);
 
Запись "раз" "два"

эквивалентна "раздва", поэтому тот же оператор можно записать как
printf(“Мы студенты первого курса\n”
“Киевского национального университета\n”);
Первая программа на СиОдной функцией printf можно написать и несколько строк текста, например,printf(“Мы студенты первого курса\nКиевского национального

Слайд 23Первая программа на Си
Хороший тон: многострочный вывод оформлять вот так.


printf(“Мы

студенты первого курса\n”
“Киевского

национального университета\n”);
Первая программа на СиХороший тон: многострочный вывод оформлять вот так.printf(“Мы студенты первого курса\n”

Слайд 24Типы переменных
Программа, написанная на Си, оперирует переменными. Каждая из переменных

имеет какой-то тип. Например,

int x;

Вот мы объявили переменную x типа

int.
Типы переменныхПрограмма, написанная на Си, оперирует переменными. Каждая из переменных имеет какой-то тип. Например,int x;Вот мы объявили

Слайд 25Типы переменных

Типы переменных

Слайд 26Типы переменных
Опишем ещё пару переменных.
double vectorX, vectorY;
short charCode;
int a_1, a_2,

a_3;
long _test;

Типы переменныхОпишем ещё пару переменных.double vectorX, vectorY;short charCode;int a_1, a_2, a_3;long _test;

Слайд 27Имена переменных
Имена переменных — так называемые идентификаторы — устроены так.
Начинаются с буквы

или подчёркивания.
Состоят из букв, цифр и подчёркиваний.
Регистр важен.

Имена переменныхИмена переменных — так называемые идентификаторы — устроены так.Начинаются с буквы или подчёркивания.Состоят из букв, цифр и подчёркиваний.Регистр

Слайд 28Еще одна программа на Си
Так что давайте напишем вторую программу.
/*

Программа вводит a и b, и выдаёт сумму a+b
*/
#include
 
int

main()
{
int a, b, sum;
printf("Enter a >");
scanf("%d", &a);
printf("Enter b >");
scanf("%d", &b);
sum = a + b;
printf("a+b=%d\n", sum);
return 0;
}


Слайд 29Еще одна программа на Си
int a, b, sum;

Мы завели три

переменных целого типа: для a, b и суммы.

printf("Enter a >");
С

этим мы уже знакомы. Однако символа \n нет, так что на другую строку не переходим.
Хороший тон: прежде чем просить пользователя ввести что-то, напишите, что именно вы требуете от него.


Слайд 30Еще одна программа на Си
scanf("%d", &a);
Это scan форматный, ещё одна

функция из stdio.h. Команда считывает с клавиатуры одно число типа

int (%d в форматной строке) и помещает его в переменную a.
Для чего нужен амперсанд, мы узнаем позже, через несколько лекций, а пока только скажу: он нужен.

Еще одна программа на Сиscanf(

Слайд 32Еще одна программа на Си
sum = a + b;

Берём значения

переменных а и b, складываем их и результат помещаем в

sum. Читается как «sum присвоить a+b».

Еще одна программа на Сиsum = a + b;Берём значения переменных а и b, складываем их и

Слайд 33Еще одна программа на Си
printf("a+b=%d\n", sum);

С концепцией форматной строки мы

уже знакомы по scanf. Вместо %d будет подставлено значение переменной

sum, типа int.
Еще одна программа на Сиprintf(

Слайд 34Еще одна программа на Си
Вот еще несколько форматных строк.
%d —

для int
%u — для unsigned int
%f — для float
%lf — для double
%%

— знак процента
(Есть и другие форматные строки, об этом позже)

Еще одна программа на СиВот еще несколько форматных строк.%d — для int%u — для unsigned int%f — для

Слайд 35Целые и дробные числа
Целые числа в языке программирования Си имеют

такой вид:


[+|−|0x|0]цифры[U][L|LL]

Целые и дробные числаЦелые числа в языке программирования Си имеют такой вид:[+|−|0x|0]цифры[U][L|LL]

Слайд 36Целые и дробные числа
Минус — для отрицательного числа (−4)
0x — для

числа в шестнадцатеричной системе счисления (0xF5 = F516 = 245)
0 —

для числа в восьмеричной системе счисления (0267 = 2678 = 183)
U — чтобы сказать, что число беззнаковое (например, 1U).
L — чтобы сказать, что оно long (2L)
LL — чтобы сказать, что оно long long (123456789012LL).
Буквы U, L и LL разрешены как большие, так и маленькие.
Хороший тон: не писать 2l («два-эль»). Это Си разрешает, но легко спутать с числом 21 («двадцать один»).

Целые и дробные числаМинус — для отрицательного числа (−4)0x — для числа в шестнадцатеричной системе счисления (0xF5 =

Слайд 37Целые и дробные числа
Допустим, некоторые компиляторы отказываются работать с таким

кодом:
long long x;
x = 1212121212121212;

Приходится писать


x = 1212121212121212LL;

Целые и дробные числаДопустим, некоторые компиляторы отказываются работать с таким кодом:  long long x;  x

Слайд 38Целые и дробные числа
Дробные числа выглядят так:

[+|−]цифры.цифры[E][+|−]цифры][F|L]

Например, 3,5·10−6 записывается как

3.5e−6. По умолчанию числовые константы имеют точность double.
Если нужна

точность float, надо добавить F, если long double — L. Число 3,5 называется мантисса, число −6 — порядок.

Целые и дробные числаДробные числа выглядят так:[+|−]цифры.цифры[E][+|−]цифры][F|L]Например, 3,5·10−6 записывается как 3.5e−6. По умолчанию числовые константы имеют точность

Слайд 39Еще одна программа….
/*
Вычисление площади круга
*/
#include
int main()
{
double

r, area;
printf("Enter raduis >");
scanf("%lf", &r);

area = 3.14159265*r*r;
printf("Area is %lf.”, area);
return 0;
}


Слайд 40Еще одна программа….
double r, area;

Заводим две переменных типа double: радиус

и площадь.
Внимание! Старайтесь придумывать переменным говорящие имена. Вашу программу будет

проще читать тому, кто не знаком с вашим кодом.

Еще одна программа….double r, area;Заводим две переменных типа double: радиус и площадь.Внимание! Старайтесь придумывать переменным говорящие имена.

Слайд 41Еще одна программа….
scanf("%lf", &r);
Тут мы вводим радиус типа double, с

соответствующей форматной строкой.

area = 3.14159265*r*r;
Умножение в компьютере принято обозначать звёздочкой.

Вычисляем площадь и присваиваем её переменной area.

printf("Area is %lf.”, area);
Опять-таки: раз уж выводим double, то и в форматной строке пишем %lf.
Еще одна программа….scanf(

Слайд 42Операции
1. Унарные суффиксные (наивысший приоритет).
x++ Вернуть x, затем прибавить единицу
x−− Вернуть x,

затем вычесть единицу
( ) Вызов функции; управление порядком операций (скобки как в

математике)
[ ] Элемент массива
. Поле структуры
−> Переход по указателю

Операции1. Унарные суффиксные (наивысший приоритет).x++	Вернуть x, затем прибавить единицуx−−	Вернуть x, затем вычесть единицу( )	Вызов функции;	управление порядком операций

Слайд 43Операции
2. Унарные префиксные.
++x Прибавить единицу
−−x Вычесть единицу
+ Ничего не делает (например, +5)
− Изменить знак

(например, −x)
! Логическое «НЕ»
~ Побитовое «НЕ»
(int) Преобразование типа
* Разыменование указателя
& Получить указатель на объект
sizeof() Получить размер

переменной

Операции2. Унарные префиксные.++x	Прибавить единицу−−x	Вычесть единицу+	Ничего не делает (например, +5)−	Изменить знак (например, −x)!	Логическое «НЕ»~	Побитовое «НЕ»(int)	Преобразование типа*	Разыменование указателя&	Получить указатель

Слайд 44Операции
3. Операции типа умножения.
* Умножение
/ Деление (для целых чисел — округляет к нулю)
То

есть, 10.0/3.0 == 3.3333333 (дробные числа); 10/3 == 3 (целые

числа)
% Взятие остатка от деления (10%3 == 1).
Работает только для целых чисел, для дробных функция fmod.

Операции3. Операции типа умножения.*	Умножение/	Деление (для целых чисел — округляет к нулю)	То есть, 10.0/3.0 == 3.3333333 (дробные числа); 10/3

Слайд 45Операции
4. Операции типа сложения
+ Сложение
− Вычитание

5. Побитовые сдвиги
>> Сдвиг вправо (для знаковых чисел

— т. н. «арифметический сдвиг»)

Операции4. Операции типа сложения+	Сложение−	Вычитание5. Побитовые сдвиги>>	Сдвиг вправо (для знаковых чисел — т. н. «арифметический сдвиг»)

Слайд 46Операции
6. Операции сравнения

< Меньше
Больше
>= Больше или равняется

7. Операции сравнения-2

== Равняется
!= Не равняется


Операции6. Операции сравнения<	Меньше	Больше>=	Больше или равняется7. Операции сравнения-2==	Равняется!=	Не равняется

Слайд 47Операции
8. & (побитовое «И»)
9. ^ (побитовое «исключающее ИЛИ» aka XOR)
10. | (побитовое

«ИЛИ»)
11. && (логическое «И»)
12. || (логическое «ИЛИ»)
13. x ? y

: z (операция «если-то-иначе») Порядок — справа налево.

Операции8. & (побитовое «И»)9. ^	(побитовое «исключающее ИЛИ» aka XOR)10. |	(побитовое «ИЛИ»)11. && (логическое «И»)12. || (логическое «ИЛИ»)13.

Слайд 48Операции
14. Присваивания. Порядок — справа налево.
= Присвоить
+= Прибавить
−= Вычесть
*= Умножить
/= Разделить
%= Взять остаток
= Сдвинуть вправо
&= Перемножить побитово
|= Сложить

побитово

Операции14. Присваивания. Порядок — справа налево.=	Присвоить+=	Прибавить−=	Вычесть*=	Умножить/=	Разделить%=	Взять остаток=	Сдвинуть вправо&=	Перемножить побитово|=	Сложить побитово

Слайд 49Операции
15. Запятая (минимальный приоритет)

, Выполнить последовательно. Результат — последний из операндов.

Операции15. Запятая (минимальный приоритет),	Выполнить последовательно. Результат — последний из операндов.

Слайд 50И ещё одна задача
Одна сухопутная миля равняется 1,609 км. Один

американский галлон равняется 3,785 л. Перевести американский расход топлива (миль

на галлон, mpg) в наши родные литры/100 км.

И ещё одна задачаОдна сухопутная миля равняется 1,609 км. Один американский галлон равняется 3,785 л. Перевести американский

Слайд 51И ещё одна задача
/*
Преобразование расхода топлива: mpg →

л/100 км
*/
#include
int main()
{
double mpg, km_l, l_100km;

printf("Enter mpg >");
scanf("%lf", &mpg);
km_l = mpg * 1.609 / 3.785;
l_100km = 100.0 / km_l;
printf("Расход топлива равен %lf l/100 km.", l_100km);
return 0;
}


Слайд 52Как сделать задержку?
И наконец. В некоторых средах программирования, когда вы

запускаете программу, окошко мелькает и исчезает. Чтобы сделать задержку, нужен

вот такой код.

printf("Press Enter!");
fflush(stdin);
getchar();
fflush(stdin);

Как сделать задержку?И наконец. В некоторых средах программирования, когда вы запускаете программу, окошко мелькает и исчезает. Чтобы

Слайд 53Как сделать задержку?
1. Напечатать «Press Enter».
2. Выбросить все несчитанные символы

из стандартного потока ввода (stdin).
Замечание. В Windows — работает.

В Linux — нет.
Для чего это нужно? Мы ввели «10 ENTER». Scanf считал число, а enter оставил. Вот getchar этот ENTER и считает.
3. Считать ещё один символ. Символы передаются в программу, когда пользователь нажимает ENTER.
4. И снова выбросить всё, что сверх одного символа.

Как сделать задержку?1. Напечатать «Press Enter».2. Выбросить все несчитанные символы из стандартного потока ввода (stdin). Замечание. В

Слайд 54Задания
1. Вывести printf’ом какой-нибудь узор, например
 
* * **** *

* **
* * * *

* * *
**** *** * * * *
* * * * * * *
* * **** **** **** **
Постарайтесь это сделать одним printf’ом.
 
2. Перевести градусы Фаренгейта в градусы Цельсия. 0°F = −18°C, 100°F = 38°C.

Задания1. Вывести printf’ом какой-нибудь узор, например * * **** *   *   *** * *

Слайд 55Задания
3. Ввести с клавиатуры a, b, c, d, e, f.


Решить методом Крамера систему линейных алгебраических уравнений:
ax + by =

c
dx + ey = f

(считаем, что система невырожденная и имеет только одно решение.)

Задания3. Ввести с клавиатуры a, b, c, d, e, f. Решить методом Крамера систему линейных алгебраических уравнений:ax

Слайд 56В следующей лекции будет…
Подробнее об операциях.
Математика. Модуль math.h
Преобразование типов.
Простейшая логика.

В следующей лекции будет…Подробнее об операциях.Математика. Модуль math.hПреобразование типов.Простейшая логика.

Обратная связь

Если не удалось найти и скачать доклад-презентацию, Вы можете заказать его на нашем сайте. Мы постараемся найти нужный Вам материал и отправим по электронной почте. Не стесняйтесь обращаться к нам, если у вас возникли вопросы или пожелания:

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика