Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
![]()
|
Задания«3»: Ввести натуральное число N и вывести числа от N до 1 (через одно) в порядке убывания. Пример: Введите натуральное число: 8 Ответ: 8 6 4 2 Задания«4»: Ввести два целых числа a и b (a ≤ b) и вывести кубы всех чисел от a до b. Пример: Введите два числа: 4 6 4*4*4=64 5*5*5=125 6*6*6=216 «5»: Ввести целое число a и вывести сумму квадратов всех чисел от 1 до a с шагом 0.1. Пример: Введите последнее число: 3 Сумма 91.7 Задания «3»: Ввести натуральное число вывести квадраты и кубы всех чисел от 1 до этого числа. Пример: Введите натуральное число: 3 1: 1 1 2: 4 8 3: 9 27 «4»: Ввести два целых числа a и b (a ≤ b) и вывести квадраты все чисел от a до b. Пример: Введите два числа: 4 5 4*4=16 5*5=25 Задания «5»: Ввести два целых числа a и b (a ≤ b) и вывести сумму квадратов всех чисел от a до b. Пример: Введите два числа: 4 10 Сумма квадратов 371 Тема 7. Оператор выбора Оператор выбора Задача: Ввести номер месяца и вывести количество дней в этом месяце. Решение: Число дней по месяцам:
30 дней – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь) 31 день – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь) Особенность: Выбор не из двух, а из нескольких вариантов в зависимости от номера месяца. Можно ли решить известными методами? ? Алгоритм начало конец оператор выбора ни один вариант не подошел ввод M да нет M = 1? D = 31; нет M = 2? D = 28; да нет M = 12? D = 31; да вывод D ошибка Программа main() { int M, D; printf("Введите номер месяца:\n"); scanf("%d", &M); switch ( M ) { 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 Оператор выбора Задача: Ввести букву и вывести название животного на эту букву. Особенность: выбор по символьной величине. main() { char c; printf("Введите первую букву названия животного:\n"); scanf("%c", &c); switch ( c ) { case 'а': printf("Антилопа"); break; case 'б': printf("Бизон"); break; case 'в': printf("Волк"); break; default: printf("Я не знаю!"); } } Что будет, если везде убрать break? ? Оператор выбора Особенности:
или символьного типа (char) нельзя ставить два одинаковых значения: switch ( i+3 ) { case 1: a = b; break; case 2: a = c; } switch ( x ) { case 1: a = b; break; case 1: a = c; } Задания (с защитой от неверного ввода) «4»: Ввести номер месяца и вывести количество дней в нем, а также число ошибок при вводе. Пример: Введите номер месяца: Введите номер месяца: -2 2 Введите номер месяца: В этом месяце 28 дней. 11 Вы вводили неверно 0 раз. В этом месяце 30 дней. Вы вводили неверно 1 раз. «5»: Ввести номер месяца и номер дня, вывести число дней, оставшихся до Нового года. Пример: Введите номер месяца: 12 Введите день: 25 До Нового года осталось 6 дней. Тема 8. Отладка программ Отладка программ Отладка – поиск и исправление ошибок в программе. Англ. debugging, bug = моль, жучок Методы:
отключение части кода (в комментарии) пошаговое выполнение – выполнить одну строчку программы и остановиться точки останова – выполнение программы останавливается при достижении отмеченных строк (переход в пошаговый режим) просмотр и изменение значений переменных в пошаговом режиме Трассировка printf("Введено X=%d\n", X); printf("В цикле: i=%d, X=%d\n", i, X); printf("После цикла: X=%d\n", X); main() { int i, X; printf("Введите целое число:\n"); scanf("%d", &X); for(i=1; i<10; i++) { ... } ... } Отключение части кода (комментарии) main() { int i, X; printf("Введите целое число:\n"); scanf("%d", &X); X *= X + 2; for(i=1; i<10; i++) X *= i; while ( X > 5 ) { ... } ... } // X *= X + 2; /* while ( X > 5 ) { ... } */ комментарий до конца строки // закомментированный блок /* … */ Точки останова это точка останова ЛКМ или Ctrl+F5 F8 – запустить и выполнить до следующей точки останова F7 – выполнить одну строку Shift+F7 – войти в процедуру (функцию) Ctrl-F7 – выполнять дальше Ctrl-Alt-F2 – остановить программу Просмотр значений переменных навести мышь на имя переменной ПКМ Тема 9. Графика Система координат (0,0) (x,y) X Y x y Принцип сэндвича рисование в графическом режиме открыть окно для графики закрыть окно для графики #include #include main() { initwindow ( 400, 300 ); ... // рисуем на экране getch(); closegraph(); } initwindow ( 400, 300 ); closegraph(); Структура графической программы открыть окно для графики закрыть окно чтобы посмотреть результат библиотека для работы с графикой ширина высота Цвета
Полная палитра цветов цвет = R + G + B Red красный 0..255 Blue синий 0..255 Green зеленый 0..255 R = 218 G = 164 B = 32 R = 135 G = 206 B = 250 Сколько разных цветов? ? 256·256·256 = 16 777 216 (True Color) Управление цветом Цвет линий и текста: set color = установить цвет
setcolor ( COLOR(255,255,0) ); Цвет и стиль заливки: set fill style = установить стиль заливки setfillstyle ( стиль, цвет ); 0 – выключить 3..6 – наклонные линии 1 – сплошная 7..8 – сетка 9..11 – точечная номер цвета R G B Точки, отрезки и ломаные (x1, y1) (x2, y2) setcolor ( 10 ); line (x1, y1, x2, y2); (x, y) putpixel (x, y, 9); (x1, y1) (x2, y2) (x3, y3) (x4, y4) (x5, y5) setcolor ( 12 ); moveto (x1, y1); lineto (x2, y2); lineto (x3, y3); lineto (x4, y4); lineto (x5, y5); цвет Прямоугольники (x1, y1) (x2, y2) setcolor ( 9 ); rectangle (x1, y1, x2, y2); (x1, y1) (x2, y2) setfillstyle ( 1, 12 ); bar (x1, y1, x2, y2); (x1, y1) (x2, y2) setfillstyle ( 1, 12 ); bar (x1, y1, x2, y2); setcolor ( 9 ); rectangle (x1, y1, x2, y2); цвет стиль (1 - сплошная) Окружность, заливка, текст setcolor ( COLOR(255,0,0) ); circle ( x, y, R ); setfillstyle ( 1, 11 ); floodfill ( x, y, 0); (x, y) (x, y) R стиль (1 - сплошная) цвет границы цвет заливки (x, y) Вася setcolor ( 9 ); outtextxy ( x, y, "Вася" ); Пример (200, 50) (100, 100) (300, 200) setfillstyle (1, 9); bar (100,100,300,200); setcolor (13); rectangle (100,100,300,200); moveto (100,100); lineto (200, 50); lineto (300,100); setfillstyle (1, 14); floodfill (200, 75, 13); setcolor (15); circle (200, 150,50); setfillstyle (1, 10); floodfill (200,150, 15); setcolor (12); outtextxy (100, 230, "Sharik's house."); Sharik's house |