Главная страница

Язык Си. Алгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность


Скачать 4.66 Mb.
НазваниеАлгоритм Свойства алгоритма дискретность состоит из отдельных шагов (команд) понятность
Дата05.02.2023
Размер4.66 Mb.
Формат файлаppt
Имя файлаЯзык Си.ppt
ТипПрограмма
#921318
страница8 из 11
1   2   3   4   5   6   7   8   9   10   11

Задания





«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. Оператор выбора





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


Задача: Ввести номер месяца и вывести количество дней в этом месяце.
Решение: Число дней по месяцам:
    28 дней – 2 (февраль)
    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?


?





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


Особенности:
    после 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;
}





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


«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();


Структура графической программы


открыть окно для графики


закрыть окно


чтобы посмотреть результат


библиотека для работы с графикой


ширина


высота





Цвета


Код


Название


0


BLACK


1


BLUE


2


GREEN


3


CYAN


4


RED


5


MAGENTA


6


BROWN


7


LIGHTGRAY


Код


Название


8


DARKGRAY


9


LIGHTBLUE


10


LIGHTGREEN


11


LIGHTCYAN


12


LIGHTRED


13


LIGHTMAGENTA


14


YELLOW


15


WHITE





Полная палитра цветов


цвет = 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 ( 12 );

    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

1   2   3   4   5   6   7   8   9   10   11


написать администратору сайта