Главная страница
Навигация по странице:

  • Инспектор объектов.

  • Размещение компонентов на форме

  • Обработка нажатия кнопки

  • 6 2 6

  • Постановка задачи Некоторая подпрограмма задает зависимость значения функции от аргумента. Надо нарисовать в окне график, показывающий эту зависимость.Принципы рисования в Visual Studio

  • Практические задания по программированию Задание 1

  • Рекомендуемая литература

  • Учебник Информатика. Базовый курс. Симонович С.В.. С. В. Симоновичаинформатикабазовый курс2е издание


    Скачать 17.96 Mb.
    НазваниеС. В. Симоновичаинформатикабазовый курс2е издание
    АнкорУчебник Информатика. Базовый курс. Симонович С.В..pdf
    Дата28.01.2017
    Размер17.96 Mb.
    Формат файлаpdf
    Имя файлаУчебник Информатика. Базовый курс. Симонович С.В..pdf
    ТипКнига
    #56
    КатегорияИнформатика. Вычислительная техника
    страница74 из 76
    1   ...   68   69   70   71   72   73   74   75   76
    622
    Глава 20. Основы программирования
    Главное окно
    . системы Delphi
    Инспектор
    Визуальный проектировщик
    Редактор
    , исходных тестов
    20.2. Рабочие окна программы Delphi 7
    Инспектор объектов. Используется для визуальной (без программирования)
    настройки свойств различных объектов на этапе проектирования.
    Заголовок окна
    Понять, как работает Инспектор объектов, лучше всего на примере. Пока что авто- матически создана только одна пустая форма (называющаяся но обла- дает множеством различных свойств. Заголовок формы (будущего окна программы)
    задается в свойстве Caption (Заголовок). Чтобы его изменить, надо в Инспекторе объектов найти строку, в левой части которой написано Caption, и в правой части этой строки, небольшом поле ввода, указать новое название, например Раскраши- вание. Тут же и заголовок формы в визуальном проектировщике.
    Аналогично меняются и любые другие свойства. Сначала в выпадающем списке в верхней части Инспектора выбирается нужный объект (или он выделяется на форме щелчком мыши), затем находится название свойства и в правой части его значе- ние меняется на новое. Изменение может происходить путем простого ввода нового значения с клавиатуры, так и выбором одного из предопределенных значе-

    20.8. Пример на Паскале. Раскрашивание круга 6 2 3
    ний из списка. В некоторых случаях для редактирования свойства вызывается спе- циальный редактор.
    Свойства могут быть многосоставными, например, свойство Font (Шрифт) слева от названия такого свойства ставится символ «±». Двойным щелчком мыши на его названии оно раскрывается и показывает все свои вложенные подсвойства.
    Размещение компонентов на форме
    Прежде всего разместим на форме поле ввода. Для этого на палитре компонентов с помощью закладки выбирается панель Standard (Стандартная) и нажимается кнопка с всплывающей подсказкой Edit (выбран компонент «поле
    Затем надо щелкнуть мышкой на форме, и в месте щелчка появится элемент управления
    Его можно перетаскивать по форме и менять размеры.
    В свойстве Text (Содержимое) этого объекта исходно надо задать пустую строку,
    чтобы при запуске программы в данном поле ничего не показывалось.
    Рядом с полем ввода надо разместить свободное поле с комментарием. Для этого на панели компонентов выбирается компонент, называющийся Label (Подпись),
    и помещается на форме так, как это было сделано с полем ввода. Новый объект автоматически получит название
    1. Чтобы указать в нем текст «Цвет», его надо ввести в свойство Caption.
    Изменить название любого объекта на форме можно, изменив его свойство Name в Инспекторе объектов.
    В нижней части формы надо разместить кнопку — компонент Button (Кнопка) на панели
    Standard (Стандартная). Название этой кнопки (Закрасить) задается в свойстве Caption.
    На панели Additional (Дополнительно) имеется компонент Shape (Фигура). Этот компонент помещается в центр формы. Он получит название
    1 и исходно примет форму квадрата, закрашенного белым цветом. Чтобы превратить его в круг,
    надо значение свойства Shape изменить на stCircle.
    Теперь осталось только добавить кнопку, закрывающую форму. Это действие стан- дартное, поэтому в Delphi 7имеется специальный компонент BitBtn (Кнопка с картин- кой) на панели Additional (Дополнительно), позволяющий автоматизировать такие действия, не прибегая к программированию.
    После размещения такой кнопки на форме получит название значение ее свойства Kind (Вид выполняемого действия) надо установить
    (Закрыть окно). При этом на кнопке появится стандартной картинки, симво- лизирующей действие закрытия.
    В
    надо изменить заголовок этой кнопки
    Caption) с англий- ского слова Close на русское Закрыть, и на этом процесс проектирования приложе- ния можно считать законченным.
    Сохранение проекта
    Перед тем как приступить к программированию, проект надо сохранить. Это дейст- вие выполняется командой File • Save
    (Файл • Сохранить все), после чего снача-

    6 2 4 Глава 20. Основы программирования ла выбирается каталог и указывается имя файла, в котором хранится программное описание (на Паскале) структуры и работы спроектированной формы. Имя файла будет иметь расширение по умолчанию. Далее система Delphi 7 спросит, куда и под каким именем сохранить файл проекта, содержащий всю информацию об используемых формах и модулях (их может быть в одном проекте сколько угодно,
    но одна форма всегда будет главной) и всевозможные настройки. Название файла проекта не должно совпадать с названием файла с исходным текстом программы.
    Обработка нажатия кнопки
    В создаваемой программе вручную придется запрограммировать фактически только одно событие — нажатие на кнопку Закрасить. Чтобы создать первоначально пус- тую подпрограмму, вызываемую при нажатии на эту кнопку, надо просто дважды щелкнуть на ней мышкой. При этом система Delphi 7 вызовет редактор, автомати- чески сгенерирует нужный текст и разместит курсор именно в том месте, где можно начать описание нужного алгоритма.
    procedure
    TObject);
    begin end;
    Обработчик события Нажатие на кнопку
    1 — это обычная подпрограмма, метод класса
    (этот класс описывает главную форму
    Единственный пара- метр Sender характеризует источник сообщения о случившемся событии. Его прак- тически всегда можно игнорировать.
    Алгоритм работы данного метода будет следующим. Первоначально надо убедиться,
    что длина введенной в поле строки равна 6 символам и каждый из этих сим- волов цифра. Если это не так, то выполнение обработчика надо сразу завершить (для этого предназначена стандартная процедура Паскаля
    Exit, мгновенно завершающая работу текущей подпрограммы).
    Если же введенные данные корректны, их надо:
    Преобразовать в промежуточную строку в формате $00хххххх,
    хххххх — шесть введенных цифр.
    2. Эту строку преобразовать в число, которое будет рассматриваться как цвет.
    3.
    новый цвет круга на основании полученного значения.
    Содержимое поля ввода Editi хранится в виде строки в его свойстве Text. Доступ к этому свойству осуществляется с помощью конструкции Editi
    Длина строки определяется стандартной функцией со строкой в качестве параметра.
    Стандартная функция Pos(), получая две строки как аргументы, проверяет, не содер- жится ли первая строка во второй, и если содержится, то возвращает номер началь- ной позиции. В противном случае Pos() возвращает ноль. Эта функция потребуется для определения, все ли символы во введенной строке допустимы.

    20.8. Пример на Паскале. Раскрашивание круга 6 2 5
    функция преобразует строку к верхнему регистру. Такое преобразование требуется, чтобы разрешить ввод значений цветов на любых реги- страх.
    Преобразование строки в число выполняет стандартная функция
    Объект имеет свойство Brush (Кисть для фона), которое, в свою очередь, имеет вложенное свойство Color (Цвет заливки). Его и надо в конечном счете изменить.
    Как только это произойдет, цвет круга в окне автоматически изменится новый.
    procedure
    TObject);
    var i: integer;
    s: string;
    begin
    // если длина введенной строки не равна 6,
    то закончить работу if
    <> 6 then exit;
    // в локальную переменную s заносится строка,
    // содержащая допустимые символы s
    // проверяется каждый символ во введенной строке for i := 1 to 6 do
    // если очередной символ не найден в строке s, значит,
    // он недопустим, и работу требуется прекратить if
    )., s) =. 0 then exit;
    // все нормально — в переменной
    // готовим промежуточную строку s
    // Устанавливаем значение цвета заливки круга равным
    //
    строки в переменной
    Shapel
    := StrToInt (s).;
    end;
    Запуск программы
    Программа запускается нажатием на клавишу F9. Так как
    Delphi 7 — это компилирующая система, сначала автома- тически выполнится компиляция и только потом про- грамма запустится. Задавая различные строки
    987654 и т. п.), можно наглядно увидеть соответ- Рис 20.3. Программа
    ствующие им цвета. закраски в работе

    6 2 6 Глава 20. Основы программирования
    20.9. Пример на Си++. Рисование графиков
    Microsoft Visual Studio
    многом схожа с рассмотренной
    Delphi,
    но визуальные возможности построения пользовательского интерфейса реализо- ваны в ней только для Бейсика и С#. Поддержка Си++ в этой системе унаследована от старых версий и не предоставляет разработчику столь удобного проектирования.
    Тем не менее мы рассмотрим простой пример ее использования для создания про- граммы, рисующей график функции.
    Постановка задачи
    Некоторая подпрограмма задает зависимость значения функции от аргумента. Надо нарисовать в окне график, показывающий эту зависимость.
    Принципы рисования в Visual Studio
    Перерисовывать экран в Windows приходится по самым разным причинам. Напри- мер, окно было закрыто другими приложениями, свернуто или оказалось временно заслоненным своими вспомогательными окнами. При этом перерисовывать прихо- дится или все содержимое, или только часть. Программа,
    Visual Studio, сама определяет, что и когда ей надо перерисовать, все элементы управления тоже это «понимают». Особое требование к организации перерисовки возникает, только когда программист напрямую использует функции рисования.
    Все эти функции в таком случае надо размещать в обработчике события On Draw,
    которое вызывается автоматически.
    Технология рисования
    Система Microsoft Visual
    не содержит визуальных средств создания программ на Си++, аналогичных возможностям Delphi. Она предлагает дизайнеры форм только для и С#. Поэтому мы изучим несложный вариант исполь- зования графических примитивов Windows для демонстрации техники рисования графиков в пределах клиентского окна шаблонного приложения. Любое окно
    Windows характеризуется так называемым контекстом устройства, своеобразным объектом, содержащим различные методы графического вывода в пределах этого окна. Доступ к контексту нужного нам окна будет автоматически предоставлен
    Microsoft Visual Studio
    при формировании обработчика
    Для создания графика потребуются два метода этого объекта: метод устанавливающий новое начальное положение — точку
    у)
    следующих опера- ций рисования, и метод линию из предыдущей точки в новую.
    Метод отрисовки
    Так как система Microsoft Visual Studio
    не дает возможности работать с формой напрямую, подготовка «пустого» приложения будет немного сложнее, чем в пре- дыдущих
    После запуска системы надо дать команду File • New • Project
    (Файл • Создать • Проект), на панели Project Types (Типы проектов) выбрать раздел

    20.9. Пример на Си++. Рисование графиков
    627
    Visual C++ Projects (Проекты Visual C++), а на панели
    Templates (Шаблоны) — значок MFC Application (Оконное приложение).
    Название проекта (например, Grafiki) и его местонахож- дение задается в полях Name (Имя) и Location (Располо- жение). После нажатия на кнопку запускается Мас- тер настройки вида будущего приложения. Изменять в нем ничего не надо, достаточно нажать кнопку Finish
    (Готово). Система сгенерирует заготовку пустого, но рабо- тоспособного проекта. Посмотреть его структуру можно с помощью средства Просмотра решения (Solution
    Explorer), вызываемого командой View • Solution Explorer
    (Вид • Просмотр решения).
    В этом множестве автоматически сгенерированных фай- лов нас интересует файл GrafikiView.cpp, непосредствен- но ответственный за отображение содержимого клиентс- ких окон на экране. Чтобы открыть его в редакторе, надо дважды щелкнуть на соответствующей строке.
    Алгоритм отображения графика несложен. Он умещается в нескольких операторах.
    Координату по оси Y нельзя взять непосредственно из переменной у, а надо вычислять по формуле Height-y, по- тому что в системе Windows считается, что точка с коор- динатами (0,0) расположена в верхнем левом углу окна, а ось Y направлена вниз.
    Для удобства восприятия эту ось надо перевернуть.
    Необходимо сформировать обработчик события OnDraw. Для этого перейдем в рас- крывающийся список в верхнем правом углу окна редактора исходных текстов, и найдем в нем строку OnDraw. После ее выбора в редакторе появится следующий новый текст:
    // CGrafikiView drawing void
    /*pDC*/)
    CGrafikiDoc* pDoc =
    TODO: add draw code for native data here
    20.4. Структура
    проекта Visual Studio
    сформированная
    автоматически
    Параметр pDC — это нужный нам указатель на контекст устройства. Его мы и будем использовать для вывода графиков. Обратите внимание, что по умолчанию он взят в скобки-комментарии и недоступен внутри функции. Поэтому его надо раском- ментировать.

    Глава 20. Основы void pDC)
    CGrafikiDoc* pDoc =
    ASSERT_VALID(pDoc);
    // TODO: add draw code for native data here
    // начальные координаты int x,y;
    x = 0; .
    У = 0;
    // переменная-прямоугольник
    CRect rect;
    // определяем размеры клиентского окна
    // вызовом стандартной функции Windows
    // фиксируем начальную точку
    // цикл, пока каждая координата очередной точки
    // укладывается в клиентскую х <
    && у <
    )
    х = х +
    // соответствующее значение по оси Y
    У
    // в новую точку
    // рисуется линия

    20.9. Пример на Си++. Рисование графиков 6 2 9
    Чуть выше метода OnDraw надо определить функцию f(), не привязанную ни к какому классу. В ней происходит вычисление значения анализируемой математи- ческой функции по заданному аргументу. Для примера, она может выглядеть так:
    int f(int x)
    {
    int у;
    у = 50*log(x);
    return у;
    }
    Стандартная функция log() вычисляет значение логарифма. Коэффициент 50 нужен,
    чтобы кривая пропорционально размещалась в окне. Хотя функция рассчи- тывает действительное значение, компилятор автоматически настроит программ- ный код так, чтобы оно было преобразовано в целый тип, соответствующий типу переменной у.
    Исходно функция log() и ряд других не подключены к текущему проекту. Чтобы они стали доступными, библиотеку, в которой они хранятся, необходимо явно ука- зать компилятору. Делается это с помощью командной строки
    # i n c l u d e которую можно поместить в самое начало текущего файла.
    Далее проект надо сохранить, выполнить компиляцию и запустить, нажав
    F5. В дальнейшем, изменив один оператор присваивания в функции f() и подобрав подходящие коэффициенты, с помощью этой программы можно строить самые разные графики.
    Практические задания по программированию
    Задание 1
    Дано натуральное число. Составить программу, которая представляет данное число в виде суммы квадратов натуральных чисел, содержащей минимальное число сла- гаемых. Например:
    9=3 2
    Задание 2
    Дан массив, содержащий элементов.
    Написать подпрограммы, выполняющие следующие действия:
    • перестановку элементов массива в обратном порядке;
    • вычисление суммы А[1] + А[2]*А[2] + А[3]*А[3]*А[3]...;

    6 3 0 Глава 20. Основы программирования
    • определение элементов массива, разность модулей которых имеет наибольшее значение;
    • определение значения, которое встречается среди элементов массива макси- мальное число раз, и вычисление количества таких вхождений;
    • упорядочение элементов массива по возрастанию.
    Задание 3
    Дан двумерный массив, содержащий NxN элементов.
    Написать подпрограммы, выполняющие следующие действия:
    • вычисление среднего арифметического для элементов каждой строки массива;
    • замену нулями всех элементов, расположенных на главной диагонали матрицы;
    • определение наибольшего элемента и его положения в массиве.
    Задание 4
    Дана текстовая строка.
    Написать подпрограммы, выполняющие следующие действия:
    • подсчет количества слов в строке (в качестве границ слов рассматриваются пробелы);
    • подсчет количества цифр в строке;

    десятичного числа, которому строка,
    она пред- ставляет запись этого числа в шестнадцатеричной системе;
    • проверку соответствия содержимого строки правилам идентификато- ров языков программирования.

    Рекомендуемая литература
    1. Бобровский С. И. Delphi 7. Учебный курс. - СПб.: Питер,
    с.
    2. Бройдо В. Л. Вычислительные системы, сети и телекоммуникации. Учебник для вузов. - СПб.: Питер,
    с.
    3. Бэйн С. Эффективная работа: CorelDraw перев. с англ. — СПб.: Питер, 2003,
    768 с.
    4. Говорухин В. Н., Цибулин В. Г. Компьютер в математическом исследовании.
    Учебный курс. - СПб.: Питер,
    с.
    5. Гук М. Ю. Аппаратные интерфейсы ПК. Энциклопедия. — СПб.: Питер, 2003,
    528 с.
    6. Гук М. Ю. Аппаратные средства IBM
    Энциклопедия. — СПб.: Питер, 2003,
    928с.
    7. Додж М., Стинсон К. Эффективная работа: Excel 2002; перев. с англ. — СПб.:
    Питер,
    с.
    8. Зихерт К., Ботт Э. Эффективная работа: Windows перев. с англ. — СПб.:
    Питер,
    с.
    9. Комер Д. Принципы функционирования Интернета; перев. с англ. — СПб.:
    Питер,
    с.
    10. Крёнке Д. Теория и практика построения баз данных; перев. с англ. — СПб.:
    Питер, 2003, 800 с.
    Маров М. Н. Эффективная работа: 3ds max 5. — СПб.: Питер,
    с.
    12. Миллхоллон М., Мюррей К. Эффективная работа: Word 2002; перев. с англ. —
    СПб.: Питер, 2003, 944 с.
    13. Немнюгин С. A. Turbo-Pascal. Программирование на языке высокого уровня.
    Учебник для вузов. — СПб.: Питер, 2003, 544 с.

    6 3 2 Рекомендуемая литература
    14. Олифер В. Г., Олифер Н. А. Компьютерные сети. Принципы, технологии, про- токолы. Учебник для вузов. — СПб.: Питер, 2003, 864 с.
    15. Павловская Т. А. Паскаль. Программирование на языке высокого уровня. Учеб- ник для вузов. — СПб.: Питер,
    с.
    Павловская Т. А. C/C++. Программирование на языке высокого уровня. Учеб- ник для вузов. — СПб.: Питер, 2003, 464 с.
    17. Пасько В. П. Эффективная работа в Интернете. — СПб.: Питер, 2003, 544 с.
    18. Петров М. Н., Молочков В. П. Компьютерная графика: Учебник для вузов. —
    СПб.: Питер,
    19. Попов В. Б. Практикум по Интернет-технологиям. Учебный курс — СПб.: Питер,
    с.
    20. Рейнбоу В. Компьютерная графика. Энциклопедия; перев. с англ. — СПб.: Питер,
    2003,768 с.
    Тайц А.
    Тайц А. А., Петров М. Н. Эффективная работа: Photoshop 7. — СПб.:
    Питер,
    с.
    22. Таненбаум Э. С. Архитектура компьютера; перев. с англ. — СПб.: Питер, 2003,
    704 с.
    Таненбаум Э. С. Компьютерные сети; перев. с англ. — СПб.: Питер,
    с.
    24. Фаронов В. В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. — СПб.: Питер, 2003, 640 с.
    Э. Эффективная работа: Access 2002; перев. с англ. — СПб.: Питер,
    2003,944 с.
    26. Хамахер К, Вранешич 3., Заки С. Организация ЭВМ; перев. с англ. — СПб.:
    Питер,
    с.
    27. Хелд Г. Технологии передачи данных; перев. с англ. — СПб.: Питер,
    с.
    28. Шалин П. А. Энциклопедия Windows
    - СПб.: Питер, 2003, 688 с.

    1   ...   68   69   70   71   72   73   74   75   76


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