Курс Основы программирования. Часть 2

Содержание

Слайд 2

БС1 – блок-схемы и трассировка

IF & DO WHILE

БС1 – блок-схемы и трассировка IF & DO WHILE

Слайд 3

Зачем вообще блок-схемы и трассировка

Чтобы программист смог «заставить» компьютер выполнять написанную им

Зачем вообще блок-схемы и трассировка Чтобы программист смог «заставить» компьютер выполнять написанную
программу, он обязан четко понимать как работают команды, которые он отдает компьютеру – как каждая по отдельности, так и все вместе.
Только лишь если программист понимает это, он сможет составить корректную программу.
Естественно, для успешного решения бизнес-задачи при помощи ИТ, нужно много чего другого. Нужно
А) понять, как именно выполняется задача (бизнес-аналитика)
Б) нужно «вытащить» алгоритм или его разработать
В) нужно подобрать необходимые структуры данных
Г) нужно создать код программы, в котором будет реализован алгоритм, и будут использованы структуры данных
Д) нужно отладить эту программу, и довести её до работоспособного состояния
Е) нужно протестировать программу
Ж) нужно передать её заказчику и обучить пользователей
З) нужно обеспечить поддержку пользователей
И сделать еще много другого!
Но всё это БЕССМЫСЛЕННО, если «программист» не в курсе, как работает компьютер, как компьютер исполняет написанную программу!
Блок-схемы и трассировка нужны для того, чтобы вы разобрались как именно компьютер выполняет тот код, который вы ему отдаете на выполнение!

Слайд 4

Что будем делать?

Сегодня (до конца пары) я разберу несколько задач.
На ближайшем практическом

Что будем делать? Сегодня (до конца пары) я разберу несколько задач. На
занятии, у вас будет самостоятельная работа, где вы по вариантам решите аналогичные задачи, и сдадите их вашим преподавателям.
Каждая из задач представляет собой
А) код программы на СИ (корректной программы)
Б) конкретных входных данных
Вам нужно в каждой задаче сделать
А) Нарисовать на бумаге блок-схему программы.
Б) Выполнить на бумаге трассировку этой программы.

Слайд 5

Задача 1A – на разбор

// Задача 1. Вариант A
#include
void main()

Задача 1A – на разбор // Задача 1. Вариант A #include void
{
int a, b, c, d, e;
scanf_s("%d%d%d", &a, &b, &c);
d = 0;
e = 0;
// если a делится на 2 без остатка
if (a % 2 == 0) {
d++;
e += a;
}
// если b делится на 2 без остатка
if (b % 2 == 0) {
d++;
e += b;
}
// если c делится на 2 без остатка
if (c % 2 == 0) {
d++;
e += c;
}
printf("%d %d", d, e);
}

Тест 1. Введите
1 2 3
Тест 2. Введите
2 4 6

Слайд 6

Задача 1B – на самостоятельную отработку

// Задача 1. Вариант B
#include
void main()

Задача 1B – на самостоятельную отработку // Задача 1. Вариант B #include
{
int a, b, d, e;
scanf_s("%d%d", &a, &b);
d = 0;
e = 1;
// если a делится на 3 без остатка
if (a % 3 == 0) {
d++;
e *= a;
}
// если b делится на 3 без остатка
if (b % 3 == 0) {
d++;
e *= b;
}
if (d == 0) {
e = 0;
}
printf("%d %d", d, e);
}

Тест 1. Введите
1 2
Тест 2. Введите
3 6

Слайд 7

Задача 2A – на разбор

// Задача 2. Вариант A
#include
void main()

Задача 2A – на разбор // Задача 2. Вариант A #include void
{
int a, b;
scanf_s("%d", &a);
b = 1;
do {
printf("%d ", b);
b++;
} while (b <= a);
do {
b--;
printf("%d ", b);
} while (b > 1);
}

Тест 1. Введите
3

Слайд 8

Задача 2B – на самостоятельную отработку

// Задача 2. Вариант B
#include
void main()

Задача 2B – на самостоятельную отработку // Задача 2. Вариант B #include
{
int a, b;
scanf_s("%d", &a);
b = a;
do {
printf("%d ", b);
b--;
} while (b >= 1);
do {
b++;
printf("%d ", b);
} while (b < a);
}

Тест 1. Введите
3

Слайд 9

Задача 3A – на разбор

// Задача 3. Вариант A
#include
void main()

Задача 3A – на разбор // Задача 3. Вариант A #include void
{
int a, b, c;
int m2, m3;
scanf_s("%d%d", &a, &b);
m2 = 0;
m3 = 0;
c = a;
do {
if (c % 2 == 0) {
m2++;
}
if (c % 3 == 0) {
m3++;
}
c++;
} while (c <= b);
printf("%d %d ", m2, m3);
}

