Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования»




Скачать 378.86 Kb.
НазваниеМетодические указания проведения практики по дисциплине «Основы алгоритмизации и программирования»
страница1/3
Дата публикации22.04.2013
Размер378.86 Kb.
ТипМетодические указания
skachate.ru > Информатика > Методические указания
  1   2   3




Министерство образования РФ

Государственное образовательное учреждение

Нижегородский технический колледж

УТВЕРЖДАЮ

Зам.директора по учебной работе

________________Теплова Л.М.


МЕТОДИЧЕСКИЕ УКАЗАНИЯ

ПРОВЕДЕНИЯ ПРАКТИКИ

По дисциплине «Основы алгоритмизации и программирования»


СПЕЦИАЛЬНОСТЬ 2202 «АВТОМАТИЗИРОВАННЫЕ СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ И УПРАВЛЕНИЯ»

^ Автор: Щенникова Т.В.

Рецензент: Шибалова Е.М.

Рассмотрено

На заседании предметной комиссии Информатики и информационных технологий

Протокол №____5______

от « 23 » января


ижний Новгород

2004г
Порядок выполнения практики:

  1. Создайте на рабочем столе две папки под своей фамилией, например:

^ Иванов_Проекты и Иванов_Отчёт.

  1. В папке Проекты требуется сохранять проекты программ, созданных на практике. Каждый проект должен хранится в своей папке. Требуется хранить исходные файлы проектов и исполняемые файлы приложений.

  2. В папке Отчёт требуется поместить отчёт по практике – текстовый документ, оформленный в соответствии с данными указаниями.

  3. Задания раздела 1 выполняются в течении первой недели практики.

  4. Задания раздела 2 выполняются в течении второй недели практики. Итоговый отчёт по практике содержит результат раздела 2.

  5. В конце каждого дня практики требуется отчитаться преподавателю о проделанной работе.

  6. В случае возникновения вопросов по написанию программ воспользуйтесь справочником по Delphi, данными указаниями, справкой среды программирования.

  7. Обратитесь к преподавателю только после выполнения пункта 6 – старайтесь самостоятельно решать свои проблемы!!


^ Раздел I. Разработка проектов программ в Delphi на основе изучения примеров решения задач.

1 Проект "Графический редактор"

Цель данного проекта: использование в программах обработчиков событий, связанных с мышью. Создание рисунков с использованием класса TImage.

Создадим простейший графический редактор. Рисование в редакторе будет происходить с использованием мыши. Левой кнопкой мыши мы сможем рисовать непрерывную кривую, а правой - закрашивать выбранным цветом получающиеся области.

Для большинства видимых компонентов определён набор обработчиков событий, связанных с мышью:

  1. OnMouseDown - определение реакции программы на нажатие кнопки мыши;

  2. OnMouseUp - определение реакции программы на отпускание кнопки мыши;

  3. OnMouseMove - на перемещение указателя мыши над компонентом;

  4. OnClick - на щелчок левой кнопкой мыши;

  5. OnDblClick - на двойной щелчок левой кнопкой мыши.

Событие OnClick возникает после OnMouseDown, но перед OnMouseUp, событие OnDblClick возникает после OnMouseUp.

Тип TmouseButton определяет одну из трёх кнопок мыши: левую (mbLeft), правую (mbRigth) и среднюю (mbMiddle).

Тип TshiftState содержит признаки, уточняющие обстоятельства возникновения события: ssShift - нажата клавиша Shift, ssAlt - нажата клавиша Alt, ssCtrl - нажата клавиша Ctrl, ssLeft - нажата левая кнопка мыши, ssRight - нажата правая кнопка мыши Right; ssMiddle - нажата средняя кнопка, ssDouble - одновременно левая и правая кнопки.

Во всех обработчиках параметр Sender содержит ссылку на компонент, над которым произошло событие, параметры X и Y определяют координаты точки чувствительности указателя мыши в момент возникновения события в системе координат клиентской области родительского компонента. Параметр Shift содержит уточняющие признаки.

^ Создание проекта:

Поместим на форму объект типа TРanel (страница Standard). На этом объекте разместим объект типа ТImage, (страница Additional). Этот компонент служит для расположения растровой картинки, пиктограммы или метафайла. Свойство Canvas компонента TImage содержит канву для прорисовки изображения. Для отслеживания траектории движения мыши напишем обработчик события OnMouseMove:

