Введение в теорию программирования
Вид материала | Программа |
- К. Е. Карасёв Введение в теорию конечных автоматов, 593.28kb.
- Джон Р. Хикс. "Стоимость и капитал", 4314.44kb.
- А. В. Корицкий введение в теорию человеческого капитала учебное пособие, 1340.03kb.
- Лекция 1 Введение в современные технологии программирования, 526.22kb.
- Г. В. Мелихов миф. Идентичность. Знание: введение в теорию социально-антропологических, 741.74kb.
- Введение Предмет "Программирование", 19.2kb.
- Анализ и планирование трудовых показателей Аудит и контроллинг персонала Введение, 12.45kb.
- Государственный университет высшая школа экономики л. Л. Любимов введение в экономическую, 3625.38kb.
- Дополнительный материал к курсу лекций Введение в теорию межкультурной коммуникации, 753.88kb.
- Лекция 3 Инструментальное по. Классификация языков программирования, 90.16kb.
{инструкции}
unti1 условие
где условие — выражение логического типа, определяющее условие завершения цикла.
Инструкция repeat выполняется следующим образом:
5.1. Сначала выполняются находящиеся между repeat и until инструкции тела цикла.
5.2. Затем вычисляется значение выражения условие. Если условие ложно (значение выражения условие равно False), то инструкции тела цикла выполняются еще раз.
5.3. Если условие истинно (значение выражения условие равно True), то выполнение цикла прекращается.
Таким образом, инструкции цикла, находящиеся между repeat и unti1, выполняются до тех пор, пока условие ложно (значение выражения условие
равно False).
По представленной блок-схема на рисунке А7 фрагмент программы будет выглядеть следующим образом:
i := 1;
Summa := 0;
REPEAT
Summa := Summa + i;
i := i + 1;
UNTIL i > 10;
Используя данный фрагмент программы, можно рассчитать сумму всех чисел от 1 до 10.
5. Оператор выбора Case (дается для ознакомления, при выполнении РГР не используется)
case Селектор of список1:
begin
{инструкции 1}
end;
список2:
begin
{инструкции 2}
end;
списокМ:
begin
{инструкции N}
end;
else
begin
{инструкции}
end;
end;
где:
- Селектор — выражение, значение которого определяет дальнейший ход выполнения программы (т. е. последовательность инструкций, которая будет выполнена);
- Список N — список констант. Если константы представляют собой диапазон чисел, то вместо списка можно указать первую и последнюю константу диапазона, разделив их двумя точками. Например, список 1, 2, 3, 4, 5, 6 может быть заменен диапазоном 1..6.
Выполняется инструкция case следующим образом:
1. Сначала вычисляется значение выражения-селектора.
2. Значение выражения-селектора последовательно сравнивается с константами из списков констант.
3. Если значение выражения совпадает с константой из списка, то выполняется соответствующая этому списку группа инструкций. На этом выполнение инструкции саsе завершается.
4. Если значение выражения-селектора не совпадает ни с одной константой из всех списков, то выполняется последовательность инструкций, следующая за else.
Синтаксис инструкции case позволяет не писать else и соответствующую последовательность инструкций. В этом случае, если значение выражения не совпадает ни с одной константой из всех списков, то выполняется следующая за case инструкция программы.
Типы данных
Типы данных определяют диапазон принимаемых значений, объем памяти, необходимый для записи переменной или константы и множество допустимых действий. Типы данных встроены в среду Delphi или определяются самим программистом. Также есть простые и сложные типы данных (сложные состоят из множества простых).
Язык Delphi поддерживает различные целые и вещественные типы данных, например, shortint, Byte, word, single, Double, Extended, comp и др.. В качестве основных от целых возьмем Integer, от вещественных – Real.
Таблица A.1. Типы данных Delphi
Тип | Диапазон | Объем памяти |
Integer (целый) | от-2 147 483 648 - до +2 147 483 647 | 4 байта |
Real (вещественный) | от 5.0x10-324 – до 1.7x10308 | 8 байт (15-16 значащих разрядов) |
Boolean (логический) | True=1, False=0 | 1 байт |
Char (символьный) | 1 символ таблицы ANSI | 1 байт |
String (строковый) | символы таблицы ANSI | Кол-во символов+1 байт |
Array (массив) | ИмяМассива: array [размерность] of Тип Данных | Зависит от размерности и типа данных |
Записи, файлы, классы и другие типы данных не входят в объем изложения работы.
РАСЧЕТНО-ГРАФИЧЕСКАЯ РАБОТА (Delphi-проект 1)
Программа расчета сумм четных и нечетных чисел (учебный вариант)
Сумма вычисляется по формуле
Цель работы. Написать фрагмент программы по заданной блок-схеме (рис. Б1).
Рис. Б1. Блок-схема расчета сумм четных и нечетных чисел
Пояснение. Delphi-проект представляет собой форму, на которой в определенном порядке расположены следующие объекты: панели, кнопки, текстовые поля, метки (рис. Б2).
При запуске программы в текстовое поле вводится количество вводимых чисел (на блок-схеме рис. Б1 - это ввод N, в программе - рис. Б2 № 9). После этого нажимается кнопка “Вычислить”. Далее в появившемся окне вводится целое число. Такая процедура повторяется N раз. Результат выводится в метки на форму (рис. Б2 №№ 11,13).
Алгоритм выполнения работы
1. Создать рабочую папку в папке “Мои документы” по формату: фамилия исполнителя латинскими буквами с добавлением слова delphi1 (например, если исполнитель Иванов, то рабочая папка будет называться ivanovdelphi1)
2. Запустить Delphi (Меню ПУСК ПРОГРАММЫ BORLAND DELPHI 7 DELPHI 7).
3. Сохранить проект в рабочую папку по нижеуказанному алгоритму:
3.1. Меню Delphi File Save Project As. По умолчанию откроется сначала окно сохранения модуля Save Unit1 As, где необходимо указать в поле ПАПКА свою рабочую папку, все остальное можно оставить без изменения и нажать кнопку Сохранить. Тогда при сохранении имя модуля будет Unit1.pas. Этот файл содержит непосредственно коды, определяющие “поведение” компонентов на форме. Далее автоматически открывается окно сохранения проекта Save Project1 As.
3.2. Сохранить файл проекта также в свою рабочую папку, предварительно выполнив следующее требование: имя файла проекта будет соответствовать фамилии и инициалам разработчика программы, написанными латинскими буквами без пробелов с добавлением цифры 1 (например, если разработчик программы Иванов Петр Сидорович, то файл будет называться так: ivanovps1.dpr, расширение dpr будет присвоено также по-умолчанию). При компилировании проекта (транслировании в машинные коды через меню Run команда Run) по имени файла проекта будет создан запускающий файл с расширением EXE (в нашем случае – ivanovps1.exe), который затем будет представлен преподавателю для защиты работы. Рекомендуется сохранять все файлы проекта, это даст возможность при необходимости редактировать проект. В случае ошибочной работы с Delphi (например, открытие посторонних компонентов, “зависание”) программу можно закрыть и запустить заново двойным щелчком мыши по файлу dpr (в нашем случае – ivanovps1.dpr).
4. Собрать на форме компоненты, указанные на рисунке Б2 из библиотеки Delphi (страница Standard).
Рис. Б2. Форма программы
4.1. На рисунке Б2 № 1 – это сама форма, она создана автоматически. № 2 – компонент Panel. Установить его можно следующим образом:
4.1.1. Навести указатель мыши на компонент закладки Standard (рис. А1, № 2), через 1 секунду высветиться подсказка (например, MainMenu, PopupMenu, Label). Перемещаться по компонентам библиотеки, пока не высветится подсказка Panel.
4.1.2. Включить мышью компонент Panel.
4.1.3. Перевести указатель мыши на форму (рис. Б2 №1) и однократно щелкнуть мышью. В результате выполненной операции на форме откроется объект Panel1 (рис. Б3).
Рис. Б3. Вставка компонента Panel на форму, обрамление вокруг компонента указывает на то, что он активизирован; в центре компонента высвечивается его название с номером 1 (”Panel1”), если будет вставлен еще один компонент Panel, цифра увеличиться на одни (“Panel2”) и т.д.
5. Установить в Object Inspeсtor (Инспектор объектов, рис. А1, № 5) для свойств Align, Height, Width, Caption (закладка Properties) следующие параметры (компонент Panel1 должен быть активизирован, вокруг него высвечивается обрамление – рис. Б3):
Panel1 (рис. Б2, №2) | |
Properties: | |
Align | alTop |
Height | 80 |
Caption | удалить текст в поле Caption |
5.1. В результате выполненной операции компонент Panel автоматически переместится в вверх формы (рис. Б4).
Рис. Б4. Компонент Panel после установления заданных свойств
5.2. Выполнить сохранение проекта – Меню File Команда Save (файлы проекта уже заданы, мы только сохраняем внесенные изменения. Данную процедуру рекомендуется выполнять после каждой операции заполнения формы новыми компонентами).
5.3. Выполнить первый запуск программы (процедура компиляции и создания запускающего файла с расширением EXE) Меню Run –> команда Run. В результате выполнения данной процедуры запуститься программа, которая на экране монитора будет представлена в виде формы с панелью (рис. Б5).
Рис. Б5. Форма с панелью при запуске программы (№ 1 – Panel, № 2 – кнопка закрытия запущенной программы и возврата в Delphi)
5.4. Если получилось что-то иное (например, форма закрыла верхнюю часть экрана, или вообще высветилась ошибка), то рекомендуется на данном этапе закрыть программу (см. следующий пункт), закрыть Delphi, очистить рабочую папку (в нашем примере ivanovpsdelphi1), затем запустить Delphi и заново начать проект (пункты 2-5).
5.5. Закрыть программу с формой и панелью, щелкнув мышью по кнопке с крестом на форме (рис. Б5, № 2). Таким образом выполнится возврат в стадию конструирования объектов на форме.
6. Установить компоненты Label1, Label2, Label3 (рис. Б2, №№ 3, 4, 5).
7. Установить в Object Inspeсtor (Инспектор объектов, рис. А1, № 5) для свойства Caption компонента Label1 следующие параметры (компонент Label1 должен быть активизирован, вокруг него высвечивается обрамление):
Label1 (рис. Б2, №3) | |
Properties: | |
Caption | Расчетно-графическая работа по информатике (Delphi ,часть 1) |
8. Установить в Object Inspeсtor для компонента Label2 следующие параметры (компонент Label2 должен быть активизирован, вокруг него высвечивается обрамление):
Label2 (рис. Б2, №4) | |
Properties: | |
Caption | Программа расчета сумм четных и нечетных чисел |
9. Установить в Object Inspeсtor для компонента Label3 следующие параметры (компонент Label3 должен быть активизирован, вокруг него высвечивается обрамление):
Label3 (рис. Б2, №5) | |
Properties: | |
Caption | Разработчик: (вводятся данные о разработчике проекта, например, студент 2 курса, 3 факультета, 1 группы Иванов Петр Сидорович) |
10. Установить компонент Button1 (рис. Б2, № 6).
11. Установить в Object Inspeсtor для компонента Button1 следующие параметры (компонент Button1 должен быть активизирован, вокруг него высвечивается обрамление):
Button1 (рис. Б2, №6) | |
Properties: | |
Height | 25 |
Width | 75 |
Top | 96 |
Caption | Выход |
12. Определить в Object Inspeсtor для компонента Button1 событие (Events) – OnClick. Это можно сделать двумя способами.
1 Способ. Мышью дважды щелкнуть по компоненту Button1 на форме. Автоматически в редакторе кодов создастся процедура обработки события
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
2 Способ. В Object Inspeсtor мышью активизировать закладку Events. Затем справа от поля OnClick дважды щелкнуть мышью. Автоматически в редакторе кодов создастся процедура обработки события
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
12.1. Ввести между Begin и End команду Close (см. ниже), поставить символ “точка с запятой” (;) в конце строки. Символ “точка с запятой” является обязательным. Далее дать команду меню File –> Save. Выполнить команду меню Run Run. Запустится проект, который кнопкой “Выход” должен закрыться.
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
13. Перейти на форму из редактора кодов нажатием клавиши F12 и установить компонент Button2 (рис. Б2, № 7).
14. В Object Inspeсtor перейти на закладку Properties и для компонента Button2 установить следующие параметры (компонент Button2 должен быть активизирован, вокруг него высвечивается обрамление):
Button2 (рис. Б2, №7) | |
Properties: | |
Height | 25 |
Width | 75 |
Top | 128 |
Caption | Вычислить |
14. Установить компоненты Label4, Edit1, Label5, Label6, Label7, Label8 (рис. Б2) и определить в Object Inspeсtor следующие свойства:
Label4 (рис. Б2, №8) | |
Properties: | |
Caption | Количество чисел: |
Edit1 (рис. Б2, №9) | |
Properties: | |
Text | Удалить текст в поле Text |
Label5 (рис. Б2, №10) | |
Properties: | |
Caption | Сумма четных чисел: |
Label6 (рис. Б2, №11) | |
Properties: | |
Caption | 0 |
Label7 (рис. Б2, №12) | |
Properties: | |
Caption | Сумма нечетных чисел: |
Label8 (рис. Б2, №13) | |
Properties: | |
Caption | 0 |
15. Определить в Object Inspeсtor для компонента Button2 событие (Events) – OnClick, используя один из способов, описанных в пункте 12.
16. Вставить код для кнопки Button2 на событие OnClick (код приводится ниже по тексту в пункте 17, из практических соображений строки пронумерованы, при вводе кодов номера строк не ставить, это будет считаться ошибкой и программа не запустится). Справа от команд даны соответствующие элементы блок-схемы. Прежде чем вводить коды, внимательно изучите пункты 16.1. – 16.9..
16.1. При определении события OnClick редактор кодов Delphi автоматически создал строки 1, 4, 21, 22 (см. ниже по тексту пункт 17).
16.2. В строке 2 служебным словом var (от слова variable - переменный) открывается раздел описания переменных, используемых в процедуре обработки события OnClick. Тип данных interger определяет, что в переменные можно записывать только целые числа. Если необходима переменная для нахождения частного, например, среднего арифметического, дисперсии и.д., то следует указать тип данных real (или ему подобный).
16.3. В строке 3.1. создается целочисленный массив M. В данном случае в нем нет необходимости. Массив необходим, например, для определения дисперсии.
16.4. В строке 5 в переменную N записывается оператором присвоения значение из текстового поля Edit1 (при работе программы). Для упрощения здесь не ставим проверки вводимого значения в поле Edit1, если там при работе программы будет введено не целое число, то это приведет к ошибке.
Так как N – переменная целого типа, а поле Edit1.Text – текстового типа, необходимо использовать функцию преобразования текстового типа данных в целочисленный тип - StrToInt( ). [Сокращение от String To Integer]
В строках 19 и 20 идет обратное преобразование - IntToStr ( ), так как метка label – это строка; для преобразования вещественных переменных в строковые используется функция FloatToStr ( ).
16.5. В строке 6 обнуляются переменные, в которых будут накапливаться суммы (чтобы в них до вычисления не было записано посторонних данных).
16.6. В строке 7 начинается цикл, который будет прокручиваться N раз, так как цикл включает в себя множество операторов, используются операторные скобки begin … end (строки 8 и 18).
16.7. В строке 9 записывается значение в переменную A из окна запроса в работающей программе (также используется функция преобразования текстового значения в целочисленное). Это окно в работающей программе будет появляться N раз. В скобках для функции