- •Глава I.
- •1. Простейшие программы ......................................................................................... 3
- •2. Переменные ............................................................................................................... 7
- •3. Выбор вариантов ................................................................................................... 14
- •4. Циклы ....................................................................................................................... 19
- •5. Методы отладки программ ................................................................................. 27
- •1. Простейшие программы
- •1) Трансляция – перевод текста программы в машинные коды;
- •2) Компоновка – сборка частей программы и подключение стандартных функций.
- •I. Введение в программирование © к. Поляков, 1995-2009
- •1 Препроцессор – это специальная программа, которая обрабатывает текст вашей программы раньше транслятора.
- •I. Введение в программирование © к. Поляков, 1995-2009
- •2. Переменные
- •Int a; // выделить память под целую переменную a
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Int a, b, c; // объявление переменных
- •I. Введение в программирование © к. Поляков, 1995-2009
- •I. Введение в программирование © к. Поляков, 1995-2009
- •6 Знаков в дробной части.
- •6 Позиций (4 цифры в дробной
- •10 В этой степени). При выводе по u1092 формату %e также можно задать число позиций, которые
- •I. Введение в программирование © к. Поляков, 1995-2009
- •3. Выбор вариантов
- •If ( условие ) // заголовок с условием
- •If ( условие )
- •I. Введение в программирование © к. Поляков, 1995-2009
- •I. Введение в программирование © к. Поляков, 1995-2009
- •4. Циклы
- •Int I; // объявление переменной цикла
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Int I, n; // I – переменная цикла
- •Int n; // число, с которым работаем
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Int n, sum; // sum - сумма цифр числа
- •I. Введение в программирование © к. Поляков, 1995-2009
- •If ( надо выйти ) break;
- •I. Введение в программирование © к. Поляков, 1995-2009
- •5. Методы отладки программ
- •I. Введение в программирование © к. Поляков, 1995-2009
- •I. Введение в программирование © к. Поляков, 1995-2009
- •6. Работа в графическом режиме
- •Initwindow ( 400, 300 ); // открыть окно для графики 400 на 300
- •I. Введение в программирование © к. Поляков, 1995-2009
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Initwindow (440, 300);
- •7. Процедуры
- •Void Tr ( int X, int y, int c )
- •Void Tr ( int X, int y, int c )
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Initwindow (400, 300);
- •2 Позднее мы изучим подпрограммы, которые возвращают значение-результат – они называются функциями.
- •I. Введение в программирование © к. Поляков, 1995-2009
- •8. Функции
- •Int SumDigits ( int n ) // заголовок функции
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Int Prime ( int n ); // объявление функции
- •If ( Prime(n) ) // вызов функции
- •Int Prime ( int n ) // описание функции
- •Int MinMax ( int a, int b, int &Max )
- •I. Введение в программирование © к. Поляков, 1995-2009
- •9. Структура программ
- •Void ProcNoChange ()
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Void Square ( int X, int y, int a );
- •Void Kvadrat ( int X, int y, int a );
- •Int Romb ( int X, int y, int a, int b, int color,
- •Int colorFill )
- •I. Введение в программирование © к. Поляков, 1995-2009
- •10. Анимация
- •1) Рисуем фигуру на экране;
- •1. Проверяем, нажата ли какая-нибудь клавиша; это делает функция kbhit, которая воз-
- •If ( kbhit() ) { ... }
- •2. Если клавиша нажата, то
- •Void Draw ( int X, int y, int color )
- •20 Мс, вызывая функцию delay с параметром 20, и затем стираем фигуру. После этого изменя-
- •2 Нажатия, причем для первого код символа всегда равен нулю, а для второго мы получим спе-
- •I. Введение в программирование © к. Поляков, 1995-2009
- •If ( kbhit() ) { // если нажата клавиша
- •11. Случайные и псевдослучайные числа
- •I. Введение в программирование © к. Поляков, 1995-2009
- •Int random ( int n )
- •Int random (int n) { return rand() % n; } // функция
- •Initwindow (500, 500); while ( ! kbhit () ) { // пока не нажата клавиша
I. Введение в программирование © к. Поляков, 1995-2009
http://kpolyakov.narod.ru
34
Для заливки нужно знать координаты (x,y) одной (любой!) точки внутри этой области. Кроме
того, нужно, чтобы граница области была одного цвета, без разрывов. Цвет границы указывает-
ся последним в списке данных, которые передаются функции floodfill.
Надписи
Функция outtextxy позволяет выводить текст в любом месте окна. Ей
нужно задать координаты (x,y) левого верхнего угла текста. Цвет текста
устанавливается с помощью функции setcolor:
setcolor ( 9 );
outtextxy ( x, y, "Вася" );
Пример программы
Напишем программу, которая использует стандартные функции
для рисования домика. Попытайтесь разобраться в ней самостоятельно.
#include <graphics.h>
#include <conio.h>
main()
{
Initwindow (440, 300);
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.");
getch();
closegraph();
}
(x, y)
Вася
(200, 50)
(100, 100)
(300, 200)
Sharik's house
Программирование на языке Си. © К. Поляков, 1995-2009
http://kpolyakov.narod.ru
35
7. Процедуры
Пример задачи с процедурой
Часто в программах бывает легко выделить одинаковые эле-
менты (например, одинаковые фигуры в рисунке). Составим про-
грамму, которая рисует на экране три одинаковых треугольника
разного цвета.
Конечно, можно нарисовать отдельно три фигуры «вручную»,
но хочется как-то облегчить работу, используя их сходство.
Сначала нужно определить, что общего имеют эти фигуры
(размеры, угол поворота) и в чем их отличие (цвет заливки, координаты). Если размеры тре-
угольников и угол поворота известны, то для построения треугольника достаточно знать коор-
динаты одной (любой) его точки (удобно выбрать одну из вершин).
Пусть (x,y) – координаты левого нижнего угла, ширина основания и
высота равны соответственно 100 и 60. Тогда легко подсчитать коор-
динаты остальных вершин: (x,y-60) и (x+100,y). Здесь мы учли,
что ось Y направлена вниз.
Введем новую команду Tr, которая будет рисовать треугольник.
Вызывать ее будем так:
Tr ( x, y, c );
Здесь c – это цвет заливки треугольника.
Вся проблема в том, что компьютер (вернее, программа-транслятор) не знает такой ко-
манды и не сможет ее выполнить (выдать ошибку «Неизвестная функция»). Значит, нужно объ-
яснить эту команду, расшифровать ее через уже известные команды. Расшифровку мы офор-
мим так:
Void Tr ( int X, int y, int c )
{
moveto ( x, y ); // курсор в левый нижний угол
lineto ( x, y-60 ); // рисуем контур
lineto ( x+100, y );
lineto ( x, y );
setfillstyle ( 1, c ); // устанавливаем цвет заливки
floodfill ( x+20, y-20, 15); // заливка до белой границы
}
Новые команды, введенные таким образом, в программировании называются подпрограммами
(вспомогательными программами) или процедурами.
Процедура – это вспомогательная программа (подпрограмма), предназначенная для выпол-
нения каких-либо действий, которые встречаются в нескольких местах программы.
Процедура оформляется почти так же, как и основная программа, только ее имя – не
main, а какое-то другое. Она состоит из заголовка, после которого внутри фигурных скобок
записывают тело процедуры – те команды, которые выполняются при вызове. Эти команды
должны уже быть известны транслятору.
Рассмотрим подробно заголовок процедуры