procedure TForml.ImagelMouseMove(Sender: TObject; Shift: TShiftState; X, Y: integer) ; begin

if ssLeft in Shift {если нажата левая клавиша}

then Image1.Canvas.LineTo(X, Y); {рисуем линию от до точки X, Y}

end;

Запустим проект и попробуем перемещать мышь с нажатой левой кнопкой. За мышкой останется след. Отпустим кнопку - рисование прекратится. Но стоит нам снова нажать левую кнопку мыши, как нарисованная кривая соединяется прямой линией с курсором мыши. Понятно, как исправить ошибку: нужно в момент нажатия кнопки "перескакивать" в новое положение курсора без рисования. Сделаем это в обработчике события OnMouseDown:

procedureTForml.ImagelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;

X, Y: integer);

begin

Image1.Canvas.MoveTo(X,Y) ;{перемещение указателя в заданную точку без прорисовки}

end;

Теперь перейдем к закрашиванию. Класс Canvas содержит процедуру FloodFill, которая может работать в двух вариантах: или закрашивать область текущим цветом до границы заданного цвета, или перекрашивать точки заданного цвета до границы любого другого цвета (в этом случае граница может состоять даже из частей разного цвета!). Различаются эти варианты значением последнего параметра процедуры - fsBorder или fsSurface. Например, закрасим красным область с границей черного цвета:

Canvas.Brush.Color:=clRed;

Canvas.FloodFill(X,Y, clBlack, fsBorder);

А теперь перекрасим красную область в синий цвет:

Canvas.Brush.Color:=clBlue; FloodFill(X,Y, clRed, fsSurface);

Обычно мы не знаем заранее, какого цвета область, которую мы собираемся перекрашивать. Но это легко можно определить с помощью свойства Pixels, в котором хранятся цвета всех точек изображения. Pixels[X, Y] и есть цвет точки канвы с координатами X, Y.

Завершим создание редактора. Поместим на форму компонент TColorGrid (стр. Samples) При изменении компонента будем изменять и цвет закрашивания:

procedure TForml.ColorGridlChange(Sender: TObject);

begin

Imagel.Canvas.Brush.Color:=ColorGridl.BackgroundColor;

end;

Перепишем теперь обработчик события OnMouseDown:

procedureTForml.ImagelMouseDown(Sender:TObject;Button:TMouseButton;Shift:TShiftState;X, Y: integer);

begin

with Imagel.Canvas do

case Button of {если нажата}

mbLeft: MoveTo(X,Y);{левая клавиша, то рисуем линию}

mbRight: FloodFill(X,Y, Pixels[X,Y], fsSurface);{закрашиваем область}

end;

end;

Внесем теперь некоторые усовершенствования. Во-первых, с помощью компонента TColorGrid мы можем изменять и цвет линии. Для этого достаточно в обработчик события OnChange добавить строку:

Imagel.Canvas.Pen.Color:=ColorGridl.ForegroundColor;

Во-вторых, можем изменять толщину линии. Используем для этого компонент TSpinEdit, расположенный на вкладке Samples. TSpinEdit представляет собой поле ввода, воспринимающее только числовые значения, и стрелки вверх и вниз, с помощью которых пользователь может "прокручивать" в заданных пределах (свойства MinValue и MaxValue) значения в поле ввода. Заметим, что границы, установленные для изменения значения TSpinEdit, можно нарушать при вводе данных с клавиатуры. Если же на этапе выполнения программы стереть содержимое поля ввода, то возникнет ошибка преобразования пустого значения в число. Для предотвращения этих неприятностей можно запретить редактирование с клавиатуры значения поля ввода (свойство EditorEnabled установить в False).

Напишем обработчик события OnChange для объекта SpinEditl:

procedure TForml.SpinEditlChange(Sender: TObject) ;

begin

Imagel .Canvas .Pen. Width :=SpinEditl .Value;

end;
Дополнительные задания:

Задание1. Дополнить проект меню с пунктами "Открыть рисунок" и "Сохранить рисунок" для работы с графическими файлами.

