Тема 4 Основные понятия и средства языка программирования

реклама
Тема 4.
Основные понятия и средства
языка программирования
начало
Среда программирования.
Алфавит языка программирования.
Идентификаторы.
Переменные и константы.
Массивы.
Типы данных.
Описание (объявление) переменных и констант.
Операции.
Стандартные функции.
Выражения.
Тема 4.
Основные понятия и средства
языка программирования
окончание
Операторы (инструкции).
Комментарии.
Оператор (инструкция) присваивания.
Ввод и вывод данных.
Операторы (инструкции) передачи управления и цикла.
Подпрограммы.
Процедуры и функции.
Работа с символами и строками
Среда программирования
начало
Среда программирования предоставляет
программисту интерфейс для разработки, отладки и
запуска программ.
Современная среда программирования представляет
собой комплекс инструментальных средств для
реализации быстрой разработки программных
приложений.
В состав современной среды программирования
входят графический интерфейс пользователя,
графический интерфейс справочной системы,
а также набор необходимых компонентов и
дополнительных окон.
Среда программирования
продолжение
Окна среды программирования Delphi 7
Среда программирования
продолжение
Запуск среды программирования Delphi 7 может быть
выполнен с использованием Главного меню
операционной системы Windows следующей
последовательностью действий:
Пуск => Программы => Borland Delphi 7 => Delphi 7,
после выполнения которых на экране появятся окна этой
среды программирования.
Среда программирования
продолжение
Главное окно среды программирования Delphi
содержит главное меню Delphi (команды File, Edit, View,
Run, Help и другие), панели инструментов с кнопками и
Палитру компонентов (обычно справа вверху).
Команды главного меню Delphi открывают доступ к
меню с более конкретными командами второго уровня.
Быстрый доступ к наиболее важным и
употребительным командам можно получать также с
использованием контекстных меню (например, после
щелчка правой кнопкой "мыши").
Панели инструментов содержат кнопки, которые
могут быть использованы для более быстрого
выполнения тех же действий по сравнению
использованием команд главного меню Delphi или
контекстных меню.
Среда программирования
продолжение
Палитра компонентов обычно занимает правую
часть главного окна Delphi. С помощью компонентов
создаются видимые в окнах программ элементы (кнопки,
списки, надписи, меню и т.д.).
Прочие окна среды программирования
(Object TreeView, Object Inspector, а также окно формы
и окно программного модуля – это окна обычно с
заголовками Form1 и Unit1.pas) используются для
создания проекта программного приложения.
Для прекращения работы среды программирования
Delphi можно закрыть главное окно среды
программирования или выполнить последовательность
команд меню File => Exit.
Среда программирования
продолжение
При запуске среды программирования после
выполнения последовательности действий:
Пуск => Программы => Borland Delphi 7 => Delphi 7,
на экране появятся окна среды программирования,
предназначенные главным образом для формирования
видимых в окнах программ элементов (кнопок, списков,
надписей, меню и т.д.) и для создания процедур
обработки событий, связанных с этими элементами
(таких, например, событий, как нажатие на кнопку, выбор
строки из списка или команды из меню и т.д.), или,
короче говоря, появляются окна, предназначенные для
создания проекта программного приложения типа
Application.
Среда программирования
продолжение
Создание приложений типа Application, кроме самых
простых, требует предварительного ознакомления с
основами программирования на языке Pascal,
расширение которого (Object Pascal или Delphi)–
является языком среды программирования Delphi.
Для начального изучения программирования на языке
Pascal в среде программирования Delphi существует
возможность использования так называемого
консольного приложения – Console Application.
Среда программирования
продолжение
При программировании с использованием
консольного приложения вводится только текст
программы на языке Pascal, никакие другие элементы,
связанные с программой, не формируются.
Консольные приложения также могут быть
использованы для быстрой отладки алгоритмов, так как
при выполнении консольного приложения ввод данных
и вывод результатов происходит в одном окне с
применением специальных операторов (процедур),
автоматически выполняющих преобразование данных из
символьной формы в числовую (при вводе)
и из числовой формы в символьную (при выводе).
Среда программирования
продолжение
Для создания консольного приложения в среде
программирования Delphi необходимо выполнить команды меню
File => New => Other... и затем в появившемся окне New Items на
вкладке New использовать значок Console Application.
Среда программирования
окончание
Окна среды программирования Delphi 7
в режиме консольного приложения.
Алфавит
языка программирования
Алфавит языка программирования Delphi (Object Pascal)
включает в себя совокупность символов, используемых для
записи элементов языка:
цифры 0 1 2 3 4 5 6 7 8 9;
большие и маленькие латинские буквы
ABCDEFGHIJKLMNOPRSTUVWXYZ
abcdefghijklmnoprstuvwxyz
и символ подчеркивания _ ;
специальные символы + - * / = , . : ; ' < > ( ) [ ] { } ^ @ $ #
и символ "пробел".
Символ ; используется при записи программы для
разделения операторов, объявлений и описаний.
Идентификаторы
начало
Идентификаторы предназначены для обозначения
переменных, функций и других объектов в программе.
Идентификатор может состоять из букв, цифр и символов
подчеркивания _ , но начинаться он должен только с
буквы латинского алфавита или символа подчеркивания _
.
Большие и маленькие буквы в идентификаторах не
различаются.
Между двумя идентификаторами в программе должен
быть хотя бы один разделитель (пробел, символ конца строки,
комментарий или другой специальный символ или комбинация
специальных символов).
Идентификаторы различаются по их первым 63 символам.
Примеры идентификаторов: a A x bc ff vv1 v_W
summa DELTA2 alfa5
Идентификаторы
окончание
Идентификаторы для разных объектов не должны
совпадать (включая также возможные совпадения, например,
имени проекта приложения с именем объекта в этом
приложении).
Переменные и константы
начало
Переменная – это именованная область памяти, которая
отводится для данных, используемых программой.
Переменная в программе обозначается
идентификатором или, иначе говоря, в качестве имени
переменной используется идентификатор.
Переменные и константы
окончание
Константа – это целое или дробное число, строка
символов или отдельный символ.
Константы используются для обозначения числовых и
строковых величин, не меняющихся при выполнении
программы
Примеры констант:
числовых – 123 0.1 0.0 -5.03 0 1 1500 1.5e3 1.5E3
(десятичным разделителем является точка;
запись 1.5e3 или 1.5E3 означает 1.5•103;
запись -23e-2 означает -23•10-2);
строковых – '***Result: ' 's='
(строковая константа заключается апострофы, не
включаемые в константу; при необходимости включения в
константу апострофа он удваивается, например, константа,
состоящая из одного апострофа, запишется как '''').
Массивы
начало
Массив представляет собой совокупность
последовательно расположенных в памяти областей
памяти с однотипными данными. Эти области
памяти называются элементами массива (аналогом
одного элемента массива может служить
переменная).
Массив имеет имя, являющееся общим для всех
элементов массива. Доступ к отдельному элементу
массива осуществляется по номеру (или индексу)
этого элемента. В качестве индексов чаще всего
используются значения целого типа.
Массивы
окончание
Массивы могут быть одномерными и
многомерными.
В одномерном массиве каждому его элементу
соответствует один индекс, в многомерном –
соответствуют несколько индексов.
Из многомерных массивов на практике чаще
всего используются двумерные массивы, каждому
элементу которых соответствуют два индекса.
Типы данных
начало
Тип данных определяет способ кодировки
данных, объем занимаемой ими памяти и действия,
которые можно выполнять с этими данными.
Типы данных используются для обозначения
данных различной структуры и длины.
Далее приведены примеры наиболее часто
используемых типов данных.
Типы данных
продолжение
Целые типы данных (для представления целых
чисел в указанном диапазоне):
Integer – -2 147 483 648 – 2 147 483 647 для Delphi 7
(-32 768 – 32 767 для Turbo Pascal);
Byte – 0 – 255;
Word – 0 – 65 535;
Shortint – -128 – 127;
Longint – -2 147 483 648 – 2 147 483 647.
Типы данных
продолжение
Вещественные или действительные типы
данных (для представления вещественных или
действительных чисел в указанном диапазоне
значений абсолютных величин):
Real – 5,0•10-324 – 1,7•10308 для Delphi 7
(2,9•10-39 – 1,7•1038 для Turbo Pascal);
Single – 1,5•10-45 – 3,4•1038;
Double – 5,0•10-324 – 1,7•10308;
Extended – 3,4•10-4932 – 1,1•104932.
Типы данных
продолжение
Char – символьный тип данных
(для представления любого символа из набора
допустимых символов; для каждого символа
отводится один байт памяти).
Типы данных
продолжение
String – строковый тип (для представления строк
символьных величин).
Типы данных
окончание
Boolean – логический тип данных (величины
этого типа занимают в памяти 1 байт и могут
принимать значения True (Истина) или False (Ложь);
внутренним представлением для значения False
является 0, для значения True является 1).
Описание (объявление)
переменных и констант
начало
Описание (объявление) переменных начинается
с ключевого слова var
и обязательно должно предшествовать
использованию этих переменных в программе.
Описание (объявление) переменных должно
быть расположено в так называемом разделе
объявления переменных.
Примеры описания (объявления) переменных:
var s,i: Integer;
x,y: Real;
a,с: char;
st: String;
Описание (объявление)
переменных и констант
продолжение
Вместо непосредственных значений констант в программе
могут быть описаны (объявлены) и затем использованы со
своими идентификаторами именованные константы.
Раздел описания (объявления) именованных констант
может находиться в программе в том же месте, где и раздел
описания (объявления) переменных.
Примеры описания (объявления) именованных
констант:
Const w1='WORD'; otl='5'; e=2.71828;
Имя константы отделяется от выражения знаком
равенства. Тип константы автоматически распознается на
основании типа выражения справа от знака равенства.
Описание (объявление)
переменных и констант
продолжение
Примеры описаний (объявлений) массивов:
Var z: Array [1..20] of Real;
ab: Array [10..100] of Integer;
v: Array [1..20,1..10] of Real;
Здесь z и ab являются одномерными массивами, v – двумерным
массивом.
Каждый из элементов массива ab – целое число типа Integer,
каждый и элементов массивов z и v – вещественное число типа Real.
Массив z состоит из 20 элементов (нижняя граница индексов –1,
верхняя граница – 20),
массив ab состоит из 91 элемента (нижняя граница индексов –10,
верхняя граница – 100),
массив v состоит из 200 элементов (из 20 строк по 10 элементов в
каждой).
Описание (объявление)
переменных и констант
окончание
При описании (объявлении) массивов могут быть использованы
именованные константы, например:
Const N=20;
Var z: Array [1..N] of Real;
Использование в таких случаях именованных констант
позволяет изменять используемые в в разных местах
программы значения границ индексов массивов, изменяя
лишь значения соответствующих именованных констант в
области их описания (объявления).
Операции
начало
Операции выполняются порядке их записи слева
направо в соответствии с их приоритетами.
Очередность выполнения операций может быть
изменена с использованием только круглых скобок.
Операции
продолжение
Арифметические операции:
Операция
+
Действие
Типы операндов
Тип результата
Сложение
Хотя бы один
из операндов real
Real
Оба операнда integer
Integer
-
Вычитание
Те же, что для
операции +
Тот же, что для
операции +
*
Умножение
Те же, что для
операции +
Тот же, что для
операции +
/
Деление
Real или integer
Real
div
Целая часть
от деления
Integer
Integer
mod
Остаток
от деления
Приоритет
Более
низкий
Более
высокий
Операции
продолжение
Операции отношения (или сравнения):
= равно;
< меньше;
> больше;
<= меньше или равно;
>= больше или равно;
<> не равно.
Результатом операции сравнения является значение
логического типа True (Истина),
если отношение, устанавливаемое операцией, выполняется,
или значение логического типа False (Ложь),
если это отношение не выполняется.
Операции
продолжение
Логические операции
(применяются к величинам логического типа Boolean):
not – логическое отрицание
(унарная операция – имеет один операнд);
and – логическое умножение (логическое И);
or – логическое сложение (логическое ИЛИ);
hor – операция неравнозначности (исключающее ИЛИ).
Операции
продолжение
Результаты выполнения логических операций:
a
False
b
False
not a
True
a and b
False
a or b
False
a hor b
False
False
True
True
True
False
True
True
False
False
False
False
True
True
True
True
True
True
False
Кроме того, величины логического типа можно сравнивать между
собой с помощью операций отношения: = , < , > , <= , >= , <> .
Результат выполнения любой из перечисленных здесь логических
операций имеет логический тип.
Операции
окончание
Порядок выполнения операций по убыванию
приоритетов выглядит следующим образом:
унарные операции (с одним операндом)
not , знак - , знак + (например, -3, +5 и т.д.);
операции типа умножения и деления
* , / , div , mod , and ;
операции типа сложения и вычитания
+ , - , or , hor ;
операции отношения
= , < , > , <= , >= , <> .
Стандартные функции
начало
Некоторые математические функции:
Функция
Описание
Тип
аргумента
результата
Abs(x)
Абсолютное значение x
real
integer
real
integer
Sqrt(x)
Квадратный корень из x
real
integer
real
Sqr(x)
Квадрат x
real
integer
real
integer
Sin(x)
Синус x
real
integer
real
Cos(x)
Косинус x
real
integer
real
Arctan(x)
Арктангенс x
real
integer
real
Pi
Число 
–
real
Exp(x)
Экспонента x
real
integer
real
Ln(x)
Натуральный логарифм x
real
integer
real
Стандартные функции
продолжение
Некоторые функции преобразования:
Функция
Описание
Тип
аргумента
результата
Int(x)
Целая часть x
real
real
Frac(x)
Дробная часть x
real
real
Trunc(x)
Отбрасывает дробную
часть x
real
integer
Round(x)
Округление x
до ближайшего целого
числа
по общепринятым
правилам
real
integer
Выражения
начало
Для вычисления значений по формулам
применяются выражения, состоящие из операндов
(переменных, констант, функций), связанных
между собой знаками операций.
Значение выражения зависит от входящих в его
состав переменных, констант, функций и операций
между ними.
При записи выражений можно не ставить пробел
между операндами и знаками операций (за
исключением операций div и mod).
Выражения
продолжение
При вычислении значений выражений в первую очередь
выполняются унарные операции (например, знаки + или - перед
первым операндом выражения), затем вычисляются значения
функций, затем выполняются операции типа умножения и деления
(например, * , / , div , mod), затем выполняются операции типа
сложения и вычитания (например, + , -).
Порядок выполнения действий в выражениях может быть
изменен с помощью только круглых скобок, при этом операции в
скобках будут выполняться в обычном порядке, но раньше, чем
операции за скобками.
При записи выражений, содержащих скобки, число открывающих
скобок должно быть равно числу закрывающих скобок.
Выражения
окончание
Тип выражения определяется типами входящих
в него операндов и выполняемыми в нем
операциями.
Примеры выражений:
x+1
y+sin(abs(x)*Pi/180)-1
I mod 2+l
-x+y/z
(a-b)/(c+d/(e+f))
Операторы (инструкции)
•
•
•
•
•
Оператор присваивания
Операторы ввода и вывода
Операторы передачи управления
Операторы цикла
Оператор обращения к процедуре
Комментарии
начало
Комментарии – произвольные тексты в программе, служащие,
как правило, для описания того, что происходит при выполнении
участков программы или отдельных операторов.
Комментарии могут содержать любые символы, включая
русские буквы.
Наличие или отсутствие комментариев никак не влияет на
работу программы.
Комментарий можно записывать в любом месте программы, где
разрешен пробел.
Однострочные комментарии начинаются с символов // и
продолжаются до конца строки.
Многострочные комментарии могут быть ограничены
символами { и } или их эквивалентами (* и *).
Комментарии
окончание
Примеры комментариев:
{ Ниже находится оператор,
увеличивающий значение s на 1 }
s:=s+1; // Здесь значение s увеличивается на 1
// Ниже находится еще один комментарий
(* Выше находится оператор, увеличивающий значение s на 1 *)
Оператор (инструкция)
присваивания
начало
Оператор присваивания имеет вид
имя переменной := выражение
В операторе присваивания имя переменной
отделяется от выражения знаком присваивания :=
(символы двоеточие и равно, следующие
непосредственно один за другим без пробелов).
Операторы отделяются друг от друга символом ;
(точка с запятой).
Оператор (инструкция)
присваивания
продолжение
Примеры операторов присваивания:
z:=x+1;
f:=y+sin(abs(x)*Pi/180)-1;
k:=I mod 2+l;
uu := -x+y/z1z2;
t:=(a-b)/(c+d/(e+f));
s:=s+1;
При выполнении оператора присваивания сначала вычисляется
значение выражения справа от знака присваивания := и затем
результат присваивается переменной слева от знака := .
Переменная и выражение должны иметь совместимые типы
(например, real и integer, но не наоборот).
Оператор (инструкция)
присваивания
окончание
Доступ к элементу массива осуществляется по индексу этого
элемента, указываемому в квадратных скобках после
идентификатора массива, например,
ab[k]:=a*a; v[i,k]:=z[i]*ab[k+9].
Ввод и вывод данных
начало
В режиме консольного приложения для ввода
данных используется операторы (процедуры) ввода
Readln и Readln.
Эти операторы используются для ввода значений
переменных. Идентификаторы переменных являются
параметрами оператора ввода и перечисляются
после названия оператора в круглых скобках через
запятую.
Ввод и вывод данных
продолжение
При выполнении, например, оператора ввода
Readln(x1,x2,x3) программа ждет, пока на клавиатуре будут
набраны три числа, разделенные пробелом, табуляцией или
нажатиями клавиши Enter, и затем, после ввода последнего из
этих чисел и нажатия на клавишу Enter, введенные значения
присваиваются переменным, имена которых указаны в
операторе ввода. Если было введено больше чисел, чем
указано переменных в операторе ввода, то остальные числа
будут утеряны.
Во избежание недоразумений при вводе данных не
рекомендуется использовать оператор Read, который передает
излишне введенные данные следующему оператору ввода.
Ввод и вывод данных
продолжение
В режиме консольного приложения для вывода
данных используются операторы (процедуры)
вывода Write и Writeln.
Операторы вывода используются для вывода
значений переменных, констант, выражений.
Идентификаторы переменных, константы,
выражения, являются параметрами оператора
вывода и перечисляются после названия оператора в
круглых скобках через запятую, например:
Writeln(n,'A = ',b+c,I mod 2+l,' Argument ',x,y+sin(abs(x)*Pi/180)-1)
Ввод и вывод данных
продолжение
При выполнении, например, оператора
Write('*Results: ',s,' ',i,' ',j,' ',k)
на экран будут выведены в одной строке текст
*Results: и значения переменных s,i,j,k, разделенные
пробелами, после чего курсор останется в этой же
строке после последнего выведенного символа
значения переменной k.
Оператор Writeln, в отличие от оператора Write,
после вывода значений выполняет переход на начало
следующей строки.
Ввод и вывод данных
продолжение
В операторах вывода могут использоваться форматы
вывода, например,
Writeln(aa:5, b:8:2);
Здесь после имени переменной aa через двоеточие
указывается количество отводимых для вывода ее значения
позиций, внутри которых значение выравнивается по правому
краю. Для переменной b указаны две спецификации (8:2),
означающие, что под значение этой переменной отводится 8
позиций, причем 2 из них – под дробную часть выводимого
значения (одну из 8 позиций занимает точка). Две
спецификации можно указывать только для вещественных
величин. Спецификации могут быть выражениями целого
типа.
Ввод и вывод данных
продолжение
Оператор ввода Readln без параметров может быть
использован для остановки выполнения программы и
просмотра выведенных результатов (после нажатия клавиши
Enter выполнение программы продолжится).
Для того чтобы окно с результатами выполнения консольного
приложения неожиданно не исчезло с экрана, рекомендуется в
конце программы использовать оператор ввода Readln без
параметров (этот оператор будет ждать нажатия на клавишу
Enter) или переход на другой оператор Readln с параметрами
или без них.
Оператор вывода Writeln без параметров выполняет переход
в начало следующей строки.
Ввод и вывод данных
окончание
При вводе и выводе значений массива можно указывать
только элемент массива с индексами, например:
Readln(z[10], z[i+k], v[k,i+1]);
Writeln(z[1], z[i+1], v[i,k]);
При выводе нескольких элементов массивов в строке
рекомендуется использовать форматы вывода, например:
Writeln(ab[i+10]:5,v[i,k]:8:2).
Операторы (инструкции)
передачи управления и
цикла
начало
Условный оператор:
if Условие then Оператор1 else Оператор2;
Условие представляет собой логическое выражение.
Условный оператор работает следующим образом:
если Условие имеет значение True, то выполняется только
Оператор1,
если Условие имеет значение False, то выполняется только
Оператор2.
Затем выполняется оператор, следующий за условным оператором.
Такая форма условного оператора иногда называется его полной
формой. При записи условного оператора в полной форме перед else
точка с запятой не ставится.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Допускается использование сокращенной формы условного
оператора (без else):
if Условие then Оператор;
В этом случае, если Условие имеет значение False, то
выполняется оператор, следующий за условным оператором.
Примеры условных операторов:
if x>0 then x:=x+1 else x:=0;
if abs(a)<=1 then b:=1;
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор выбора:
case Выражение of
Список1: Оператор1;
...
СписокN: ОператорN
else Оператор;
end;
позволяет сделать выбор из произвольного числа вариантов.
В операторе выбора:
Выражение обычно целого типа;
Список – список констант состоит из произвольного количества отдельных
неповторяющихся значений и диапазонов, отделенных запятыми.
Границы диапазона записываются двумя константами через разделитель "..".
Тип констант должен совпадать с типом Выражения.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор выбора выполняется следующим образом:
– вычисляется значение Выражения;
– производится последовательный просмотр Списков;
– при совпадении значения Выражения с константой или
значением из диапазона выполняется Оператор для того
Списка, в котором произошло совпадение;
– если совпадений не было, то выполняется Оператор в
строке с else (эта строка может отсутствовать в операторе
выбора – тогда выполняется оператор, следующий за
оператором выбора).
Операторы (инструкции)
передачи управления и
цикла
продолжение
Пример оператора выбора:
case Month of
1,2,12: Writeln(' Winter ');
3..5: Writeln(' Spring ');
6..8: Writeln(' Summer ');
9..11: Writeln(' Autumn ')
else Writeln(' ---- ');
end;
Работа
с символами и строками
продолжение
Строки можно присваивать друг другу (операция присвоения " := ").
Если максимальная длина результирующей строки меньше длины
исходной строки, то лишние символы справа отбрасываются, например:
Var s1: string[3]; s2: string[6];
...
s2:='Summer';
s1:=s2; //s1:='Sum'
Строки можно объединять (сцеплять, склеивать) между собой с
помощью операции конкатенации, обозначаемой знаком " + ",
например:
s1:='Sum';
s2:='mer';
s3:=s1+s2; //s3:='Summer'
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор перехода:
goto Метка;
предназначен для изменения обычного порядка выполнения операторов
программы, когда после выполнения некоторого оператора требуется передать
управление не следующему по порядку, а другому оператору.
Оператор, которому передается управление, должен быть помечен меткой,
стоящей перед оператором и отделенной от него двоеточием.
Метка может быть идентификатором или целым числом, начиная с 0 и
заканчивая 9999.
Меткой может быть снабжен и пустой оператор, представляющий собой точку с
запятой.
Все метки должны быть предварительно объявлены в разделе объявления
меток. Раздел объявления меток находится в той же области программы, что и
раздел объявления переменных.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Составной оператор
begin Оператор1; Оператор2; . . . ; ОператорN; end;
представляет собой группу из произвольного числа
операторов, заключенную между операторными скобками
begin и end (эти Операторы отделяются друг от друга, как
обычно, точкой с запятой ";", причем непосредственно перед
end точка с запятой может не ставиться).
Независимо от количества входящих в него операторов,
составной оператор воспринимается как один оператор и
может располагаться в любом месте программы, где
допускается наличие оператора.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Цикл представляет собой последовательность операторов,
которая может выполняться более одного раза.
Последовательность повторно выполняемых операторов
называется телом цикла.
Для построения цикла в принципе можно использовать
операторы передачи управления с передачей управления на
начало тела цикла, но все-таки в большинстве случаев
удобнее использовать операторы цикла, специально
предназначенные для организации циклов.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор цикла с предварительным условием (с предусловием)
while Условие do Оператор;
целесообразно использовать, когда число повторений тела цикла заранее
неизвестно и тело цикла может даже ни разу не выполниться (здесь телом цикла
является Оператор, который может быть составным).
Оператор тела цикла выполняется, пока значение логического выражения
Условие равно true и выполняется до тех пор, пока это значение не станет равным
false, после чего происходит передача управления оператору, следующему за этим
оператором цикла.
Оператор тела цикла должен влиять на значение Условия, иначе произойдет
зацикливание (повторение тела цикла без возможности выхода из цикла).
Если перед первым выполнением цикла значение Условия равно false, то тело
цикла не выполняется ни разу и происходит передача управления оператору,
следующему за этим оператором цикла.
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор цикла с последующим условием (с постусловием)
repeat
Оператор1;
...
ОператорN;
until Условие;
целесообразно использовать, когда тело цикла необходимо выполнить не менее одного
раза и заранее неизвестно число повторений цикла.
Операторы между repeat и until составляют тело цикла и выполняются до тех пор, пока
значение логического выражения Условие не примет значение true, после чего
происходит передача управления оператору, следующему за этим оператором цикла, (то
есть тело цикла повторяется при значении Условия, равном false).
Так как условие проверяется в конце цикла, Операторы выполняются хотя бы один раз.
Операторы тела цикла должны влиять на значение Условия, иначе произойдет
зацикливание (повторение тела цикла без возможности выхода из цикла).
Операторы (инструкции)
передачи управления и
цикла
продолжение
Оператор цикла с параметром имеет две разновидности:
for Параметр:=Выражение1 to Выражение2 do Оператор;
и
for Параметр:=Выражение1 downto Выражение2 do Оператор;
и применяется, если количество повторений цикла известно заранее.
Оператор тела цикла выполняется до полного перебора всех целочисленных значений
Параметра (параметра цикла) с шагом 1 для оператора с to и с шагом –1 для оператора
с downto от значения Выражения1 (начального значения) до значения Выражения2
(конечного значения). Начальное и конечное значения не изменяются при выполнении
цикла. Значение Параметра не должно изменяться при выполнении Оператора.
Цикл с to может не выполниться ни разу, если начальное значение больше конечного.
Цикл с downto может не выполниться ни разу, если начальное значение меньше
конечного.
Операторы (инструкции)
передачи управления и
цикла
окончание
Выполнение оператора цикла любой разновидности может быть
прервано из тела цикла с помощью оператора перехода goto на
оператор с меткой или с помощью специального оператора без
параметров break, который передает управление оператору,
следующему за оператором цикла.
При выполнении оператора цикла любой разновидности с
помощью специального оператора без параметров continue можно
досрочно передать управление в конец тела цикла, что равносильно
досрочному завершению очередного повторения тела цикла.
Операторы цикла любых разновидностей могут быть вложены
друг в друга.
Подпрограммы
Подпрограмма – это группа операторов, логически законченная и
специальным образом оформленная.
Подпрограмма описывается (объявляется) один раз, а обращаться к ней
(вызывать ее) можно по ее имени неограниченное число раз из различных
частей программы там, где требуется получить результаты работы
подпрограммы.
Внутри подпрограммы можно описывать другие подпрограммы,
к которым можно обращаться только из той подпрограммы, внутри
которой они описаны.
При вызове подпрограммы указываются ее имя и список
аргументов (фактических параметров), передаваемых подпрограмме для
выполнения операторов, водящих в состав этой подпрограммы.
Одна и та же подпрограмма может обрабатывать различные данные,
переданные ей в качестве аргументов.
Подпрограммы делятся на процедуры и функции, основное различие
между которыми состоит в том, что результатом выполнения функции
является некоторое значение, присвоенное ее имени, и это имя можно
использовать как операнд выражения.
Процедуры и функции
начало
Описание (объявление) процедуры располагается в программе
там же, где располагаются описания (объявления) переменных,
констант, меток.
Описание (объявление) процедуры состоит из заголовка и блока
(тела процедуры).
Заголовок имеет формат Procedure Имя(Формальные параметры);
и состоит из ключевого слова procedure, имени процедуры и
необязательного списка формальных параметров в круглых скобках с
указанием типа каждого параметра, например:
procedure x2y2(var s:real; x,y:real);. В списке формальных
параметров после указателя типа ставится точка с запятой, если же
тип указан сразу для нескольких параметров, то их идентификаторы
отделяются друг от друга запятой.
Процедуры и функции
продолжение
Блок процедуры начинается с begin и заканчивается end.
Внутри блока располагаются операторы с формальными
параметрами, например:
Procedure x2y2(var s:real; x,y:real); //Описание процедуры
begin
s:=x*x+y*y;
end;
Процедуры и функции
продолжение
Для обращения к процедуре используется оператор вызова
процедуры, состоящий из имени процедуры и списка
разделенных запятыми аргументов в круглых скобках, при этом
каждому формальному параметру, указанному в заголовке
процедуры, должен соответствовать аргумент того же типа,
например,
x2y2(z,t,u); //Вызов процедуры.
При обращении к процедуре выполняются операторы ее
блока с аргументами вместо формальных параметров.
Процедуры и функции
продолжение
Если в описании процедуры формальный параметр указан с
описателем var, то при обращении к процедуре в качестве
фактического параметра передается адрес аргумента в памяти
компьютера. Значение по такому адресу может быть изменено при
выполнении процедуры и по такому адресу может быть помещен,
например, результат выполнения процедуры. В качестве такого
аргумента может быть переменная и не может быть выражение или
константа.
Если в описании процедуры формальный параметр указан без
описателя var, то при обращении к процедуре в качестве
фактического параметра передается значение аргумента в памяти
компьютера. Это значение не может быть изменено при выполнении
процедуры. В качестве такого аргумента может быть переменная,
выражение или константа.
Процедуры и функции
начало
Описание (объявление) функции располагается в
программе там же, где располагаются описания (объявления)
переменных, констант, меток, описания (объявления)
процедур.
Описание (объявление) функции состоит из заголовка и
блока (тела функции).
Заголовок имеет формат
Function Имя(Формальные параметры):Тип результата;
и состоит из ключевого слова function, имени функции,
необязательного списка формальных параметров в круглых
скобках с указанием типа каждого параметра, а также типа
значения функции, например, Function x2y2(var
x,y:real):real;
Процедуры и функции
продолжение
Блок функции начинается с begin и заканчивается end. Внутри блока
располагаются операторы с формальными параметрами, например:
Function x2y2(var x,y:real):real; //Описание функции
begin
result:=x*x;
x2y2:=result+y*y;
end;
В блоке функции должен быть хотя бы один оператор присваивания с
именем функции в левой части этого оператора. Последний выполненный
из таких операторов и определяет значение функции. В этих операторах
допускается использование вместо имени функции переменной result,
причем в отличие от имени функции переменную result можно использовать
в выражениях блока функции в правой части оператора присваивания.
Использование этой переменной дает возможность получить в любой
момент доступ к текущему значению функции.
Процедуры и функции
окончание
Для обращения к функции используется ее имя со списком
разделенных запятыми аргументов в круглых скобках, при этом
каждому формальному параметру, указанному в заголовке
функции, должен соответствовать аргумент того же типа. В
отличие от имени процедуры имя функции может входить в
выражения в качестве операнда, значение которого равно
значению функции в зависимости от значений аргументов,
например,
z:=x2y2(t,u); //Вызов функции.
При обращении к функции передача адреса или значения
аргумента происходит так же, как и при обращении к процедуре.
При обращении к функции выполняются операторы ее блока с
аргументами вместо формальных параметров.
Работа
с символами и строками
начало
Символьный тип данных (Char) используется для
представления любого символа из набора допустимых
символов. Для каждого символа отводится один байт
памяти.
Пример описания (объявления) величин символьного
типа:
Var a,s: char
К символам можно применять операции сравнения
( < , <= , = , > , >= , <> ), при этом сравниваются коды
символов.
Работа
с символами и строками
продолжение
Некоторые функции для символьных величин:
Тип
Функция
Описание
Ord(s)
Код (порядковый номер) символа,
например,
Chr(n)
Преобразование в символ,
например, chr(98) => 'b'
Pred(s)
Succ(x)
ord('b') => 98
Предыдущий символ, например,
pred('b') => 'a'
Последующий символ, например,
succ('b') => 'c'
аргумента
результата
char
integer
integer
char
char
char
char
char
Работа
с символами и строками
продолжение
Строки представляют собой последовательности
символов. Строки при описании (объявлении)
обозначаются ключевым словом String с возможным
указанием максимальной длины строки, например:
Var s: string; t: string[30]
Длины строк в описаниях (объявлениях) можно
задавать именованными константами.
Работа
с символами и строками
продолжение
Строки можно сравнивать между собой с помощью
операций сравнения, при этом справедливы, например,
следующие соотношения:
'abc'>'ab'
'abc'='abc'
'abc'<'abc '
К отдельному символу строки можно обращаться как к
элементу массива символов, например, s1[4].
Один символ из строки совместим с величиной типа Char и
их можно использовать в выражениях одновременно.
Работа
с символами и строками
продолжение
При вводе и выводе может использоваться имя
строки, например:
readln(s1,s2);
writeln(s3);
При вводе в строку считывается количество
символов, равное длине строки или меньшее, если
клавиша Enter будет нажата раньше.
При выводе для строки отводится количество
позиций, равное ее фактической длине.
Работа
с символами и строками
продолжение
Некоторые функции для работы со строками
(начало):
Процедура или функция
с именем
и примером перечня
аргументов
Описание
1
2
Функция
Concat(s1,s2,...,sN)
Возвращает строку, являющуюся слиянием строк s1,s2,...,sN. Действие
функции аналогично операции конкатенации.
Функция
Copy(s,start,len)
Возвращает подстроку длиной len, начинающуюся с позиции start строки s.
Процедура
Delete(s,start,len)
Удаляет из строки s, начиная с позиции start, подстроку длиной len.
Процедура
Insert(subs,s,start)
Вставляет подстроку subs в строку s, начиная с позиции start.
Работа
с символами и строками
продолжение
Некоторые функции для работы со строками (продолжение):
1
2
Функция
Length(s)
Возвращает фактическую длину строки.
Функция
Pos(subs,s)
Ищет вхождение подстроки subs в строку s и возвращает номер первого
символа subs в s или нуль, если subs не содержится в s.
Процедура
Str(x,s)
Преобразует числовое значение x в строку s, при этом для x может быть задан
формат, как в процедурах Write и Writeln, например Str(x:8:2,s).
Процедура
Val(s,x,errcode)
Преобразует строку s, содержащую символьное представление числа, в
значение числовой переменной x. В случае успешного преобразования
значение переменной errcode равно нулю, при обнаружении ошибки в
символьном представлении числа значение errcode будет содержать номер
позиции первого ошибочного символа, а значение x не определено.
Работа
с символами и строками
окончание
Некоторые функции для работы со строками
(окончание):
2
1
Функция
IntToStr(n)
Преобразует целочисленное значение n в строку.
Функция
StrToInt(s)
Преобразует строку s в целое число.
Функция
FloatToStr(x)
Преобразует вещественное значение x в строку.
Функция
StrToFloat(s)
Преобразует строку s в вещественное число.
Функция
AnsiUpperCase(s)
Возвращает строку s, преобразованную к верхнему регистру.
Функция
AnsiLowerCase(s)
Возвращает строку s, преобразованную к нижнему регистру.
Скачать