Программирование на языках высокого уровня

Автор: Пользователь скрыл имя, 25 Ноября 2011 в 19:01, курсовая работа

Краткое описание

Составить программу для управления размерами окружности и ее положением на экране. Исходная окружность имеет центр в точке (100,100) и радиус r=20. Управление выполняется клавишами:
“>” увеличивает радиус окружности на 5 точек (по достижении границ экрана дальнейшее увеличение радиуса прекращается),
“<” уменьшает радиус окружности на 5 точек (по достижении радиусом значение 1 пиксель дальнейшее уменьшение радиуса прекращается),
клавиши управления курсором вызывают перемещение окружности в соответствующем направлении, “Enter” завершает работу программы. Границы окружности, ни при каких условиях, не должны выходить за границы экрана.

Оглавление

ЗАДАНИЕ 3
КРАТКОЕ ОПИСАНИЕ МЕТОДА РЕШЕНИЯ 4
ПОДРОБНЫЙ АЛГОРИТМ РАБОТЫ ПРОГРАММЫ 5
БЛОК-СХЕМА 9
ЛИСТИНГ ПРОГРАММЫ 12
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ 19

Файлы: 1 файл

Курсовая работа без орфограф ошибок.doc

— 104.00 Кб (Скачать)

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

МИНИСТЕРСТВО  ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО  ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ

КАЗАНСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ  УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННОЙ СИСТЕМЫ ОБРАБОТКИ И УПРАВЛЕНИЯ 
 
 
 
 
 

Курсовая  работа по дисциплине:

«Программирование на языке высокого уровня» 
 
 
 
 

Выполнил: студент гр.8181-22

Нигематзянов  И.Х.

Проверил: доцент Герке А.Р. 
 
 
 
 

Казань, 2010

 

Оглавление 

 

ЗАДАНИЕ

 

      Составить программу для управления размерами  окружности и ее положением на экране. Исходная окружность имеет центр  в точке (100,100) и радиус r=20. Управление выполняется клавишами:

      “>” увеличивает радиус окружности на 5 точек (по достижении границ экрана дальнейшее увеличение радиуса прекращается),

      “<” уменьшает радиус окружности на 5 точек (по достижении радиусом значение 1 пиксель дальнейшее уменьшение радиуса прекращается),

      клавиши управления курсором вызывают перемещение окружности в соответствующем направлении, “Enter” завершает работу программы. Границы окружности, ни при каких условиях, не должны выходить за границы экрана.

 

КРАТКОЕ ОПИСАНИЕ МЕТОДА РЕШЕНИЯ

 

      В данной курсовой работе было продемонстрировано управление размером окружности и ее позицией на экранных координатах в графическом режиме MS-DOS.

      Основным  циклом, обеспечивающим непрерывную  работу программы, был цикл while. Данных цикл выполняется до тех пор, пока переменная key не равна 27, что соответствует ASSCII-коду клавиши Enter. Внутри цикла реализована серия условий, отвечающих за непосредственное управление окружностью. Истинность данных условий приводит к изменению размера и местоположения окружности относительно экранных координат. Условиями являются наличие нажатия определенных клавиш. Рассмотрим их поподробнее:

  • “>” приводит к увеличению радиуса окружности;
  • “<” приводит к уменьшению радиуса окружности;
  • “стрелка влево” приводит к смещению окружности влево;
  • “стрелка вправо” приводит к смещению окружности вправо;
  • “стрелка вверх” приводит к смещению окружности вверх;
  • “стрелка вниз” приводит к смещению окружности вниз.

      Для удобства в программе добавлена строка состояния, на которой отображаются текущие координаты и радиус окружности. Так же в ней предусмотрено, чтобы окружность не выходила за пределы клиентской области. За проверку соблюдения данного условия отвечает функция check(…). В случае если условия соблюдены функция возвращает 1, в противном случае 0.

      Прорисовку  всей графической части выполняет  функция draw(…). Вызывается она в случае, когда функция check(…) возвращает 1. Функцией draw(…) не прорисовывается линия, разделяющая клиентскую область и строку состояния, т.к. линия является статическим элементом.

      Минимальный радиус окружности равен 1.

 

