Введение в программирование на языке С++

Содержание

Слайд 2

Алгоритм

Свойства алгоритма
дискретность: состоит из отдельных шагов (команд)
понятность: должен включать только команды, известные

Алгоритм Свойства алгоритма дискретность: состоит из отдельных шагов (команд) понятность: должен включать
исполнителю (входящие в СКИ)
определенность: при одинаковых исходных данных всегда выдает один и тот же результат
конечность: заканчивается за конечное число шагов
массовость: может применяться многократно при различных исходных данных
корректность: дает верное решение при любых допустимых исходных данных

Алгоритм – это четко определенный план действий для исполнителя.

Слайд 3

Программа

Программа – это
алгоритм, записанный на каком-либо языке программирования
набор команд для компьютера

Команда

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

Слайд 4

Языки программирования

Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора (ассемблер)
Языки

Языки программирования Машинно-ориентированные (низкого уровня) - каждая команда соответствует одной команде процессора
высокого уровня – приближены к естественному (английскому) языку, легче воспринимаются человеком, не зависят от конкретного компьютера
для обучения: Бейсик, ЛОГО, Паскаль
профессиональные: Си, Фортран, Паскаль
для задач искусственного интеллекта: Пролог, ЛИСП
для Интернета: JavaScript, Java, Perl, PHP, ASP

Слайд 5

Язык Си

1972-1974 – К. Томпсон, Д. Ритчи
высокая скорость работы программ
много возможностей
стал основой