Тест 1. Введите
3 6

Слайд 10

Задача 3B – на самостоятельную отработку

// Задача 3. Вариант B
#include
void main()

Задача 3B – на самостоятельную отработку // Задача 3. Вариант B #include
{
int n, d;
scanf_s("%d", &n);
printf("%d = 1 ", n);
d = 2;
do {
if (n % d == 0) {
printf("* %d ", d);
n = n / d;
}
else {
d++;
}
} while (n > 1);
}

Тест 1. Введите
30
Тест 2. Введите
300

Слайд 11

Блок-схемы задач 1A, 2A, 3A

Блок-схемы задач 1A, 2A, 3A

Слайд 12

Задача 1A – блок-схема

// Задача 1. Вариант A
#include
void main() {
int a,

Задача 1A – блок-схема // Задача 1. Вариант A #include void main()
b, c, d, e;
scanf_s("%d%d%d", &a, &b, &c);
d = 0;
e = 0;
// если a делится на 2 без остатка
if (a % 2 == 0) {
d++;
e += a;
}
// если b делится на 2 без остатка
if (b % 2 == 0) {
d++;
e += b;
}
// если c делится на 2 без остатка
if (c % 2 == 0) {
d++;
e += c;
}
printf("%d %d", d, e);
}

Слайд 13

Задача 2A – блок-схема

// Задача 2. Вариант A
#include
void main() {
int a,

Задача 2A – блок-схема // Задача 2. Вариант A #include void main()
b;
scanf_s("%d", &a);
b = 1;
do {
printf("%d ", b);
b++;
} while (b <= a);
do {
b--;
printf("%d ", b);
} while (b > 1);
}

Слайд 14

Задача 3A – блок-схема

// Задача 3. Вариант A
#include
void main() {
int a,

Задача 3A – блок-схема // Задача 3. Вариант A #include void main()
b, c;
int m2, m3;
scanf_s("%d%d", &a, &b);
m2 = 0;
m3 = 0;
c = a;
do {
if (c % 2 == 0) {
m2++;
}
if (c % 3 == 0) {
m3++;
}
c++;
} while (c <= b);
printf("%d %d ", m2, m3);
}

Слайд 15

Доп варианты задач 2 и 3

Доп варианты задач 2 и 3

Слайд 16

Задача 2C – для самостоятельной работы

// Задача 2. Вариант С
#include
void main()

Задача 2C – для самостоятельной работы // Задача 2. Вариант С #include
{
int a, b;
scanf_s("%d", &a);
b = a;
do {
printf("%d ", b);
b -= 2;
} while (b >= 1);
do {
b += 2;
printf("%d ", b);
} while (b < a);
}

Тест 1. Введите
8

Слайд 17

Задача 2D – для самостоятельной работы

// Задача 2. Вариант D
#include
void main()

Задача 2D – для самостоятельной работы // Задача 2. Вариант D #include
{
int a, b;
scanf_s("%d", &a);
b = 1;
do {
printf("%d ", b);
b += 2;
} while (b <= a);
do {
b -= 2;
printf("%d ", b);
} while (b > 1);
}

Тест 1. Введите
8

Слайд 18

Задача 2E – для самостоятельной работы

// Задача 2. Вариант D
#include
void main()

Задача 2E – для самостоятельной работы // Задача 2. Вариант D #include
{
int a, b;
scanf_s("%d", &a);
b = 1;
do {
printf("%d ", b);
b *= 2;
} while (b <= a);
do {
b /= 2;
printf("%d ", b);
} while (b > 1);
}

Тест 1. Введите
10

Слайд 19

Задача 3C – для самостоятельной работы

// Задача 3. Вариант C
#include
void main()

Задача 3C – для самостоятельной работы // Задача 3. Вариант C #include
{
int a, b, c;
int m2, m5;
scanf_s("%d%d", &a, &b);
m2 = 0;
m5 = 0;
c = a;
do {
if (c % 2 == 0) {
m2++;
}
if (c % 5 == 0) {
m5++;
}
c++;
} while (c <= b);
printf("%d %d ", m2, m5);
}

Тест 1. Введите
5 10

Слайд 20

Задача 3D – для самостоятельной работы

// Задача 3. Вариант D
#include
void main()

Задача 3D – для самостоятельной работы // Задача 3. Вариант D #include
{
int a, b, c;
int m3, m5;
scanf_s("%d%d", &a, &b);
m3 = 0;
m5 = 0;
c = a;
do {
if (c % 3 == 0) {
m3++;
}
if (c % 5 == 0) {
m5++;
}
c++;
} while (c <= b);
printf("%d %d ", m3, m5);
}

Тест 1. Введите
5 10