Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
![]()
|
Порядок выполнения операций
Ручная прокрутка программы main() { int a, b; a = 5; b = a + 2; a = (a + 2)*(b – 3); b = a / 5; a = a % b; a++; b = (a + 14) % 7; }
5 7 28 5 3 4 4 ? ? Вывод на экранint a = 1, b = 3; printf("%d+%d=%d", a, b, a+b); список вывода
выражения (элементы без кавычек) вычисляются и выводится их результат 1+3=4 Что будет выведено? ? формат вывода Что будет выведено?int a = 1, b = 3; printf("a+%d=a+b", b); a+3=a+b int a = 1, b = 3; printf("%d=F(%d)", a, b); 1=F(3) int a = 1, b = 3; printf("a=F(%d);", b); int a = 1, b = 3; printf("%d>%d!", a+b, b); int a = 1, b = 3; printf("F(%d)=X(%d)", b, a); a=F(3); 4>3! F(3)=X(1) Как записать оператор вывода?int a = 1, b = 3 printf("X(%d)=%d", b, a); X(3)=1 4=1+3 f(1)>f(3) <1<>3> 1+3=? int a = 1, b = 3 printf("%d=%d+%d",a+b,a,b); int a = 1, b = 3 printf("f(%d)>f(%d)", a, b); int a = 1, b = 3 printf("<%d<>%d>", a, b); int a = 1, b = 3 printf("%d+%d=?", a, b); Тема 3. Ветвления Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран наибольшее из них. Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого. Особенность: действия исполнителя зависят от некоторых условий (если … иначе …). Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися. Вариант 1. Блок-схема начало max = a; ввод a,b вывод max a > b? max = b; конец да нет полная форма ветвления блок «решение» Если a = b? ? Вариант 1. Программа main() { int a, b, max; printf("Введите два целых числа\n"); scanf("%d%d", &a, &b ); if (a > b) { } else { } printf("Наибольшее число %d", max); } max = a; max = b; полная форма условного оператора Условный оператор if ( условие ) { // что делать, если условие верно } 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; Вариант 2. Блок-схема неполная форма ветвления начало max = a; ввод a,b вывод max max = b; конец да нет b > a? Вариант 2. Программа main() { int a, b, max; printf("Введите два целых числа\n"); scanf("%d%d", &a, &b ); max = a; if (b > a) printf("Наибольшее число %d", max); } max = b; неполная форма условного оператора main() { int a, b, max; printf("Введите два целых числа\n"); scanf("%d%d", &a, &b ); max = b; if ( ??? ) ??? printf("Наибольшее число %d", max); } Вариант 2Б. Программа max = a; a > b Задания «3»: Ввести два числа и вывести их в порядке возрастания. Пример: Введите два числа: 15 9 Ответ: 9 15 «4»: Ввести три числа и найти наибольшее из них. Пример: Введите три числа: 4 15 9 Наибольшее число 15 Задания «5»: Ввести пять чисел и найти наибольшее из них. Пример: Введите пять чисел: 4 15 9 56 4 Наибольшее число 56 Тема 4. Сложные условия Сложные условия Задача. Фирма набирает сотрудников от 25 до 40 лет включительно. Ввести возраст человека и определить, подходит ли он фирме (вывести ответ «подходит» или «не подходит»). Особенность: надо проверить, выполняются ли два условия одновременно. Можно ли решить известными методами? ? Вариант 1. Алгоритм начало ввод x 'подходит' конец да нет x >= 25? да нет x <= 40? 'не подходит' 'не подходит' Вариант 1. Программа main() { int x; printf("Введите возраст\n"); scanf("%d", &x); if (x >= 25) if (x <= 40) printf("Подходит"); else printf("Не подходит"); else printf("Не подходит"); } Вариант 2. Алгоритм начало ввод x 'подходит' да нет x >= 25 и x <= 40? 'не подходит' конец Вариант 2. Программа main() { int x; printf("Введите возраст\n"); scanf("%d", &x); if ( x >= 25 && x <= 40 ) printf("Подходит"); else printf("Не подходит"); } сложное условие Сложные условия Сложное условие – это условие, состоящее из нескольких простых условий (отношений), связанных с помощью логических операций:
&& – И (and, логическое умножение, конъюнкция, одновременное выполнение условий) || – ИЛИ (or, логическое сложение, дизъюнкция, выполнение хотя бы одного из условий) Простые условия (отношения) < <= > >= == != равно не равно Сложные условия Порядок выполнения сложных условий:
! (НЕ, отрицание) <, <=, >, >= ==, != && (И) || (ИЛИ) Пример: 2 1 6 3 5 4 if ( !(a > b) || c != d && b == a) { ... } Истинно или ложно при a = 2; b = 3; c = 4;
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 Задания «3»: Ввести три числа и определить, верно ли, что они вводились в порядке возрастания. Пример: Введите три числа: 4 5 17 да «4»: Ввести номер месяца и вывести название времени года. Пример: Введите номер месяца: 4 весна Задания «5»: Ввести возраст человека (от 1 до 150 лет) и вывести его вместе с последующим словом «год», «года» или «лет». Пример: Введите возраст: Введите возраст: 24 57 Вам 24 года Вам 57 лет Тема 5. Циклы |