ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2025
Просмотров: 703
Скачиваний: 1
СОДЕРЖАНИЕ
11) Структурный тип строка, как специальная форма массива
10)Структурный тип строка, основы обработки строк
7)Функции: описания и вызовы функций.
8)Процедуры: описание и вызовы процедур.
6)Особенности использования параметров в процедурах и функциях.
25)Общая конструкция языка Паскаль.
24)Алфавит языка, ключевые слова, идентификаторы.
22)Стандартные типы данных, операции, выражения.
18)Композиция условий и операторов.
17) Операторы итерационных циклов.
4)Области действия имён в программах.
2)Понятие о типе Множество в Турбо Паскале.
1)Запись как объединение неоднородных данных.
27)Понятие о языках программирования.
26)Система программирования turbo pascal 7.0.
28)Аппаратное и программное обеспечение компьютера.
14)Оператор выбора case of
Оператолр выбора является обобщением оператора if-then-else на случай выбора одного из нескольких возможных продолжений выполнения программы . Выбор осуществляется по ключу выбора .Синтаксическая структура :
Case <ключ выбора >of
<константа выбора 1>:<оператор 1 >
<константа выбора m>:<оператор m>
[else < оператор >].
End;
Где <константа выбора >-значение того же типа , что и ключ выбора
m-число ветвей выбора
При выполнении оператора выбора в начале вычисляется значение ключа , а затем последовательном просмотром ветвей выбора отыскивается такая ветвь, для которой константа выбора совпадает со значением ключа.Ветвь else выполняется только в том случае , когда ни одна ветвь оператора case of не выбрана . Если ветвь else отсутствует , то это эквивалентно ветви else с пустыми операторами.В ветвях выбора вместо констант выбора можно использовать список констант выбора , либо диапазон констант выбора. Операторы выбора являются хорошо структурированными средством выбора из любого числа альтернатив и часто выполняют ту же ф-ию , что и вложенные операторы if-then-else.
11) Структурный тип строка, как специальная форма массива
В Турбо Паскале имеется семейство строковых типов, рассматриваемых как специальная форма массива, а именно одномерный массив символов. Это семейство соответствует по умолчанию следующему описанию:
type string[ <m >] = array [0..m] of char;
где: <m >- максимальная длина строки (число диапазона 0 .. 255).
string- стандартное имя строкового типа, являющееся ключевым словом.
Строки длины до 255 соответствуют типу string (без указания длины строки).
Нулевая позиция строки является специальной позицией, в которой хранится текущая длина строки (код ASCII, представляющий длину строки). Эта позиция автоматически корректируется при операциях над строками. Доступ к компоненту строки (символу строки) осуществляется также как к элементу массива, т.е. по индексу (индексному выражению). Например: st[J+1] {Cимвол в позиции J+1 строки st}. Разрешен доступ, в том числе и к нулевой позиции строки, так что, например ord(st[0]) - длина строки st .
|
Замечание
|
Изменение содержимого нулевой позиции строки оператором присваивания эквивалентно изменению текущей длины строки и может привести к отсечению части строки или присоединению к строке дополнительных пробелов. |
10)Структурный тип строка, основы обработки строк
Строки относятся к важным средствам представления нечисловой информации, и обработка строк имеет широкие приложения во многих областях использования нечисловой информации (редактирование текстов, логический анализ, автоматизация перевода, распознавание текстов и др.). Посколку строки указанного типа являются разновидностями массива, для них можно применять всё, что применимо к массивам. Кроме того, для обработки строк в Турбо Паскале предусмотрен ряд достаточно удобных и эффективных средств:
Для строк допустим оператор присваивания вида:
< переменная типа string > := < выражение типа string или типа char >;
Над строками допустимы отношения сравнения <,<=,>,>=, =, <>, причём длины сравниваемых строк могут быть различными (меньшая строка при сравнении дополняется справа до выравнивания длин символами chr(0)). Сравнение выполняется посимвольно слева направо по кодам символов таблицы ASCII. Например: 'A' >'1', 'Turbo' < 'TURBO PASCAL'. К строкам применима операция сцепления строк (конкатенация), обозначаемая символом '+'. Например: 'Это -' + 'строка' {соответствует 'Это - строка' }.
Стандартные процедуры обработки строк:
Delete(st, Npos, count) -удаление из строки st, начиная с позиции Npos под- строки длины count .
Insert(subst, st, Npos) -вставка в строку st подстроки subst с позиции Npos.
Стандартные функции обработки строк:
Length(st) -длина строки st (без учёта нулевой позиции строки).
Copy(st, Npos, count) -выделение из строки st подстроки длиной count, на чиная с позиции Npos.
Pos(subst, st) -позиция начала первого вхождения подстроки subst в строку st (если подстрока не найдена, то pos=0).
Основными элементарными задачами обработки строк являются: управление пробелами в строке (удаление лишних пробелов, удаление пробелов в начале или в конце строки, выравнивание длин строк вставкой пробелов и др.), анализ частот символов, либо подстрок, поиск подстрок по заданным критериям (первого вхождения, всех вхождений, по образцу, по шаблону и др.), подстановка подстрок и другие.
7)Функции: описания и вызовы функций.
В отличие от процедур, функции не являются отдельными операторами. Функции возвращают значения и предназначены для использования в составе выражений или в качестве выражений. Это накладывает определенный отпечаток на синтаксическую структуру описания функций, которая имеет вид:
function < имя функции >[(<список формальных параметров>)]:<тип функции >;
< описание локальных имён >
begin
< тело функции - последовательность операторов >
end;
В заголовке описания функции обязательно указывается тип вырабатываемого функцией результата, которым может быть любой простой тип Турбо Паскаля, а также строковый тип и тип указатель.
Другое отличие описания функции состоит в необходимости присутствия в теле функции хотя бы одного оператора присваивания, левой частью которого является имя функции. Смысл этого оператора - в присваивании функции некоторого результата как итога выполнения функции .Имя функции не должно присутствовать в правой части операторов присваивания.
Список формальных параметров в описании функции обычно является списком аргументов функции, т.е. входных параметров-констант.
Суть классического понятия функции состоит в том, чтобы однозначно отображать значение аргумента на значение функции (результата). Именно такой смысл имеет функция в математике.
В языках программирования понятие функции приобретает, вообще говоря, более широкий смысл. Дело в том, что функция - некоторая подпрограмма, которая в процессе своего выполнения может не только вычислять результат функции от значений аргументов, но и производить некоторое дополнительное воздействие на окружающую среду (например, изменять значение некоторых глобальных переменных, выводить информацию в файлы и др.). Такое воздействие называют побочным эффектом вычисления функций.
Побочный эффект - весьма опасное явление, которое может приводить к трудно обнаруживаемым ошибкам. Поэтому хорошим стилем считается использование только функций без побочного эффекта (так называемых чистых функций). Если функция использует только параметры-значения и не использует глобальные имена, а также операторы вывода, вызова других подпрограмм, то это гарантирует отсутствие побочного эффекта. Впрочем, в некоторых случаях имеет смысл применять функции с побочным эффектом (например, для реакций на ошибки при вычислении значения функции).
Синтаксическая форма вызова функции аналогична вызову процедуры, т.е. включает имя функции и список фактических параметров, заключенный в круглые скобки. Различие лишь в том, что вызов функции есть выражение, а не отдельный оператор.
|
Замечание
|
Используя так называемый расширенный синтаксис, можно вызывать функцию как процедуру (т.е. как оператор). Для включения расширенного синтаксиса имеется директива компилятора {$X+}. Это находит применение при инициализации динамических объектов. |
Приведем пример программы triangle2, отличающейся от triangle1 тем, что вместо процедуры d использована функция dist:
program triangle2; {Программа, вычисляющая длины сторон треугольника АВС}
uses CRT;
type point = array [1..2] of real; {тип- точка на плоскости}
var A,B,C:point; {вводимые точки}
ch:char;
function dist(X,Y:point):real;{ расстояние между точками X и Y }
begin dist:= sqrt(sqr(X[1]-Y[1])+sqr(X[2]-Y[2]))
end { dist};
BEGIN TextBackground(cyan);TextColor(white);ClrScr;
window(10,5,60,10);TextBackground(green); ClrScr;
repeat
writeln(' Введите координаты вершин A,B,C:');
writeln('A[1] A[2] B[1] B[2] C[1] C[2] ');
readln(A[1],A[2],B[1],B[2],C[1],C[2]);
writeln(' Длины сторон треугольника АВС:');
writeln(' AB=',dist(A,B):2:2,' AC=',dist(A,C):2:2,' BC =',dist(B,C):2:2);readln(ch)
until ch=' ';
END {triangle}.
8)Процедуры: описание и вызовы процедур.
Структура описания процедуры во многом сходна со структурой программы. По существу отличие только в заголовке процедуры. Описание процедуры может быть помещено на любое место в разделе описания вызывающей подпрограммы.
Синтаксическая форма описания процедуры имеет вид:
procedure <имя процедуры> (< список формальных параметров >);
< описание локальных имен процедуры >
begin
< тело процедуры - последовательность операторов процедуры >
end;
Раздел описаний процедуры содержит описание всех локальных имён, используемых в разделе операторов процедуры. Локальными называются имена, которые объявлены в данной процедуре. Часто локальными именами являются вспомогательные переменные, необходимые для выполнения вычислений в процедуре, ими могут быть и другие процедуры или функции.
Раздел операторов процедуры может содержать любую последовательность операторов, выполняющих необходимое действие. В этих операторах могут использоваться как формальные параметры, так и локальные имена, а также глобальные имена, т.е. имена, описанные вне данной процедуры. Глобальные имена представляют
собой еще один механизм передачи параметров между процедурой и внешней средой.
Выполнение процедуры заканчивается либо при достижении слова end, завершающего раздел операторов, либо при выполнении оператора exit.
Вызов процедуры имеет следующую синтаксическую форму:
<имя процедуры>(<список фактических параметров>);
где фактические параметры перечисляются в списке через запятую.
Пример программы на Турбо Паскале, использующей процедуру:
program triangle1;{Программа, вычисляющая длины сторон треугольника АВС}
uses CRT;
type point = array [1..2] of real; {тип- точка на плоскости}
var A,B,C:point; {вводимые точки}
AB,BC,AC:real; {стороны треугольника}
ch:char;
procedure d(X,Y:point; var r:real);{ расстояние между точками X и Y }
begin r:= sqrt(sqr(X[1]-Y[1])+sqr(X[2]-Y[2])) end { d};
BEGIN TextBackground(cyan);TextColor(white);ClrScr;
window(10,5,60,10);TextBackground(green); ClrScr;