
- •Глава 1. Основы программирования Программа
- •Этапы разработки программы
- •Спецификация
- •Разработка алгоритма
- •Алгоритм и программа
- •Компиляция
- •Язык программирования Delphi
- •Тип данных
- •Целый тип
- •Вещественный тип
- •Символьный тип
- •Строковый тип
- •Логический тип
- •Переменная
- •Константы
- •Числовые константы
- •Строковые и символьные константы
- •Логические константы
- •Именованная константа
- •Инструкция присваивания
- •Выражение
- •Тип выражения
- •Выполнение инструкции присваивания
- •Стандартные функции
- •Математические функции
- •Функции преобразования
- •Использование функций
- •Ввод данных
- •Ввод из окна ввода
- •Ввод из поля редактирования
- •Вывод результатов
- •Вывод в окно сообщения
- •Процедуры и функции
- •Структура процедуры
- •Структура функции
- •Запись инструкций программы
- •Стиль программирования
- •Глава 2. Управляющие структуры языка Delphi
- •Условие
- •Инструкция if
- •Листинг 2.1. Вычисление стоимости телефонного разговора
- •Листинг 2.2.Контроль веса
- •Инструкция case
- •Листинг 2.3. Пересчет веса из фунтов в килограммы
- •Листинг 2.4. Формирование поясняющего текста
- •Листинг 2.5. Вычисление даты следующего дня (фрагмент)
- •Инструкция for
- •Инструкция while
- •Листинг 2. 6. Вычисление числа я
- •Инструкция repeat
- •Листинг 2.7. Простое число
- •Инструкция goto
- •Листинг 2.8. Простое число (использование инструкции goto)
- •Глава 3. Символы и строки
- •Символы
- •Листинг 3.1. Таблица символов
- •Операции со строками
- •Функция length
- •Процедура delete
- •Функция роs
- •Функция сору
- •Глава 4. Консольное приложение
- •Глава 5. Массивы
- •Объявление массива
- •Операции с массивами
- •Вывод массива
- •Листинг 5.1. Инициализация и вывод массива
- •Ввод массива
- •Использование компонента StringGrid
- •Листинг 5.2. Ввод и обработка массива целых чисел
- •Листинг 5.3. Процедура обработки события OnKeyPress
- •Листинг 5.4. Ввод и обработка массива дробных чисел
- •Использование компонента Memo
- •Листинг 5.5. Ввод массива строк из компонента Memo
- •Поиск минимального (максимального) элемента массива
- •Листинг 5.6. Поиск минимального элемента массива
- •Поиск в массиве заданного элемента
- •Алгоритм простого перебора
- •Листинг 5.7. Поиск в массиве
- •Метод бинарного поиска
- •Листинг 5.8. Бинарный поиск в массиве
- •Сортировка массива
- •Листинг 5.9. Сортировка массива простым выбором
- •Сортировка методом обмена
- •Листинг 5.10. Сортировка массива методом обмена
- •Многомерные массивы
- •Листинг 5.11. Инициализация таблицы
- •Листинг 5.12. Обработка двумерного массива
- •Ошибки при использовании массивов
Листинг 2.4. Формирование поясняющего текста
unit. rub_l; interface
uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm) Label1: TLabel;
Editl: TEdit; Label2: TLabel;
procedure EditlKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// нажатие клавиши
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char) var
n : integer; // число
r : integer; // остаток от деления n на 10
text: string[10]; // формируемый поясняющий текст
begin
if Key = chr(VK_RETURN) then
begin
n := StrToInt(Editl.Text); if n > 100
then n:=n mod 100;
if (n >= 11) and (n <= 14) then
text:=' рублей' else begin
r:= n mod 10; case r of
1: text:=' рубль'; 2 .. 4: text:=' рубля';
else text:=' рублей';
end;
end;
Label2.Caption := IntToStr(n)+ text; end;
end;
end.
Рассмотрим фрагмент программы (листинг 2.5), которая вычисляет дату следующего дня, используя сегодняшнюю дату, представленную тремя переменными: day (день), month (месяц) и year (год).
Сначала с помощью инструкции сазе проверяется, является ли текущий день последним днем месяца. Если текущий месяц — февраль и если текущее число — 28, то дополнительно выполняется проверка, является ли год високосным. Для этого вычисляется остаток от деления года на 4. Если остаток равен нулю, то год високосный, и число 28 не является последним днем месяца.
Если выясняется, что текущий день — последний день месяца, то следующее число — первое. Затем проверяется, не является ли текущий месяц декабрем. Если нет, то увеличивается номер месяца, а если да, то увеличивается номер года, а номеру месяца присваивается значение 1.
Листинг 2.5. Вычисление даты следующего дня (фрагмент)
// вычисление даты следующего дня
var
day: integer; // день
month: integer; // месяц
year: integer; // гОД
last:boolean; // если день — последний день месяца,
// то last = True
r:integer; // если год не високосный, то остаток
// от деления year на 4 не равен нулю
begin
{ переменные day, month и year содержат сегодняшнюю дату }
last := False; // пусть день — не последний день месяца
case month of 4,6,9,11:
if day = 30 then last:= True; 2:
if day = 28 then begin
r:= year mod 4; if r <> 0 then last:= True;
end;
else: if day=31 then last:= True;
end; if last then
begin // последний день месяца day:= 1;
if month =12 then
begin // последний месяц
month:= 1;
year:= year + 1;
end
else month:= month + 1;
end
else day:= day + 1;
// переменные day, month и year // содержат завтрашнюю дату
end;http://computers.plib.ru/programming/Delphi%207/Glava%202/Index5.htm
Циклы
Алгоритмы решения многих задач являются циклическими, т. е. для достижения результата определенная последовательность действий должна быть выполнена несколько раз.
Например, программа контроля знаний выводит вопрос, принимает ответ, добавляет оценку за ответ к сумме баллов, затем повторяет это действие еще и еще раз, и так до тех пор, пока испытуемый не ответит на все вопросы.
Другой пример. Для того чтобы найти фамилию человека в списке, надо проверить первую фамилию списка, затем вторую, третью и т. д. до тех пор, пока не будет найдена нужная фамилия или не будет достигнут конец списка.
Алгоритм, в котором есть последовательность операций (группа инструкций), которая должна быть выполнена несколько раз, называется циклическим, а сама последовательность операций именуется циклом.
В программе цикл может быть реализован при помощи инструкций for,
while и repeat.