Задание 2. Поместить на форму кнопку "Случайный выбор цвета". При нажатии на кнопку цвет формы изменяется случайным образом.

Задание 3. Поместить на форму два поля ввода и кнопку "Переслать". При нажатии на кнопку текст из первого поля ввода переписывается во второе, то есть исчезает в первом поле и появляется во втором.

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

Задание 4. Поместить на форму два поля ввода и кнопку "Обменять". При нажатии на кнопку текст из первого поля ввода переписывается во второе, а из второго в первое.

Задание 5. Поместить на форму два поля ввода и кнопку со стрелкой ">>". При нажатии на кнопку текст из левого поля ввода переписывается в правое, при этом стрелка на кнопке изменяет свое направление. Если теперь нажать кнопку еще раз, то текст из правого поля перепишется в левое, а стрелка снова изменит свое направление.

Комментарий. Здесь кнопка имеет два разных состояния, которые различаются направлением ее действия. Значит, прежде чем выполнять действия по пересылке, необходимо выяснить состояние кнопки. Простейший вариант - использовать надпись на кнопке. Другой вариант - использовать некоторую переменную, изменение которой отражает изменение состояния кнопки. Это может быть переменная, введенная программистом, или свойство Tag для кнопки (целое значение Tag - так, на всякий случай - есть в любом элементе управления).

Задание 6. Поместить на форму панель, два поля ввода и кнопку "Объединить". При нажатии на кнопку текст из первого поля ввода через пробел объединяется с текстом из второго поля и выводится на панель.

Комментарий. Можно обойтись без кнопки, если использовать событие OnChange для поля ввода, которое наступает при изменении текста в поле ввода. Чтобы не писать аналогичную процедуру для второго поля ввода, можно в Инспекторе объектов на вкладке Events (События) выбрать в качестве обработчика события уже написанную процедуру EditlChange.

Задание 7. Поместить на форму панель без текста. При движении мышки над панелью на ней появляется текст "Ой, щекотно!". При уводе мышки с панели текст исчезает.

Комментарий. Кажется, что достаточно написать обработчик события OnMouseMove для панели:

procedure TForml.PanellMouseMove(Sender: TObject;Shift: TShiftState; X, Y: integer);

begin

Panell .Caption: = 'Oй, щекотно!';

end;

Однако это решает только первую часть задания. Чтобы текст при уводе мышки пропадал, необходимо написать аналогичный обработчик для самой формы:

Задание 8. Поместить на форму панель и кнопку "Счетчик нажатий". При запуске программы на панели находится нулевое значение. При каждом нажатии на кнопку значение счетчика увеличивается на единицу.

Комментарий. Первый вопрос, на который нужно ответить перед написанием кода: "Где хранить значение счетчика?". И снова можно воспользоваться свойством Tag для кнопки Buttonl (или панели Panell):

procedure TForml.ButtonlClick(Sender: TObject);

var S: string;

begin

with Buttonl do

begin Tag:=Tag+l;

Panell. Caption :=IntToSt.r (Tag) ;

end;

end;

IntToStr - функция, которая возвращает символьное представление целого числа. Она удобнее, чем процедура Str, которая имеется в языке Pascal.

Начальное значение переменной Tag равно нулю, однако если мы при разработке формы не установим правильно свойство Panell.Caption, то при запуске программы символ "О" на панели не появится. При желании можно задать свойство Panell. Caption и позже - на этапе создания формы приложения (событие OnCreate). Напишем обработчик этого события:

procedure TForml.FormCreate(Sender: TObject);

begin

Panell.Caption:= IntToStr(Buttonl.Tag);

end;

В этом случае вся необходимая информация содержится в одном месте, что облегчает модификацию проекта.

Задание 9. Добавьте к предыдущему проекту кнопку "Сброс", которая устанавливает значение счетчика в на­чальное состояние.

Комментарий. Если начальное состояние известно заранее (например, нулевое значение), то обработчик для кнопки "Сброс" пишется легко:

procedure TForml.Button2Click(Sender: TObject);

begin

Buttonl.Tag:=0;

Panell.Caption:='0 ;

end;

