- •Сборник МетодическиХ указаниЙ по выполнению лабораторных работ
- •Информатика
- •Введение. Назначение Delphi и его особенности
- •Начало работы
- •Меню и команды Delphi
- •Полоска кнопок быстрого доступа SpeedBar
- •Локальные меню SpeedMenu
- •Работа с формами
- •Палитра компонентов
- •Система подсказок
- •Навигатор кода
- •Написание кода
- •Справочная система
- •Структура проекта
- •Окончательная настройка приложения
- •Событие и процедура обработки события
- •Запуск программы
- •Предупреждения и подсказки
- •Ошибки времени выполнения
- •Компиляция
- •Отладка программы
- •Файлы, создаваемые системой
- •Репозиторий объектов и его страницы
- •Тула 2014 г.
- •Создание приложения в среде разработки Delphi
- •Первый проект
- •Компоненты
- •Начальные сведения о программах на языке Pascal
- •Комментарии
- •Директивы компилятора
- •Идентификаторы
- •Переменные и типы данных
- •Константы
- •Неименованные константы
- •Нетипизированные константы
- •Типизированные константы
- •Простейшие операторы
- •1. Простейшие арифметические и логические операции
- •2. Линейные программы
- •Тула 2014 г.
- •Сущность задач с ветвлениями
- •Логический тип данных
- •Организация ветвлений
- •Объединение операторов
- •Сложные условия
- •Множественное ветвление
- •Применение оператора-переключателя Case
- •Тула 2014 г.
- •Сущность задач с циклами
- •Цикл с предусловием
- •Вечный цикл
- •Цикл с постусловием
- •Цикл с переменной
- •Дополнительные операторы управления циклами
- •Вложенные циклы
- •Инструкция goto
- •1. Циклические программы
- •2. Задачи, решаемые методом перебора.
- •Тула 2014 г.
- •Статические массивы
- •Многомерные статические массивы
- •Ввод-вывод массивов
- •Считывание массива из файла
- •Поиск максимума и минимума
- •Пример программы
- •Динамические массивы
- •Создание динамических массивов
- •Многомерные динамические массивы
- •1. Одномерные массивы
- •2. Двумерные массивы
- •Тула 2014 г.
- •Процедуры и функции
- •Что такое функция?
- •Функция: туда и обратно
- •Процедуры
- •Передача данных в процедуры
- •Вложенные процедуры и функции
- •Тула 2014 г.
- •Символьный тип
- •Символ-константа и строка-константа Неименованные константы
- •Нетипизированные константы
- •Типизированные константы
- •Действия с символами Операции
- •Стандартные функции и процедуры обработки строк
- •Операции со строками Сравнения
- •Обращение к компонентам строки
- •Конкатенация
- •Удаление символов в строке
- •Определение позиции подстроки
- •Выделение подстроки
- •Множества
- •Описание множеств
- •Множество-константа Неименованная константа
- •Нетипизированная константа
- •Типизированная константа
- •Операции с множествами
- •Представление множеств массивами
- •Представление множеств линейными массивами
- •Представление множеств битовыми массивами
- •1. Строковый тип данных
- •2. Типы данных «множество» и «запись»
- •Тула 2014 г.
- •Введение
- •Что такое файл?
- •Когда нужно использовать файлы
- •Разновидности файлов
- •Описание файлов
- •Текстовые файлы
- •Оперирование файлами
- •Назначение файла
- •Открытие файла
- •Закрытие файла
- •Считывание из файла
- •Запись в файл
- •Пробельные символы
- •Пример использования файлов
- •Изменение реакции на ошибку
- •Бинарные файлы
- •Типизированные файлы
- •Нетипизированные файлы
- •Подпрограммы обработки директорий
- •Применимость подпрограмм обработки файлов
- •Индивидуальные задания
- •Свойства в Delphi
- •Вложенных свойств
- •Управление свойствами визуальных компонент в режиме выполнения
- •Программа shapedem2
- •Тула 2014 г.
- •Графические компоненты
- •Построение графиков с помощью компонентной технологии
- •Тула 2014 г.
- •Создание меню
- •Использование компонента tTimer
- •Тула 2014 г.
- •Работа с компонентом RichEdit
- •Тула 2014 г.
- •Тула 2014 г.
- •Что такое мультимедиа
- •Мультимедиа в Delphi
- •Компонент tMediaPlayer
- •Два вида программ мультимедиа
- •Пример программы с мультимедиа
Дополнительные операторы управления циклами
В теле всех трех циклов можно применять два специальных оператора: BREAK и CONTINUE. Оператор BREAK вызывает досрочный выход из цикла. Например, вернемся к задаче суммирования ряда натуральных чисел 1+2+3+… Мы хотим узнать, на каком числе этого ряда его сумма превысит 100. Программа с BREAK выглядит так:
VAR s:WORD; { сумма }
i: WORD; { текущее число ряда }
BEGIN
s:=0; { сумму обязательно обнуляем!!! }
i:=1; { начинаем суммировать с единицы }
WHILE TRUE DO { вечный цикл?! Не совсем…}
BEGIN
s:=s+i;
i:=i+1;
IF s>100 THEN
BREAK
END;
Label1.Caption:='Сумма превысит 100 при i='+IntToStr(i)
end;
Наличие оператора BREAK позволило смело совершить программистское преступление – написать вечный цикл WHILE TRUE DO. Прерывание цикла при s>100 обеспечивает оператор BREAK.
Оператор CONTINUE, наоборот, переходит в начало цикла и начинает следующую итерацию. Это позволяет пропустить часть итераций. Например, мы хотим вывести на экран все целые числа от 1 до 100, которые не делятся на 3. Делается это так:
VAR i:BYTE
BEGIN
FOR i:=1 TO 100 DO
BEGIN
IF (i MOD 3=0) THEN
CONTINUE;
Memo1.Lines.Add(IntToStr(i))
END;
Обратите внимание на способ проверки делимости. Операция MOD вычисляет остаток от деления нацело. Скажем, 10 MOD 3=1. Если одно число нацело делится на другие, то остаток будет равен нулю. В этом случае условие в операторе IF оказывается истинным и выполняется оператор CONTINUE. Он пропускает остаток тела цикла и снова возвращается к оператору FOR. Если же значение переменной i не делится на три, тело цикла выполняется дальше.
Операторы BREAK и CONTINUE являются вспомогательными – любой алгоритм можно запрограммировать и без них, но во многих случаях они оказываются удобными.
Вложенные циклы
Внутри одного цикла может находиться другой, внутри его – еще один и т.д. Такая "матрешка" нужна для решения многих задач. Рассмотрим пример вложенных циклов. Пусть задана прямоугольная решетка на плоскости размером 1020. Нужно вывести на экран координаты всех узлов такой решетки. Делается это так:
VAR i, j: WORD;
BEGIN
FOR i:=1 TO 10 DO
FOR j:=1 TO 20 DO
Memo1.Lines.Add('X='+IntToStr(i)+' , Y='+IntToStr(j))
В данном случае BEGIN…END не нужны: внутри внешнего цикла находится только один оператор FOR j:=1 TO 20. Кстати, вложенными могут быть циклы всех трех типов.
На блок-схеме приведенная программа будет выглядеть следующим образом (рис. 4):
Рис. 4. Обозначение вложенного цикла на блок-схемах.
Инструкция goto
Инструкции if и case используются для выбора последовательности инструкций программы в зависимости от некоторого условия, поэтому их иногда называют инструкциями условного перехода. Помимо этих инструкций управления ходом выполнения программы существует еще одна — инструкция безусловного перехода goto.
В общем виде инструкция goto записывается следующим образом:
goto Метка
где метка — это идентификатор, находящийся перед инструкцией, которая должна быть выполнена после инструкции goto.
Метка, используемая в инструкции goto, должна быть описана в разделе меток программы, который начинается словом label и располагается перед разделом описания переменных.
Метка помечает какое-либо место в тексте программы. Метками могут быть числа от 0 до 9999 или идентификаторы, которые в этом случае уже нельзя использовать для каких-либо иных нужд. Все метки должны быть описаны в специальном разделе label:
label <список_всех_меток_через_запятую>;
Меткой может быть помечен любой оператор программы
<метка>: <оператор>;
В тексте программы метка ставится перед инструкцией, которая должна быть выполнена после инструкции goto. Сразу после метки ставится двоеточие.
Ниже приведена измененная процедура проверки простого числа, в которой для перехода к последней инструкции процедуры, в случае если пользователь введет неверные данные, используется инструкция goto.
procedure TForml.ButtonlClick(Sender: TObject);
label { раздел объявления меток } bye;
var
n: integer; { проверяемое число }
d: integer; { делитель }
r: integer; { остаток от деления n на d}
begin
n;=StrToInt(Editl.text) ;
if n <= 0 then begin
MessageDlg('Число должно быть больше нуля.', mtError,[mbOk],0) ;
Editl.text:= ' ';
goto bye;
end;
{ введено положительное число } d:= 2; { сначала будем делить на два }
repeat
r:= n mod d;
if r <> 0 { n не разделилось нацело на d } then d:= d + 1;
until r = 0;
label2.caption:=Editl.text ;
if d = n
then label2.caption:=label2.caption
+ ' простое число.' else label2.caption:=label2.caption
+ ' обычное число.' ;
bye:
end;
В литературе по программированию можно встретить суждения о недопустимости применения инструкции goto, так как она приводит к запутанности программ. Однако с категоричностью таких утверждений согласиться нельзя. В некоторых случаях использование goto вполне оправдано. Приведенный пример, когда goto используется для аварийного завершения процедуры, относится именно к таким случаям.
3. ОБЪЕКТЫ ИССЛЕДОВАНИЯ, ОБОРУДОВАНИЕ, МАТЕРИАЛЫ И НАГЛЯДНЫЕ ПОСОБИЯ
3.1. IBM – совместимый компьютер.
3.2. Установленная операционная система Windows.
3.3. Установленное приложение Borland Delphi.
3.4. Справочная система приложения Borland Delphi.
4. ЗАДАНИЕ НА РАБОТУ
4.1. Изучение теоретические положения работы по программированию в среде Borland Delphi.
4.2. Выполнение индивидуального задания преподавателя по программированию в пределах вопросов, рассмотренных в данной лабораторной работе.
5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
5.1. Ознакомиться с теоретическими положениями данной лабораторной работы.
5.2. Выполнить индивидуальное задание преподавателя по программированию (по заданиям приложения).
5.3. Оформить отчет по работе.
5.4. Защитить лабораторную работу путем ответа на вопросы преподавателя.
6. СОДЕРЖАНИЕ ОТЧЕТА
6.1. Описание цели работы.
6.2. Основные теоретические положения работы
6.3. Содержание индивидуального задания преподавателя по программированию.
6.4. Описание методики выполнения индивидуального задания.
7. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
7.1. Delphi 7 : [наиболее полное руководство] / А. Д. Хомоненко [и др.];под общ.ред.А.Д.Хомоненко .— СПб. : БХВ - Петербург, 2007 .— 1216с. : ил. (7 экз.)
7.2. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П.Марков .— СПб.: БХВ -Петербург, 2004 .— 784c. : ил. (1 экз.)
7.3 Осипов Д. Delphi. Профессиональное программирование. - СПб.: Символ-Плюс, 2006. -1056 с., ил.
ПРИЛОЖЕНИЕ
Индивидуальные задания