Язык Си 1972-1974 – К. Томпсон, Д. Ритчи высокая скорость работы программ
многих современных языков (С++, С#, Javascript, Java, ActionScript, PHP)
много шансов сделать ошибку, которая не обнаруживается автоматически

Слайд 6

Простейшая программа

main()
{
}

главная (основная) программа всегда имеет имя main

начало программы

«тело» программы (основная часть)

конец программы

Простейшая программа main() { } главная (основная) программа всегда имеет имя main

Слайд 7

Что происходит дальше?

main()
{
}

first.cpp

исходный файл

first.o

транслятор

ЪБzЦ2?|ё3БКа
n/36ШпIC+И-
ЦЗ_5МyРЧб
s6bд^:/@:лЖ1_

объектный файл

стандартные функции

редактор связей
(компоновка)

MZPо:ЄPэ_еЗ"!_
`кn,ЦbЄ-Щр1 
G_БАC,
_Ощях¤9жФ

first.exe

исполняемый файл

текст программы на Си или Си++

Что происходит дальше? main() { } first.cpp исходный файл first.o транслятор ЪБzЦ2?|ё3БКа

Слайд 8

Вывод текста на экран

#include
main()
{
printf("Привет!");
}

include = включить

файл stdio.h: описание стандартных функций ввода

Вывод текста на экран #include main() { printf("Привет!"); } include = включить
и вывода

вызов стандартной функции
printf = print format (форматный вывод)

этот текст будет на экране

Слайд 9

Как начать работу?

здесь мы набираем программу

сообщения об ошибках

Открыть

Новый

Сохранить

Закрыть

Как начать работу? здесь мы набираем программу сообщения об ошибках Открыть Новый Сохранить Закрыть

Слайд 10

Оболочка Dev C ++ 4.9

IDE = Integrated Development Environment
интегрированная среда разработки:
текстовый

Оболочка Dev C ++ 4.9 IDE = Integrated Development Environment интегрированная среда
редактор для создания и редактирования текстов программ
транслятор для перевода текстов программ на Си и Си++ в команды процессора
компоновщик для создания исполняемого файла (EXE-файла), подключаются стандартные функции
отладчик для поиска ошибок в программах

Слайд 11

Управление клавишами

Управление клавишами

Слайд 12

Где ошибки?

2 x ЛКМ

эта ошибка обнаружена здесь!

Где ошибки? 2 x ЛКМ эта ошибка обнаружена здесь!

Слайд 13

Наиболее «популярные» ошибки

Наиболее «популярные» ошибки

Слайд 14

Ждем нажатия любой клавиши

#include
#include
main()
{
printf("Привет!"); // вывод на экран
/* ждать

Ждем нажатия любой клавиши #include #include main() { printf("Привет!"); // вывод на
нажатия клавиши */
}

файл conio.h: описание функций для работы с клавиатурой и монитором

ждать нажатия на любую клавишу

комментарий до конца строки

комментарий между /* и */

getch();

Слайд 15

Переход на новую строку

#include
#include
main()
{
printf("Привет,\n Вася!");
getch();
}

Привет,
Вася!

на экране:

последовательность \n (код 10)
переход

Переход на новую строку #include #include main() { printf("Привет,\n Вася!"); getch(); }
на новую строку

\n

Слайд 16

Задания

«4»: Вывести на экран текст "лесенкой"
Вася
пошел
гулять
«5»: Вывести на экран

Задания «4»: Вывести на экран текст "лесенкой" Вася пошел гулять «5»: Вывести
рисунок из букв
Ж
ЖЖЖ
ЖЖЖЖЖ
ЖЖЖЖЖЖЖ
HH HH
ZZZZZ

Слайд 17

Программирование на языке Си

Тема 2. Переменные

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 2. Переменные © К.Ю. Поляков, 2007-2008

Слайд 18

Что такое переменная?

Переменная – это ячейка в памяти компьютера, которая имеет имя

Что такое переменная? Переменная – это ячейка в памяти компьютера, которая имеет
и хранит некоторое значение.
Значение переменной может меняться во время выполнения программы.
При записи в ячейку нового значения старое стирается.
Типы переменных
int – целое число (4 байта)
float – вещественное число, floating point (4 байта)
char – символ, character (1 байт)

Слайд 19

Имена переменных

Могут включать
латинские буквы (A-Z, a-z)
знак подчеркивания _
цифры 0-9
НЕ могут включать
русские буквы
пробелы
скобки,

Имена переменных Могут включать латинские буквы (A-Z, a-z) знак подчеркивания _ цифры
знаки +, =, !, ? и др.

Какие имена правильные?
AXby R&B 4Wheel Вася “PesBarbos” TU154 [QuQu] _ABBA A+B

Слайд 20

Объявление переменных

Объявить переменную = определить ее имя, тип, начальное значение, и выделить

Объявление переменных Объявить переменную = определить ее имя, тип, начальное значение, и
ей место в памяти.

main()
{
int a;
float b, c;
int Tu104, Il86=23, Yak42;
float x=4.56, y, z;
char c, c2='A', m;
}

целая переменная a

вещественные переменные b и c

целые переменные Tu104, Il86 и Yak42
Il86 = 23

вещественные переменные x, y и z
x = 4,56

·

целая и дробная части отделяются точкой

символьные переменные c, c2 и m
c2 = 'A'

Слайд 21

Оператор присваивания

Оператор – это команда языка программирования высокого уровня.
Оператор присваивания служит для

Оператор присваивания Оператор – это команда языка программирования высокого уровня. Оператор присваивания
изменения значения переменной.
Пример

a = 5;
x = a + 20;
y = (a + x) * (x – a);

5

25

600

Слайд 22

Оператор присваивания

Общая структура:

Арифметическое выражение может включать
константы (постоянные)
имена переменных
знаки арифметических операций:
+ -

Оператор присваивания Общая структура: Арифметическое выражение может включать константы (постоянные) имена переменных
* / %
вызовы функций
круглые скобки ( )

умножение

деление

остаток от деления

имя переменной = выражение;

куда записать

что

Слайд 23

main()
{
int a, b;
float x, y;
a = 5;

main() { int a, b; float x, y; a = 5; 10

10 = x;
y = 7,8;
b = 2.5;
x = 2*(a + y);
a = b + x;
}

Какие операторы неправильные?

имя переменной должно быть слева от знака =

целая и дробная часть отделяются точкой

при записи вещественного значения в целую переменную дробная часть будет отброшена

Слайд 24

Особенность деления в Си

main()
{
int a = 7;
float x;
x = a / 4;
x

Особенность деления в Си main() { int a = 7; float x;
= 4 / a;
x = float(a) / 4;
x = 1.*a / 4;
}

1

0

1.75

1.75

Слайд 25

Сокращенная запись операций в Си

инкремент

декремент

a = a + 1;

a++;

a = a +

Сокращенная запись операций в Си инкремент декремент a = a + 1;
b;

a += b;

a = a - 1;

a--;

a = a – b;

a -= b;

a = a * b;

a *= b;

a = a / b;

a /= b;

a = a % b;

a %= b;

Слайд 26

Ручная прокрутка программы

main()
{
int a, b;
a = 5;
b = a

Ручная прокрутка программы main() { int a, b; a = 5; b
+ 2;
a = (a + 2)*(b – 3);
b = a / 5;
a = a % b;
a++;
b = (a + 14) % 7;
}

5

7

28

5

3

4

4

?

?

Слайд 27

Порядок выполнения операций

вычисление выражений в скобках
умножение, деление, % слева направо
сложение и вычитание

Порядок выполнения операций вычисление выражений в скобках умножение, деление, % слева направо
слева направо

2 3 5 4 1 7 8 6 9
z = (5*a*c+3*(c-d))/a*(b-c)/ b;

2 6 3 4 7 5 1 12 8 11 10 9
x =(a*a+5*c*c-d*(a+b))/((c+d)*(d-2*a));

Слайд 28

Программирование на языке Си

Тема 3. Ввод и вывод

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 3. Ввод и вывод © К.Ю. Поляков, 2007-2008

Слайд 29

Сложение двух чисел

Задача. Ввести два целых числа и вывести на экран их

Сложение двух чисел Задача. Ввести два целых числа и вывести на экран
сумму.

Простейшее решение:

#include
#include
main()
{
int a, b, c;
printf("Введите два целых числа\n");
scanf ("%d%d", &a, &b);
c = a + b;
printf("%d", c);
getch();
}

подсказка для ввода

ввод двух чисел с клавиатуры

вывод результата

Слайд 30

Ввод чисел с клавиатуры

scanf ("%d%d", &a, &b);

формат ввода

scanf – форматный ввод

адреса ячеек,

Ввод чисел с клавиатуры scanf ("%d%d", &a, &b); формат ввода scanf –
куда записать введенные числа

Формат – символьная строка, которая показывает, какие числа вводятся (выводятся).
%d – целое число
%f – вещественное число
%c – 1 символ
%s – символьная строка

12

7652

a – значение переменной a

&a – адрес переменной a

ждать ввода с клавиатуры двух целых чисел (через пробел или Enter), первое из них записать в переменную a, второе – в b

Слайд 31

Что неправильно?

int a, b;
scanf ("%d", a);
scanf ("%d", &a, &b);
scanf ("%d%d", &a);
scanf ("%d

Что неправильно? int a, b; scanf ("%d", a); scanf ("%d", &a, &b);
%d", &a, &b);
scanf ("%f%f", &a, &b);

&a

%d%d

&a, &b

убрать пробел

%d%d

Слайд 32

Вывод чисел на экран

printf ("%d", c);

здесь вывести целое число

это число взять из

Вывод чисел на экран printf ("%d", c); здесь вывести целое число это
ячейки c

printf ("Результат: %d", c);

printf ("%d+%d=%d", a, b, c );

формат вывода

список значений

a, b, c

printf ("%d+%d=%d", a, b, a+b );

арифметическое выражение

Слайд 33

Вывод целых чисел

int x = 1234;
printf ("%d", x);

1234

printf ("%9d", x);

минимальное число позиций

Вывод целых чисел int x = 1234; printf ("%d", x); 1234 printf
1234

всего 9 позиций

или "%i"

или "%9i"

5

4

Слайд 34

Вывод вещественных чисел

float x = 123.4567;
printf ("%f", x);

123.456700

printf ("%9.3f", x);

минимальное число позиций,

Вывод вещественных чисел float x = 123.4567; printf ("%f", x); 123.456700 printf
6 цифр в дробной части

123.456

всего 9 позиций, 3 цифры в дробной части

printf ("%e", x);

1.234560e+02

стандартный вид: 1,23456·102

printf ("%10.2e", x);

1.23e+02

всего 10 позиций, 2 цифры в дробной части мантиссы

Слайд 35

Полное решение

#include
#include
main()
{
int a, b, c;
printf("Введите два целых числа\n");

Полное решение #include #include main() { int a, b, c; printf("Введите два
scanf("%d%d", &a, &b);
c = a + b;
printf("%d+%d=%d", a, b, c);
getch();
}

Протокол:
Введите два целых числа
25 30
25+30=55

это выводит компьютер

это вводит пользователь

Слайд 36

Блок-схема линейного алгоритма

начало

конец

c = a + b;

ввод a, b

вывод c

блок «начало»

блок «ввод»

блок

Блок-схема линейного алгоритма начало конец c = a + b; ввод a,
«процесс»

блок «вывод»

блок «конец»

Слайд 37

Задания

«4»: Ввести три числа, найти их сумму и произведение.
Пример:
Введите три

Задания «4»: Ввести три числа, найти их сумму и произведение. Пример: Введите
числа:
4 5 7
4+5+7=16
4*5*7=140
«5»: Ввести три числа, найти их сумму, произведение и среднее арифметическое.
Пример:
Введите три числа:
4 5 7
4+5+7=16
4*5*7=140
(4+5+7)/3=5.33

Слайд 38

Программирование на языке Си

Тема 4. Ветвления

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 4. Ветвления © К.Ю. Поляков, 2007-2008

Слайд 39

Разветвляющиеся алгоритмы

Задача. Ввести два целых числа и вывести на экран наибольшее из

Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее
них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.

Слайд 40

Вариант 1. Блок-схема

полная форма ветвления

блок «решение»

Вариант 1. Блок-схема полная форма ветвления блок «решение»

Слайд 41

Вариант 1. Программа

main()
{
int a, b, max;
printf("Введите два целых числа\n");
scanf("%d%d",

Вариант 1. Программа main() { int a, b, max; printf("Введите два целых
&a, &b );
if (a > b) {
}
else {
}
printf("Наибольшее число %d", max);
}

max = a;

max = b;

полная форма условного оператора

Слайд 42

Условный оператор

if ( условие )
{
// что делать, если условие

Условный оператор if ( условие ) { // что делать, если условие
верно
}
else
{
// что делать, если условие неверно
}

Особенности:
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать { }

Слайд 43

Что неправильно?

if a > b {
a = b;
}
else

Что неправильно? if a > b { a = b; } else
b = a;

if ( a > b ) {
a = b;
else
b = a;

if ( a > b )
else
b = a;

if ( a > b )
a = b;
c = 2*a;
else
b = a;

}

}

{

a = b;

Слайд 44

Вариант 2. Блок-схема

неполная форма ветвления

Вариант 2. Блок-схема неполная форма ветвления

Слайд 45

Вариант 2. Программа


main()
{
int a, b, max;
printf("Введите два целых числа\n");
scanf("%d%d",

Вариант 2. Программа main() { int a, b, max; printf("Введите два целых
&a, &b );
max = a;
if (b > a)
printf("Наибольшее число %d", max);
}

max = b;

неполная форма условного оператора

Слайд 46

main()
{
int a, b, max;
printf("Введите два целых числа\n");
scanf("%d%d", &a, &b

main() { int a, b, max; printf("Введите два целых числа\n"); scanf("%d%d", &a,
);
max = b;
if ( ??? )
???
printf("Наибольшее число %d", max);
}

Вариант 2Б. Программа

max = a;

a > b

Слайд 47

Задания

«4»: Ввести три числа и найти наибольшее из них.
Пример:
Введите три числа:
4

Задания «4»: Ввести три числа и найти наибольшее из них. Пример: Введите
15 9
Наибольшее число 15
«5»: Ввести пять чисел и найти наибольшее из них.
Пример:
Введите пять чисел:
4 15 9 56 4
Наибольшее число 56

Слайд 48

Программирование на языке Си

Тема 5. Сложные условия

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 5. Сложные условия © К.Ю. Поляков, 2007-2008

Слайд 49

Сложные условия

Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести

Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно.
возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»).
Особенность: надо проверить, выполняются ли два условия одновременно.

Слайд 50

Вариант 1. Алгоритм

начало

ввод x

'подходит'

конец

да

нет

x >= 25?

да

нет

x <= 40?

'не подходит'

'не подходит'

Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x >=

Слайд 51

Вариант 1. Программа

main()
{
int x;
printf("Введите возраст\n");
scanf("%d", &x);
if (x >= 25)

Вариант 1. Программа main() { int x; printf("Введите возраст\n"); scanf("%d", &x); if

if (x <= 40)
printf("Подходит");
else printf("Не подходит");
else
printf("Не подходит");
}

Слайд 52

Вариант 2. Алгоритм

начало

ввод x

'подходит'

да

нет

x >= 25 и
x <= 40?

'не подходит'

Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x 'не подходит'

Слайд 53


Вариант 2. Программа

main()
{
int x;
printf("Введите возраст\n");
scanf("%d", &x);
if (

Вариант 2. Программа main() { int x; printf("Введите возраст\n"); scanf("%d", &x); if
x >= 25 && x <= 40 )
printf("Подходит");
else printf("Не подходит");
}

сложное условие

Слайд 54

Сложные условия

Сложное условие – это условие, состоящее из нескольких простых условий (отношений),

Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий
связанных с помощью логических операций:
! – НЕ (not, отрицание, инверсия)
&& – И (and, логическое умножение, конъюнкция, одновременное выполнение условий)
|| – ИЛИ (or, логическое сложение, дизъюнкция, выполнение хотя бы одного из условий)
Простые условия (отношения)
< <= > >= == !=

равно

не равно

Слайд 55

Сложные условия

Порядок выполнения сложных условий:
выражения в скобках
! (НЕ, отрицание)
<, <=, >,

Сложные условия Порядок выполнения сложных условий: выражения в скобках ! (НЕ, отрицание)
>=
==, !=
&& (И)
|| (ИЛИ)
Пример:
2 1 6 3 5 4
if ( !(a > b) || c != d && b == a)
{
...
}

Слайд 56

Истинно или ложно при a = 2; b = 3; c =

Истинно или ложно при a = 2; b = 3; c =
4;
!(a > b)
a < b && b < c
!(a >= b) || c == d
a < c || b < c && b < a
a > b || !(b < c)
Для каких значений x истинны условия:
x < 6 && x < 10
x < 6 && x > 10
x > 6 && x < 10
x > 6 && x > 10
x < 6 || x < 10
x < 6 || x > 10
x > 6 || x < 10
x > 6 || x > 10

Сложные условия

1

1

0

(-∞, 6)


(6, 10)

(10, ∞)

(-∞, 10)

(-∞, 6) ∪ (10,∞)

(-∞, ∞)

(6, ∞)

x < 6

x > 10

x < 10

x > 6

1

1

Слайд 57

Задания

«4»: Ввести номер месяца и вывести название времени года.
Пример:
Введите номер месяца:
4
весна
«5»:

Задания «4»: Ввести номер месяца и вывести название времени года. Пример: Введите
Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет».
Пример:
Введите возраст: Введите возраст:
24 57
Вам 24 года Вам 57 лет

Слайд 58

Программирование на языке Си

Тема 6. Циклы

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 6. Циклы © К.Ю. Поляков, 2007-2008

Слайд 59

Циклы

Цикл – это многократное выполнение одинаковой последовательности действий.
цикл с известным числом шагов
цикл

Циклы Цикл – это многократное выполнение одинаковой последовательности действий. цикл с известным
с неизвестным числом шагов (цикл с условием)
Задача. Вывести на экран квадраты и кубы целых чисел от 1 до 8 (от a до b).
Особенность: одинаковые действия выполняются 8 раз.

Слайд 60

Алгоритм

начало

i, i2, i3

конец

нет

да

i <= 8?

i = 1;

i = i + 1;

i2 =

Алгоритм начало i, i2, i3 конец нет да i i = 1;
i * i;
i3 = i2 * i;

задать начальное значение переменной цикла

проверить, все ли сделали

вычисляем квадрат и куб

вывод результата

перейти к следующему i

Слайд 61

Алгоритм (с блоком «цикл»)

начало

i, i2, i3

конец

i2 = i * i;
i3 = i2

Алгоритм (с блоком «цикл») начало i, i2, i3 конец i2 = i
* i;

i = 1,8

блок «цикл»

тело цикла

Слайд 62

Программа

main()
{
int i, i2, i3;
for (i=1; i<=8; i++)
{
i2 = i*i;

Программа main() { int i, i2, i3; for (i=1; i { i2
i3 = i2*i;
printf("%4d %4d %4d\n", i, i2, i3);
}
}

for (i=1; i<=8; i++)
{
i2 = i*i;
i3 = i2*i;
printf("%4d %4d %4d\n", i, i2, i3);
}

переменная цикла

начальное значение

конечное значение

изменение на каждом шаге:
i=i+1

ровные столбики

цикл работает, пока это условие верно

цикл

начало цикла

конец цикла

заголовок цикла

for (i=1; i<=8; i++)

i2 = i*i;
i3 = i2*i;
printf("%4d %4d %4d\n", i, i2, i3);

тело цикла

Слайд 63

Цикл с уменьшением переменной

Задача. Вывести на экран квадраты и кубы целых чисел

Цикл с уменьшением переменной Задача. Вывести на экран квадраты и кубы целых
от 8 до 1 (в обратном порядке).
Особенность: переменная цикла должна уменьшаться.
Решение:

for ( )
{
i2 = i*i;
i3 = i2*i;
printf("%4d %4d %4d\n", i, i2, i3);
}

i = 8; i >= 1; i --

Слайд 64

Цикл с переменной

for (начальные значения;
условие продолжения цикла;
изменение на каждом шаге)

Цикл с переменной for (начальные значения; условие продолжения цикла; изменение на каждом
{
// тело цикла
}

Примеры:

for (a = 2; a < b; a+=2) { ... }

for (a = 2, b = 4; a < b; a+=2) { ... }

for (a = 1; c < d; x++) { ... }

for (; c < d; x++) { ... }

for (; c < d; ) { ... }

Слайд 65

Цикл с переменной

Особенности:
условие проверяется в начале очередного шага цикла, если оно ложно

Цикл с переменной Особенности: условие проверяется в начале очередного шага цикла, если
цикл не выполняется;
изменения (третья часть в заголовке) выполняются в конце очередного шага цикла;
если условие никогда не станет ложным, цикл может продолжаться бесконечно (зацикливание)
если в теле цикла один оператор, скобки {} можно не ставить:

for(i=1; i<8; i++) { i--; }

for (i = 1; i < 8; i++) a += b;

Слайд 66

for (i=8; i>=1; i--) printf("Привет");
printf("i=%d", i);

Цикл с переменной

Особенности:
после выполнения цикла во многих

for (i=8; i>=1; i--) printf("Привет"); printf("i=%d", i); Цикл с переменной Особенности: после
системах устанавливается первое значение переменной цикла, при котором нарушено условие:

for (i=1; i<=8; i++) printf("Привет");
printf("i=%d", i);

i=9

i=0

Слайд 67

Сколько раз выполняется цикл?

a = 1;
for(i=1; i<4; i++) a++;

a = 4

a =

Сколько раз выполняется цикл? a = 1; for(i=1; i a = 4
1; b=2;
for(i=3; i >= 1; i--)a += b;

a = 7

a = 1;
for(i=1; i >= 3; i--)a = a+1;

a = 1

a = 1;
for(i=1; i<= 4; i--)a ++;

зацикливание

a = 1;
for(i=1; i<4; i++) a = a+i;

a = 7

Слайд 68

Задания

«4»: Ввести a и b и вывести квадраты и кубы чисел от

Задания «4»: Ввести a и b и вывести квадраты и кубы чисел
a до b.
Пример:
Введите границы интервала:
4 6
4 16 64
5 25 125
6 36 216
«5»: Вывести квадраты и кубы 10 чисел следующей последовательности: 1, 2, 4, 7, 11, 16, …
Пример:
1 1 1
2 4 8
4 16 64
...
46 2116 97336

Слайд 69

Программирование на языке Си

Тема 7. Циклы с условием

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 7. Циклы с условием © К.Ю. Поляков, 2007-2008

Слайд 70

Цикл с неизвестным числом шагов

Пример: Отпилить полено от бревна. Сколько раз надо

Цикл с неизвестным числом шагов Пример: Отпилить полено от бревна. Сколько раз
сделать движения пилой?
Задача: Ввести целое число (<2000000) и определить число цифр в нем.
Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.
Проблема: Неизвестно, сколько шагов надо сделать.
Решение: Надо остановиться, когда n = 0, т.е. надо делать «пока n != 0».

Слайд 71

Алгоритм

начало

count

конец

нет

да

n != 0?

count = 0;

count = count + 1;
n = n

Алгоритм начало count конец нет да n != 0? count = 0;
/ 10;

обнулить счетчик цифр

ввод n

выполнять «пока n != 0»

Слайд 72

Программа

main()
{
int n, count;
printf("Введите целое число\n");
scanf("%d", &n);
count = 0;
while (n != 0)

Программа main() { int n, count; printf("Введите целое число\n"); scanf("%d", &n); count
{
count ++;
n = n / 10;
}
printf("В числе %d нашли %d цифр", n, count);
}

n1 = n;

n1,

выполнять «пока n != 0»

, n1;

Слайд 73

Цикл с условием

while ( условие )
{
// тело цикла

Цикл с условием while ( условие ) { // тело цикла }
}

Особенности:
можно использовать сложные условия:
если в теле цикла только один оператор, скобки {} можно не писать:

while ( a < b && b < c ) { ... }

while ( a < b ) a ++;

Слайд 74

Цикл с условием

Особенности:
условие пересчитывается каждый раз при входе в цикл
если условие на

Цикл с условием Особенности: условие пересчитывается каждый раз при входе в цикл
входе в цикл ложно, цикл не выполняется ни разу
если условие никогда не станет ложным, программа зацикливается

a = 4; b = 6;
while ( a > b ) a = a– b;

a = 4; b = 6;
while ( a < b ) d = a + b;

Слайд 75

Сколько раз выполняется цикл?

a = 4; b = 6;
while ( a <

Сколько раз выполняется цикл? a = 4; b = 6; while (
b ) a ++;

2 раза
a = 6

a = 4; b = 6;
while ( a < b ) a += b;

1 раз
a = 10

a = 4; b = 6;
while ( a > b ) a ++;

0 раз
a = 4

a = 4; b = 6;
while ( a < b ) b = a - b;

1 раз
b = -2

a = 4; b = 6;
while ( a < b ) a --;

зацикливание

Слайд 76

Замена for на while и наоборот

for( i=1; i<=10; i++)
{
//

Замена for на while и наоборот for( i=1; i { // тело
тело цикла
}

i = 1;
while ( i <= 10 ) {
// тело цикла
i ++;
}

for ( i=a; i>=b; i--)
{
// тело цикла
}

i = a;
while ( i >= b ) {
// тело цикла
i --;
}

Слайд 77

Задания

«4»: Ввести целое число и найти сумму его цифр.
Пример:
Введите целое число:
1234
Сумма

Задания «4»: Ввести целое число и найти сумму его цифр. Пример: Введите
цифр числа 1234 равна 10.
«5»: Ввести целое число и определить, верно ли, что в его записи есть две одинаковые цифры.
Пример:
Введите целое число: Введите целое число:
1234 1224
Нет. Да.

Слайд 78

Последовательности

Примеры:
1, 2, 3, 4, 5, …
1, 2, 4, 7, 11, 16, …
1,

Последовательности Примеры: 1, 2, 3, 4, 5, … 1, 2, 4, 7,
2, 4, 8, 16, 32, …

an = n

a1 = 1, an+1 = an+1

a1 = 1, an+1 = an + n

an = 2n-1

a1 = 1, an+1 = 2an

b1 = 1, bn+1 = bn+1

c1 = 2, cn+1 = 2cn

Слайд 79

Последовательности

Задача: найти сумму всех элементов последовательности,
которые по модулю больше 0,001:

Последовательности Задача: найти сумму всех элементов последовательности, которые по модулю больше 0,001:

Элемент последовательности (начиная с №2):

b = b+1;

c = 2*c;

z = -z;

Слайд 80

Алгоритм

начало

S

конец

нет

да

|a| > 0.001?

S = S + a;

S = 0; b = 1;

Алгоритм начало S конец нет да |a| > 0.001? S = S
c = 2; z = -1; a = 1;

начальные значения

a = z*b/c;
b = b + 1; c = 2*c; z = -z;

первый элемент

a = 1;

S = 0;

новый элемент

изменение

Слайд 81

Программа

#include
main()
{
int b, c, z;
float S, a;
S = 0;

Программа #include main() { int b, c, z; float S, a; S
z = -1;
b = 1; c = 2; a = 1;
while (fabs(a) > 0.001) {
S += a;
a = z * b / c;
z = - z;
b ++;
c *= 2;
}
printf ("S = %10.3f", S);
}

переход к следующему слагаемому

начальные значения

увеличение суммы

расчет элемента последовательности

математические функции

fabs – модуль вещественного числа

, b;

чтобы не было округления при делении

Слайд 82

Задания

«4»: Найти сумму элементов последовательности с точностью 0,001:
Ответ:
S = 1.157
«5»: Найти сумму

Задания «4»: Найти сумму элементов последовательности с точностью 0,001: Ответ: S =
элементов последовательности с точностью 0,001:
Ответ:
S = 1.220

Слайд 83

Цикл с постусловием

Задача: Ввести целое положительное число (<2000000) и определить число цифр

Цикл с постусловием Задача: Ввести целое положительное число ( Проблема: Как не
в нем.
Проблема: Как не дать ввести отрицательное число или ноль?
Решение: Если вводится неверное число, вернуться назад к вводу данных (цикл!).
Особенность: Один раз тело цикла надо сделать в любом случае ⇒ проверку условия цикла надо делать в конце цикла (цикл с постусловием).

Цикл с постусловием – это цикл, в котором проверка условия выполняется в конце цикла.

Слайд 84

Цикл с постусловием: алгоритм

начало

конец

нет

да

n <= 0?

тело цикла

условие

блок «типовой процесс»

ввод n

основной алгоритм

Цикл с постусловием: алгоритм начало конец нет да n тело цикла условие

Слайд 85

Программа

main()
{
int n;
do {
printf("Введите положительное число\n");
scanf("%d", &n);
}
while

Программа main() { int n; do { printf("Введите положительное число\n"); scanf("%d", &n);
( n <= 0 );
... // основной алгоритм
}

условие

Особенности:
тело цикла всегда выполняется хотя бы один раз
после слова while («пока…» ) ставится условие продолжения цикла

Слайд 86

Сколько раз выполняется цикл?

a = 4; b = 6;
do { a ++;

Сколько раз выполняется цикл? a = 4; b = 6; do {
} while (a <= b);

3 раза
a = 7

a = 4; b = 6;
do { a += b; } while ( a <= b );

1 раз
a = 10

a = 4; b = 6;
do { a += b; } while ( a >= b );

зацикливание

a = 4; b = 6;
do b = a - b; while ( a >= b );

2 раза
b = 6

a = 4; b = 6;
do a += 2; while ( a >= b );

зацикливание

Слайд 87

Задания (с защитой от неверного ввода)

«4»: Ввести натуральное число и определить, верно

Задания (с защитой от неверного ввода) «4»: Ввести натуральное число и определить,
ли, что сумма его цифр равна 10.
Пример:
Введите число >= 0: Введите число >= 0:
-234 1233
Нужно положительное число. Нет
Введите число >= 0:
1234
Да
«5»: Ввести натуральное число и определить, какие цифры встречаются несколько раз.
Пример:
Введите число >= 0: Введите число >= 0:
2323 1234
Повторяются: 2, 3 Нет повторов.

Слайд 88

Программирование на языке Си

Тема 8. Оператор выбора

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 8. Оператор выбора © К.Ю. Поляков, 2007-2008

Слайд 89

Оператор выбора

Задача: Ввести номер месяца и вывести количество дней в этом месяце.

Оператор выбора Задача: Ввести номер месяца и вывести количество дней в этом

Решение: Число дней по месяцам:
28 дней – 2 (февраль)
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца.

Слайд 90

Алгоритм

начало

конец

оператор выбора

ни один вариант не подошел

ввод M

да

нет

M = 1?

D = 31;

нет

M =

Алгоритм начало конец оператор выбора ни один вариант не подошел ввод M
2?

D = 28;

да

нет

M = 12?

D = 31;

да

вывод D

ошибка

Слайд 91

Программа

main()
{
int M, D;
printf("Введите номер месяца:\n");
scanf("%d", &M);
switch ( M

Программа main() { int M, D; printf("Введите номер месяца:\n"); scanf("%d", &M); switch
) {
case 2: D = 28;
case 4: case 6: case 9: case 11: D = 30;
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
D = 31;
default: D = -1;
}
if (D > 0)
printf("В этом месяце %d дней.", D);
else printf("Неверный номер месяца");
}

ни один вариант не подошел

break;

break;

break;

выйти из
switch

Слайд 92

Оператор выбора

Задача: Ввести букву и вывести название животного на эту букву.
Особенность:

Оператор выбора Задача: Ввести букву и вывести название животного на эту букву.
выбор по символьной величине.

main()
{
char c;
printf("Введите первую букву названия животного:\n");
scanf("%c", &c);
switch ( c ) {
case 'а': printf("Антилопа"); break;
case 'б': printf("Бизон"); break;
case 'в': printf("Волк"); break;
default: printf("Я не знаю!");
}
}

Слайд 93

Оператор выбора

Особенности:
после switch может быть имя переменной или арифметическое выражение целого типа

Оператор выбора Особенности: после switch может быть имя переменной или арифметическое выражение
(int)
или символьного типа (char)
нельзя ставить два одинаковых значения:

switch ( i+3 ) {
case 1: a = b; break;
case 2: a = c;
}

switch ( x ) {
case 1: a = b; break;
case 1: a = c;
}

Слайд 94

Задания (с защитой от неверного ввода)

«4»: Ввести номер месяца и вывести количество

Задания (с защитой от неверного ввода) «4»: Ввести номер месяца и вывести
дней в нем, а также число ошибок при вводе.
Пример:
Введите номер месяца: Введите номер месяца:
-2 2
Введите номер месяца: В этом месяце 28 дней.
11 Вы вводили неверно 0 раз.
В этом месяце 30 дней.
Вы вводили неверно 1 раз.
«5»: Ввести номер месяца и номер дня, вывести число дней, оставшихся до Нового года.
Пример:
Введите номер месяца:
12
Введите день:
25
До Нового года осталось 6 дней.

Слайд 95

Программирование на языке Си

Тема 9. Отладка программ

© К.Ю. Поляков, 2007-2008

Программирование на языке Си Тема 9. Отладка программ © К.Ю. Поляков, 2007-2008

Слайд 96

Отладка программ

Отладка – поиск и исправление ошибок в программе. Англ. debugging, bug =

Отладка программ Отладка – поиск и исправление ошибок в программе. Англ. debugging,
моль, жучок
Методы:
трассировка – вывод сигнальных сообщений
отключение части кода (в комментарии)
пошаговое выполнение – выполнить одну строчку программы и остановиться
точки останова – выполнение программы останавливается при достижении отмеченных строк (переход в пошаговый режим)
просмотр и изменение значений переменных в пошаговом режиме

Слайд 97

Трассировка

printf("Введено X=%d\n", X);

printf("В цикле: i=%d, X=%d\n", i, X);

printf("После цикла: X=%d\n", X);

main()
{
int

Трассировка printf("Введено X=%d\n", X); printf("В цикле: i=%d, X=%d\n", i, X); printf("После цикла:
i, X;
printf("Введите целое число:\n");
scanf("%d", &X);
for(i=1; i<10; i++)
{
...
}
...
}

Слайд 98

Отключение части кода (комментарии)

main()
{
int i, X;
printf("Введите целое число:\n");
scanf("%d", &X);

Отключение части кода (комментарии) main() { int i, X; printf("Введите целое число:\n");
X *= X + 2;
for(i=1; i<10; i++) X *= i;
while ( X > 5 ) {
...
}
...
}

// X *= X + 2;

/* while ( X > 5 ) {
...
} */

комментарий до конца строки //

закомментированный блок /* … */

Слайд 99

Точки останова

это точка останова

ЛКМ или Ctrl+F5

F8 – запустить и выполнить до следующей

Точки останова это точка останова ЛКМ или Ctrl+F5 F8 – запустить и
точки останова
F7 – выполнить одну строку
Shift+F7 – войти в процедуру (функцию)
Ctrl-F7 – выполнять дальше
Ctrl-Alt-F2 – остановить программу
Имя файла: Введение-в-программирование-на-языке-С++.pptx
Количество просмотров: 33
Количество скачиваний: 0