ПОДРОБНЫЙ АЛГОРИТМ РАБОТЫ ПРОГРАММЫ

 

      Программа начинается с подключения библиотек:

  • #include <graphics.h> - необходим для использования графики в DOS.
  • #include <stdlib.h> - для использования функции itoa(…).
  • #include <string.h> - для использования функций strcpy(…), strcat(…).
  • #include <stdio.h> - для функций ввода/вывода: printf(…).
  • #include <conio.h> - для использования функции getch().
 

      Объявление  глобальной переменной-массива символьного  типа, которая содержит предыдущую строку состояния:

            char old_string[20]; 

      Программа состоит из трех функций:

  1. void draw(int x,int y, int r,int old_x,int old_y,int old_r) – отвечает за прорисовку клиентской области и строки состояния. Аргументами функции являются текущие и старые координаты и радиус окружности.
  2. int check(int x,int y, int r, int left,int right, int top, int bottom) – делает проверку того, чтобы окружность не выходила за границу клиентской области, а так же, чтобы радиус был не меньше 1.
  3. void main() – главная функция программы, вызываемая при запуске программы.

    Теперь рассмотрим каждую функцию в отдельности. 

    Функция draw(…)

      Устанавливаем значение цвета ЧЕРНЫЙ, чтобы зарисовать предыдущую окружность и ее центр (окружность с радиусом 1):

            setcolor(BLACK);

            circle(old_x,old_y,1)

            circle(old_x,old_y,old_r);

      Устанавливаем значение цвета ЖЕЛТЫЙ и рисуем центр окружности (окружность с радиусом 1):

            setcolor(YELLOW);

            circle(x,y,1);

      Устанавливаем значение цвета КРАСНЫЙ и рисуем окружность:

            setcolor(RED);

            circle(x,y,r);

      Объявляем переменные-массивы символьного  типа для координат, радиуса и строки состояния:

            char sx[4], sy[4], sr[4], string[20];

      Переводим значения числового целого типа в символьный(текстовой) тип:

            itoa(x,sx,10);

            itoa(y,sy,10);

            itoa(r,sr,10);

      Формируем стоку состояния из отдельных  символьных массивов (текстовой вариант значений X,Y,R):

            strcpy(string,"x=");

            strcat(string,sx);

            strcat(string," y=");

            strcat(string,sy);

            strcat(string," R=");

            strcat(string,sr);

      Устанавливаем значение цвета ЧЕРНЫЙ и зарисовываем предыдущую строку состояния:

            setcolor(BLACK);

            outtextxy(10,465,old_string);

      Устанавливаем значение цвета БЕЛЫЙ и выводим новую строку состояния:

            setcolor(WHITE);

            outtextxy(10,465,string);

      Копируем  новую строку состояния в старую:

            strcpy(old_string,string); 

      Функция check(…)

      Если  окружность не выходит за пределы контекста отображения либо радиус окружности неменьше нуля, то функция возвращает значение 1:

      if((x-r>=left)&& (x+r<=right)&& (y-r>=top)&& (y+r<=bottom)&& (r>=0))

            return 1;

      В противном случае функция возвращает значение 0:

            return 0; 

      Функция main()

      Сначала идет объявление переменных:

         int gdriver=VGA;

            int gmode=VGAHI;

            int errorcode;/

            int x=100;

            int y=100;

            int r= 20;

            int old_x=x;

            int old_y=y;

            int old_r=r;.

            int left  =0;

            int right =640;

            int top   =0;

            int bottom=460;.

            const int step=5;

            char key=0;

      Инициализация графики:

            initgraph(&gdriver, &gmode, "");

      Возвращение результата инициализация графики:

            errorcode = graphresult();

      Если  инициализация неудачна, выводим сообщение об ошибке и завершаем работу программы.

      Устанавливаем значение цвета БЕЛЫЙ и рисуем линию, ограничивающую клиентскую область от строки состояния.

      Вызываем  функцию прорисовки draw(…).

      Далее следует цикл while, условием которого является нажатие клавиши Enter. Внутри цикла каждый раз вызывается функция kbhit(). Если она возвращает значение 1, то вызывается функция getch(), возвращающая ASCII-код нажатой клавиши и присваивается переменной key.

      Значение  переменной key сравнивается с клавишами, которыми производятся манипуляции над окружностью. Если совпадение имеется, то выполняется предусмотренное для нее действие.

      После выхода из цикла while() завершаем работу с графикой, вызывая функцию closegraph().

      На  этом происходит завершение работы программы.

 

БЛОК-СХЕМА

 

 
ЛИСТИНГ ПРОГРАММЫ

 

#include <graphics.h>

#include <stdlib.h>

#include <string.h>

#include <stdio.h>

#include <conio.h> 

char old_string[20];//Содержит  предыдущую строку состояния. 

void draw(int x,int y, int r,int old_x,int old_y,int old_r)

{

      setcolor(BLACK);          //Устанавливаем значение цвета ЧЕРНЫЙ

      circle(old_x,old_y,1);    //чтобы зарисовать предыдущую окружность

      circle(old_x,old_y,old_r);//и ее центр(окружность с радиусом 1). 

      setcolor(YELLOW);//Устанавливаем значение цвета ЖЕЛТЫЙ

      circle(x,y,1);   //и рисуем центр окружности(окружность с радиусом 1).

      setcolor(RED);//Устанавливаем значение цвета КРАСНЫЙ

      circle(x,y,r);//и рисуем окружность. 

      char sx[4],//Значение X в символьном виде.

           sy[4],//Значение Y в символьном виде.

             sr[4],//Значение R в символьном виде.

             string[20];//Строка состояния.

             

      itoa(x,sx,10);//Переводим значения

      itoa(y,sy,10);//числового целого типа

      itoa(r,sr,10);//в символьный(текстовой) тип. 

      strcpy(string,"x="); //Формируем стоку

      strcat(string,sx);   //состояния из

      strcat(string," y=");//отдельных символьных

      strcat(string,sy);   //массивов(текстовой

      strcat(string," R=");//вариант значений

Информация о работе Программирование на языках высокого уровня