
- •Содержание
- •Тема 1. Основные понятия
- •1.2. Задача, алгоритм, программа
- •1.2.Структура модуля исходного кода
- •Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
- •2.1 Линейный блок
- •2.2. Переменные и константы
- •Синтаксис объявления переменной в ObjectPascal
- •Синтаксис объявления именной константы в ObjectPascal
- •Синтаксис объявления переменных в VisualBasic
- •2.3Типыпеременныхиконстант
- •Var1: type definitions;
- •Var2, var3: type definition4;
- •Var4 : typel;
- •2.4. Простые типы данных
- •2.4.1. Порядковые типы
- •Поддиапазонные типы
- •Перечислимые типы
- •Операции над порядковыми типами
- •2.4.2. Целые переменные
- •Integer Shortint Smallint Longint Byte Word Cardinal
- •Физические целые типы
- •Логические целые типы
- •2.4.3. Вещественные переменные
- •Вещественные типы.
- •2.4.4. Строковые переменные
- •2.4.5. Булевы типы
- •Размеры переменных булевых типов
- •2.5. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Передача параметров
- •2.6 Область видимости переменных, констант, процедур и функций
- •2.7 Стандартные функции
- •Функции преобразования типов
- •Математические функции
- •Функции вещественных типов
- •Функции обработки строк
- •Строковые функции
- •2.8 Операции над данными
- •2.9 Приоритеты операций
- •2.10. Структурные типы
- •2.10.1. Записи
- •1: Variantnamel: varianttype3;
- •2, 3: Variantname2: varianttype4;
- •1: (KinfWorker: String[15];
- •2: (PosAdmin: String[20]);
- •2.10.2. Массивы
- •Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
- •Var MyArray: Array [1..10] of Integer;
- •2.10.3. Множества
- •Var MyAlphaSet: CharSet;
- •2.10.4. Файловый тип
- •2.11. Указательные типы
- •Средства работы с указателями
- •2.12. Процедурные типы
- •2.13. Тип variant
- •Тема 3. Блок принятия решений: операторы ветвления
- •3.1 Оператор if
- •If условие1 then
- •3.3Операторcase
- •Тема 4. Цикличекий блок: операторы повторяющихся действий
- •4.1.Цикл for
- •4.2. Циклы while и repeat
- •4.3. Операторы break и cont inue
- •Тема 5. Работа с текстовыми файлами
- •5.1. Типы доступа к текстовым файлам
- •5.2. Текстовые файлы
- •5.2.2 Бинарные файлы
- •Id : String[12];
- •Тема 6. Работа с классами
- •6.1. Понятие класса
- •6.2. Классы в object pascal
- •6.3. Свойства класса
- •Способ глобальных и локальных переменных
- •Способ процедуры свойств
- •Создание и удалениеобъектов
- •Inherited Create;
- •Inherited Destroy;
- •6.4. Методы класса
- •6.5. Объявление и удаление объектов
- •Литература
Тема 4. Цикличекий блок: операторы повторяющихся действий
Возможности компьютера лучше всего проявляются при многократном выполнении одних и тех же действий. Поскольку компьютер считает быстрее, чем человеческий мозг, на него следует возложить как можно больше повторяющейся, нетворческой работы.
Циклы делятся на детерминированные и недетерминированные. Для детерминированного цикла количество итераций известно или может быть вычислено до начала цикла. Для недетерминированного цикла количество итераций до начала цикла может быть неизвестным.
В языке VB цикл Forявляется детерминированным, а циклы Do While...,Do...Until,Do Until... иDo...While— недетерминированными. Аналогично этому, вObject Pascalциклfor— детерминированный, а циклыwhileиrepeat— недетерминированные.
4.1.Цикл for
В языке VB управляющая переменная цикла Forможет быть любого числового типа, включая целые и вещественные типы, в то время как в Object Pascal управляющая переменная циклаforдолжна быть одного из порядковых типов. Кроме того, в Object Pascal величина шага циклаforможет быть равна только +1 или -1 (т.е. следующая итерация вычисляется для следующего или предыдущего порядкового значения).
Приведем фрагмент кода VB, вычисляющего с помощью цикла Forсумму целых чисел от1до100:
Dim counter As Integer, sum As Integer
sum = 0
For counter = 1 To 100
sum = sum + counter
Next counter
Синтаксис инкрементного цикла forв Object Pascal имеет следующий вид:
for УправляющаяПеременная := НачЗначение to КонечЗначение do begin
[операторы ]
end;
Предыдущий фрагмент кода VB на Object Pascal выглядит так:
var
counter: Integer;
sum : Integer;
begin
sum := 0;
for counter := 1 to 100 do begin
sum := sum + counter;
end;
end;
Ha VB мы можем так же легко вычислить сумму чисел от 1 до 100 с помощью декрементного, а не инкрементного цикла For:
Dim counter As Integer, sum As Integer
sum = 0
For counter = 100 To 1 Step -1
sum = sum + counter
Next counter
Синтаксис декрементного цикла for в Object Pascal имеет вид
for УправляющаяПеременная := НачЗначение downto КонечЗначение do begin
[операторы ]
end;
Решим эту же задачу с помощью декрементного цикла forв Object Pascal:
var
counter : Integer;
sum : Integer;
begin
sum := 0;
for counter := 100 downto 1 do begin
sum := sum + counter;
end;
end;
4.2. Циклы while и repeat
Циклы whileиrepeatв Object Pascal являются, недетерминированными. Циклуwhileэквивалентен циклVBс предусловиемDoWhile. . .,aциклуrepeat— циклVBс постусловиемDo...Until. Обратите внимание: в Object Pascal нет эквивалентов циклам VBDo Until (цикл с предусловием) иDo.. .while (цикл с постусловием),
Синтаксис цикла whileимеет вид
while Условие do begin
[операторы;]
end;
Тело цикла while выполняется, если значение Условия равно True. Если Условие равно Falseуже при первом вхождении в цикл, то тело цикла не выполняется ни разу.
Следующий фрагмент кода вычисляет сумму целых чисел от 1 до 100 с помощью while:
sum := 0;
count := 1;
while (count <= 100) do begin
sum := sum + count;
count := count + 1;
end;
Эквивалентный код на VB имеет следующий вид:
sum = 0
count = 1
Do While (count <= 100)
sum = sum + count
count = count + 1
Loop
Синтаксис цикла repeat в Object Pascal:
repeat
[операторы; ]
until Условие;
Тело цикла repeat выполняется до тех пор, пока условие не станет истинным. Поскольку условие расположено после цикла, тело цикла обязательно выполняется, как минимум, один раз. Обратите внимание: ключевые слова begin и end в этом цикле не нужны, поскольку тело цикла ограничивается ключевыми словами repeat и until.
С помощью цикла repeat сумма целых чисел от 1 до 100 вычисляется так:
sum := 0;
count := 1;
repeat
sum := sum + count;
count := count + 1;
Until (count > 100);
Эквивалентный код на VB имеет вид
sum = 0;
count = 1
Do
sum := sum + count;
count := count + 1;
Loop Until (count > 100)