ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 16.03.2025
Просмотров: 710
Скачиваний: 1
СОДЕРЖАНИЕ
11) Структурный тип строка, как специальная форма массива
10)Структурный тип строка, основы обработки строк
7)Функции: описания и вызовы функций.
8)Процедуры: описание и вызовы процедур.
6)Особенности использования параметров в процедурах и функциях.
25)Общая конструкция языка Паскаль.
24)Алфавит языка, ключевые слова, идентификаторы.
22)Стандартные типы данных, операции, выражения.
18)Композиция условий и операторов.
17) Операторы итерационных циклов.
4)Области действия имён в программах.
2)Понятие о типе Множество в Турбо Паскале.
1)Запись как объединение неоднородных данных.
27)Понятие о языках программирования.
26)Система программирования turbo pascal 7.0.
28)Аппаратное и программное обеспечение компьютера.
входные параметры, через которые подпрограмма воспринимает исходную информацию для вычислений,
выходные параметры, через которые подпрограмма выдает свои результаты в основную программу, и
смешанные параметры - используемые и как входные и как выходные.
Различают формальные параметры-значения и формальные параметры-переменные. Различие между ними состоит в том, что параметры-значения при вызове представляют копии соответствующих значений выражений, а параметры-переменные не копируются, а непосредственно связываются с подпрограммой, т.е. в подпрограмму передаются адреса соответствующих фактических параметров. Выходные и смешанные параметры всегда являются параметрами-переменными, а входные параметры в большинстве своем являются параметрами-значениями, хотя в некоторых случаях это может быть неэкономно с точки зрения потребляемой оперативной памяти (например, для параметров-массивов).
|
Замечание
|
Для экономной передачи данных через параметры-массивы лучше использовать формальные параметры-константы, отличающиеся от параметров-значений тем, что они не создают копий значений. |
Фактический параметр - это выражение соответствующего типа (в том числе, возможно, переменная или константа), значение которого должно быть вычислено в момент вызова и подставлено при вызове на место формального параметра. Формальные и фактические параметры указываются списком параметров. В списке формальных параметров параметры описываются с указанием имени параметра и типа, причём параметры-переменные описываются с ключевым словом var, а параметры-константы - с ключевым словом const. Одна группа параметров отделяется от другой точкой с запятой. В группе параметров одного типа имена параметров отделяются запятой.
|
Замечание
|
Поскольку описание одной подпрограммы может быть вложено в описание другой подпрограммы, следует различать вызывающую подпрограмму и вызываемую подпрограмму. Вызываемая подпрограмма вложена в вызывающую подпрограмму. Роль вызывающей подпрограммы может выполнять и основная программа. |
Между списком формальных параметров и списком фактических параметров должно быть взаимно однозначное соответствие (при просмотре списка), причем тип фактического параметра должен точно совпадать с типом формального параметра.
|
Замечание
|
В описании одной подпрограммы может содержаться вызов другой подпрограммы, а та в свою очередь может содержать вызов первой подпрограммы. Для возможности корректного описания таких подпрограмм используются опережающие описания с помощью директивы forward. Вначале записывается заголовок первой подпрограммы с директивой forward вместо тела подпрограммы. Затем дается полное описание второй подпрограммы и первой подпрограммы . |
4)Области действия имён в программах.
В программах, не использующих подпрограммы, имена, описанные в разделе описаний, действуют во всей программе, не вызывая каких-либо проблем. Совершенно иная ситуация имеет место, когда в программе используются подпрограммы. В подпрограммах могут использоваться свои локальные (внутренние) имена, и кроме того, она может также использовать глобальные (внешние) для неё имена из других подпрограмм или основной программы. Поскольку допустима иерархия подпрограмм в основной программе, необходимы чёткие правила действия имён в программах с подпрограммами. Рассмотрим эти правила, действующие в Турбо Паскале. Введём соответствующие определения. Локальными именами подпрограммы называются те имена, которые описаны в этой подпрограмме (в её разделе описаний). Все остальные, используемые в подпрограмме имена, являются глобальными именами данной подпрограммы. Правило действия локальных имён: все локальные имена доступны внутри подпрограммы и недоступны вне этой подпрограммы. Другими словами локальные имена теряют свои значения непосредственно при завершении подпрограммы. Пример: в процедуре print_f имена count, X, j - локальные имена. Правило действия глобальных имён: все глобальные имена доступны внутри подпрограмм в том случае, если они отличны от локальных имён. В той же процедуре print_f глобальным именем является имя процедуры window (из модуля CRT). Правило коллизии имён: Если локальные и глобальные имена (и типы) совпадают, то действует локальное имя, (оно "закрывает" такое же глобальное имя внутри подпрограммы). Формальные параметры подпрограммы локальны в этой подпрограмме, а фактические - глобальны. Глобальные имена (не входящие в фактические параметры) в силу правила их действия могут выступать как ещё один механизм связи подпрограмм с внешним окружением (дополнительный к механизму параметров подпрограмм, который следует считать основным). Однако при проектировании процедур по возможности следует использовать механизм параметров, поскольку он более структурированный и приводит к более понятным текстам программ. Если в подпрограмме используются одновременно и параметры и глобальные переменные, то это может быть свидетельством неудачно проведенной декомпозиции на подпрограммы: общее правило проектирования подпрограмм гласит, что подпрограмма должна иметь связи через минимальное число параметров или глобальных переменных. Впрочем, исключать использование глобальных переменных как самостоятельно, так и совместно с параметрами, конечно, нельзя.
2)Понятие о типе Множество в Турбо Паскале.
Множество является ещё одним структурным типом Турбо Паскаля, служащим для объединения однородных (однотипных) элементов. Однако форма объединения в Множество существенно отличается от типа Массив. Если в Массиве все элементы линейно упорядочены, то в Множестве - элементы неупорядочены. Понятие Множества в Паскале во многом похоже на конечное множество в дискретной математике и оказывается весьма удобным при решении многих задач управления, оптимизации, поиска и др. Паскаль - один из немногих языков программирования, поддерживающий тип Множество. Множество в Паскале - набор элементов одного и того же типа (порядкового типа или типа-диапазона), причем порядок элементов безразличен. Отсутствие порядка элементов означает, что нет прямого доступа к элементу множества, однако можно непосредственно проверить входит ли некоторый элемент в данное множество. Преимуществом типа Множество по сравнению с типом Массив является то, что множество может изменять количество своих элементов при выполнении программы, т.е. оно имеет черты динамической структуры в отличие от статического массива. Однако динамизм множеств лишь относительный: в Паскале количество элементов множества не может быть больше 256. Следовательно, не любой порядковый тип может быть типом элементов множества, а лишь такой, который содержит не более 256 элементов (например, нельзя использовать тип integer, однако можно использовать диапазоны от типа integer).
Описание типа Множество и константы-множества.
Формально тип Множество определяется в Паскале как тип, константами (значениями) которого являются все возможные подмножества из элементов базового типа, включая пустое множество. Базовым может быть порядковый тип или его тип-диапазон, содержащий не более 256 элементов, и каждый элемент которого имеет порядковый номер, не более 255. Описание типа Множество имеет форму:
type < имя типа-множества> = set of < базовый тип >;
Как и для других типов, для использования типа Множество необходимо вначале определить переменные этого типа. Например:
type primes = set of 1..200; {множество простых чисел до 200}
var pr1, pr2: primes; { переменные типа primes}
Константы типа Множество должны быть заключены в квадратные скобки (не путайте квадратные скобки для индексации элементов массива - которые всегда записываются только после имени массива, с квадратными скобками, выделяющими константы-множества !). Одной из констант любого типа-множества является пустое множество, обозначаемое как []. Все другие константы-множества содержат один или более элементов, заключенных в общие квадратные скобки. Для образования констант-множеств используется конструктор множества - список спецификаций элементов множества, отделяемых запятыми и заключенный в квадратные скобки. Каждая спецификация может быть не только константой базового типа, но и произвольным выражением базового типа, а также типом-диапазоном этого же базового типа. Примеры конструкторов множеств:
[2] {множество из одного элемента 2}
[ 0, 2..5] {множество из элементов 0,2,3,4,5}
[1..200] {множество всех чисел базового типа 1..200}
Допускается использование обычных и типизированных констант-множеств, описание которых осуществляется с помощью конструктора множеств. Например:
const initset: set of 0..16 = [0,1,2,4,8,16]; const range=[2..100];
Обработка множеств.
Над множествами Паскаля определены теоретико-множественные операции и отношения.
Операции над множествами:
+ операция объединения множеств, результатом её является множество, содержащее элементы множеств-операндов и только их.
Например:[2] + [2..5] даёт множество [2..5];
* операция пересечения множеств, результатом её является множество, содержащее только элементы, общие для множеств-операндов (т.е. входящие во все множества-операнды);
Например: [1..200] *[0,2..5] даёт множество [2..5];
- операция разности множеств, результатом её является множество, содержащее элементы множества-первого операнда и не содержащее элементы множества-второго операнда;
Например: [1..200] - [0,2..5] даёт множество [1, 6..200];
Отношения над множествами - бинарные отношения, имеющие применительно к множествам смысл эквивалентности (неэквивалентности) и включения одного множества в другое.
Два множества считаются эквивалентными, если они имеют одинаковые элементы (порядок перечисления элементов безразличен).
Множество А включено в множество В, если все элементы из А являются также элементами множества В.
= проверка эквивалентности, даёт true , если оба множества эквиваленты и false - в противном случае. Например: [1..3] =[3,1,2] - даёт true.
<> проверка неэквивалентности, является отрицанием эквивалентности.
Например: [1..3] <> [3,2,1] - даёт false.
<= проверка включения левого операнда в правый, даёт true, если такое включение имеет место и false - в противном случае.
Например: [5] <= [1..5] - даёт true, а [0] <=[1..5] - даёт false.
>= проверка включения правого операнда в левый, даёт true, если такое включение имеет место и false - в противном случае.
Кроме отношений эквивалентности и включения имеется ещё отношение принадлежности элемента множеству. Это отношение имеет структуру:
< выражение базового типа> in < множество над этим базовым типом >