Однако если мы заранее не устанавливаем начальное значение; а берем его из свойства Tag, то возникает проблема: где хранить это значение? Используем для этого вспомогательную переменную start. Ее можно разместить в описании класса TForml - в разделах private или public или непосредственно в разделе var модуля Unitl. Инициализируем значение переменной start:=Button1.Tag; в самом начале работы программы - в процедуре TForml.FormCreate, а используем - в обработчике для кнопки "Сброс":

procedure TForml.Button2Click(Sender: TObject);

begin

with Buttonl do

begin Tag:=start;

Panel1.Caption:=IntToStr(Tag);

end;

end;

Задание 10. Поместить на форму панель с текстом и, две кнопки: "Показать" и "Спрятать". При нажатии на кнопку "Спрятать" текст на панели исчезает, при нажатии на кнопку "Показать" - появляется. Кнопка, нажимать на которую в конкретной ситуации нет смысла, становится неактивной. Напомним, что "включение" и "выключение" кнопки достигается установкой свойства Enabled в True или False.

Задание 11. Поместить на форму панель с текстом и одну кнопку. Вначале на кнопке написано "Спрятать". При нажатии на кнопку текст на панели исчезает, а на самой кнопке появляется слово "Показать". Теперь уже при нажатии на кнопку текст появляется на панели, а на кнопке появляется слово "Спрятать".

Комментарий. Все, что нужно для написания проекта, мы уже использовали в предыдущих заданиях. Начальное значение свойства Panell .Caption запоминаем в глобальной переменной Stxt при создании формы. Остальное делается в обработчике нажатия кнопки:

procedure TForml.ButtonlClick(Sender: TObject);

begin

if Tag=0 then

begin Panell.Caption:=''; Buttonl.Caption:='Показать'; Tag:=l; end

else begin Panell.Caption:=Stxt; Buttonl.Caption:='Спрятать'; Tag:=0; end;

end;

Задание 12. Поместить на форму панель с двумя кнопками: "Влево" и "Вправо". При нажатии на кнопку "Влево" вся панель перемещается по форме влево (если это возможно). При нажатии на кнопку "Вправо" вся панель перемещается по форме вправо (если это возможно).

Комментарий. Движение панели влево обеспечивается следующей строкой в обработчике нажатия кнопки "Влево":
  1   2   3

Похожие:

Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания по выполнению контрольной работы по курсу «Основы...
Методические указания по выполнению контрольной работы по курсу «Основы алгоритмизации и программирования» для студентов заочного...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания к лабораторной работе по дисциплине «Программирование...
Данные методические указания относятся к лабораторной работе по дисциплине «Программирование и основы алгоритмизации»
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания к лабораторной работе по дисциплине «Программирование...
Данные методические указания относятся к лабораторной работе по дисциплине «Программирование и основы алгоритмизации»
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания по оформлению курсовой работы 3 Введение 3
Цель курсовой работы закрепление и углубление знаний, полученных при изучении курса «Основы алгоритмизации и программирования» посредством...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания по проведению учебной практики по междисциплинарному...
«Экономика и бухгалтерский учет» (по отраслям) содержат цели и задачи учебной практики и методические указания по её выполнению,...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconОсновы алгоритмизации и программирования (язык С/C++)
Основная цель курса – научить слушателей основам программирования на алгоритмическом языке высокого уровня С/С++
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconПрограмма повышения квалификации учителей информатики и икт общеобразовательных...
Икт общеобразовательных учреждений, реализующих учебные курсы «Основы алгоритмизации и программирования на языке Pascal», «Объектно-ориентированное...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconМетодические указания по выполнению курсовой работы по дисциплинам...
С развитием информатики информация стала играть иную роль в обществе. Информация становиться стратегическим ресурсом общества, аналогичным...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconПрограмма, методические указания и контрольные задания по курсу «основы...
Целью изучения курса является: ознакомление студентов с ЭВМ как инструментом исследования, автоматизации обработки данных и документооборота,...
Методические указания проведения практики по дисциплине «Основы алгоритмизации и программирования» iconРецензия на контрольную работу по дисциплине «Основы алгоритмизации и языки программирования»
Ваша работа идентична работе другого студента. Данное обстоятельство не позволяет сделать однозначного вывода относительно вашего...

Вы можете разместить ссылку на наш сайт:
Школьные материалы


При копировании материала укажите ссылку © 2014
контакты
skachate.ru
Главная страница