![]() |
TX Library Help – Version: 00173a, Revision: 171
PROJECT_BRIEF=
|
Простейшая программа на С (или С++) состоит из двух частей: раздела подключения библиотек и главной функции программы. Рассмотрим пример, в котором рисуется на экране простой рисунок.
Директивы (команды) подключения библиотек находятся обычно в начале файла программы и выглядят обычно так:
#include <stdlib.h> #include "TXLib.h"
Stdlib.h
и TXLib.h
- файлы библиотек, которые подключаются к вашей программе. После этого вы можете использовать команды, функции и переменные, объявленные в этих файлах. Больше, чем нужно, библиотек подключать не стоит, хотя это и не вредно. Когда используется много библиотек, раздел может быть очень большим.
Программа на С (С++) состоит из функций. Функция - это описание каких-либо действий с заданным именем (названием).
Например,
int main() { txCreateWindow (800, 600); txLine (320, 290, 320, 220); return 0; }
Главная функция - это функция, с которой начинается исполнение программы. Ее имя - main()
. Скобки показывают, что речь идет именно о функции, т.е., об описании каких-то действий. Для того, чтобы функция начала работу, ее нужно вызвать. Функцию main()
вызывает сама операционная система компьютера. Слово int
означает, что main()
в конце работы передаст тому, кто ее вызывал (операционной системе), некое целое число. Это число для функции main() означает код завершения нашей программы. Если он равен 0, то работа программы считается успешной.
Действия, записанные в функции, заключаются в фигурные скобки {
и }
. Они обозначают начало и конец функции.
Внутри функции записаны вызовы команд, которые что-то рисуют на экране. Между командами, там, где это логически необходимо, стоят пустые строки, отделяющие одни части программы от других. Это способствует большей понятности программы. Пустая строка в программировании соответствует началу абзаца текста в русском языке.
Для понимания программы и того, чтобы в ней не появлялись ошибки, очень важно, чтобы в нужных местах в ней стояли пробелы. Обычно их ставят до открывающих круглых скобок, после запятых, до и после знаков операций. Наличие пробелов делает программу приятной на вид, и предотвращает напряжение глаз при работе с компьютером. Работа с плохо оформленным текстом программы может нанести вред глазам, снизить зрение.
Пример плохо написанной программы (так писать НЕ надо):
#include "TXLib.h" int main(){ FFFFF FFFFF FFFFF UU UU UU UU UU UU UU UU !! !! !! txCreateWindow(800,600); FF FF FF UU UU UU UU UU UU UU UU !! !! !! txLine(320,290,320,220); FF FF FF UU UU UU UU UU UU UU UU !! !! !! txLine (320, 290,280,350); FFFFF FFFFF FFFFF UU UU UU UU UU UU UU UU !! !! !! txLine(320, 290,360,350); FF FF FF UU UU UU UU UU UU UU UU !! !! !! txLine(320,230,270,275); FF FF FF UU UU UU UU UU UU UU UU !! !! !! txLine(320,230, 400,220); FF FF FF UU UU UU UU UU UU UU UU txCircle(320,190,30); FF FF FF UUUU UUUU UUUU UUUU !! !! !! txSelectFont( "Times",60); txTextOut(240,400,"Hello, world!"); return 0; }
Очевидно, что таким стилем программирования зрение будет быстро и безвозвратно испорчено. :(
Для задания положения рисуемых фигур используется координатная система, у которой начало координат расположено слева-вверху, а ось OY смотрит вниз. Это несколько непривычно, но так традиционно принято в компьютерной графике, поэтому деваться некуда. :) Например, команда
txLine (320, 290, 320, 220);
проводит линию из точки x=320 и у=290 в точку с x=320 и y=220.
Каждая команда заканчивается точкой с запятой. Это - аналог точки в русском языке. Точка с запятой ставится в конце каждого законченного действия или объявления. Например, в строке с txCreateWindow
(800, 600) точка с запятой ставится, т.к. в этой строке "закончена мысль" о том, что надо создать окно для рисования. В строке с int main()
- не ставится, т.к. описание функции main()
не закончено (на самом деле, оно там только начато).
Если в программе используются строки, они заключаются в двойные кавычки, например:
txTextOut (240, 400, "Hello, world!");
Если в программе присутствут числа с дробной частью, то эта часть отделяется от целой части точкой, а не запятой, как в русском языке.
Первое правило в борьбе с ошибками: не бойтесь их количества.Часто первые ошибки влекут за собой последующие. Поэтому прежде всего анализируйте и исправляйте самую первую ошибку. Остальные могут быть ее следствием и исправятся сами, если вы исправите первую ошибку.
Второе правило: будьте внимательны. Об этом см. ниже.
Третье правило волшебника: ищите ошибку вначале у себя, а только потом в библиотеках. Библиотеки достаточно долго тестировались, поэтому вероятность ошибки в них очень мала.
".CPP"
, а не расширение ".C"
. Если расширение (тип) файла неправильное, то в списке ошибок одной из первых будет сообщение "TXLib.h: Must use C++ to compile TXLib.h".
Это потому, что для библиотеки требуется компилятор C++, а он транслирует файлы с расширением ".CPP"
. Файлы ".C"
транслирует компилятор Cи, а не C++. [File], [Save As]
и дайте программе имя с расширением ".CPP"
. Лучше не использовать ни русских букв, ни пробелов в имени файла.TXLib.h
может быть не найден. Сообщение об ошибке зависит от компилятора, но будет содержать фразу, подобную "TXLib.h file not found".
В этом случае выйдите из среды программирования и переустановите TXLib. Если это не помогает, то просто скопируйте файл TXLib.h
из папки TX
в папку с примерами или в папку с вашей программой.В простых программах ошибки бывают двух видов:
Практически все синтаксические ошибки на этой стадии происходят из-за невнимательности. Распространенные синтаксические ошибки:
#iclude "TX lib.h" Правильно: #include "TXLib.h" in maim() Правильно: int main() tx Line (10, 10, 20, 20) Правильно: txLine (10, 10, 20, 20);
txcircle (100, 100, 10) Правильно: txCircle
int main Правильно: int main()
txСircle (100 100 10) Правильно: txCircle (100, 100, 10); txСircle (200; 200; 20) Правильно: txCircle (200, 200, 20);
txSelectFont ("Times", 60) Правильно: txSelectFont ("Times", 60);
txSelectFont (Times, 60) Правильно: txSelectFont ("Times", 60); txSelectFont ('Arial', 20) Правильно: txSelectFont ("Arial", 20);
int main(); Правильно: int main()
3,1415 Правильно: 3.1415
Правильно: int main() int main() { txCreateWindow (800, 600); txCreateWindow (800, 600); txLine (320, 290, 320, 220); txLine (320, 290, 320, 220); return 0; return 0; }
int main() { txCreateWindow (800, 600); txLine (320, 290, 320, 220; Ошибка: Не закрыта круглая скобка return 0; }
int main() { txCreateWindow {800, 600}; Ошибка: Фигурные скобки вместо круглых return 0; } txLine (320, 290, 320, 220; Ошибка: Команда за пределами функции main() } Ошибка: Лишняя скобка
int main() { txCreateWindow (800, 600); return 0; } txLine (320, 290, 320, 220); Ошибка: Команда за пределами функции main()
txСircle (100, 100); Здесь не указан радиус txСircle (200, 200, 20, 30); Здесь лишнее число -- txCircle() принимает всего 3 аргумента
Бывают и логические ошибки, или ошибки времени выполнения (runtime errors). Например, мы не выбрали нужный цвет рисования (по умолчанию он белый), или цвет совпал с фоном и поэтому не виден. Или мы нарисовали одну фигуру поверх другой, и она закрыла предыдущую, или задали неверные координаты. Эти ошибки появляются после запуска программы. Их легко понять, если выполнить на листе бумаги все команды одну за другой, в том порядке, в котором они заданы в программе. При этом не надо стараться выполнять "так, как лучше", или "как хочется, чтобы получилось". Выполняйте так, как будто это не ваша, а совсем чужая работа, и вам не интересен ее результат. В тот момент, когда результат разойдется с вашим желанием и вы получите странную фигуру, станет понятно место ошибки.
Конечно лучше, если ошибка произошла на стадии компиляции, чем на стадии выполнения, когда искать ее труднее. Поскольку человеку избежать ошибок невозможно, один из видов мастерства состоит в том, чтобы постараться перевести хотя бы часть ошибок из стадии исполнения на стадию компиляции. Пусть они происходят там, где их легче ловить. :)
Правильное оформление кода (стиль программирования) помогает перевести ошибки стадии выполнения на стадию набора текста, и находить их даже до компиляции. Например, неверные координаты очень сложно проследить в "примере плохо написанной программы" (см. выше). Сделать это гораздо легче в "законченном примере" (см. ниже), где все числа, операторы и команды аккуратно выровнены. Если программа длиннее нескольких строк, то между ее логическими частями ставят пустые строки (вместо "красных строк" в русском языке), это позволяет не напрягать логическое мышление зазря, а концентрироваться на творчестве и на развитии программы.
Оформлять код "красиво" уже после того, как программа написана и отлажена, достаточно бессмысленно -- хороший стиль облегчает написание и отладку, а ведь программа уже готова. :) Поэтому ставить пробелы, пустые строки и выравнивать текст нужно сразу, при наборе, и приучиться это делать автоматически, как (хочется надеяться) вы автоматически моете руки перед едой. :)
Многие опытные люди, желая помочь вам, бывают разочарованы плохим стилем и перестают помогать и советовать. Поэтому чтобы регулярно получать помощь знатоков, нужно держать стиль на высоте. К счастью, оформить программу - это самое легкое дело в программировании, но и одновременно это первый шаг к надежности и мастерству.
См. также предупреждение.
Текст программы | Примечания | |
#include "TXLib.h" int main() { txCreateWindow (800, 600); txLine (320, 290, 320, 220); txLine (320, 290, 280, 350); txLine (320, 290, 360, 350); txLine (320, 230, 270, 275); txLine (320, 230, 400, 220); txCircle (320, 190, 30); txSelectFont ("Times New Roman", 60); txTextOut (240, 400, "Hello, world!"); return 0; } | Подключение библиотеки рисования Заголовок главной функции Начало функции Открытие окна 800 на 600 пикселей Проводится линия из точки x=320 и у=290 в точку с x=320 и y=220 Проводятся другие линии, в результате чего на экране появляется рисунок Рисуется круг с центром x=320 y=190 и радиусом 30 Выбирается шрифт "Times" размера 60 Печатается текст "Hello, world!" в точке x=240 y=400 Возврат успешного кода завершения (0 = нет ошибок) Конец функции |
Если вам непонятно, что означает та или иная команда в программе, посмотрите в системе помощи TXLib Help Простейший пример или помощь по этой команде в разделе Рисование. Например, по функциям txLine или txTextOut.