Мегаобучалка Главная | О нас | Обратная связь


Структура программы на языке Pascal



2016-01-26 1124 Обсуждений (0)
Структура программы на языке Pascal 0.00 из 5.00 0 оценок




Напомню, что программа - это упорядоченный список команд. Каждый язык программирования предлагает свою систему упорядочивания этого списка. Так, например, возможно знакомый вам BASIC просто нумерует строки. В Паскале мы будем говорить о достаточно строгой структуре программы, которая должна соблюдаться неукоснительно. Иначе компьютер просто не поймет вас.

Любая программа (или программная единица- процедура или функция) на Паскале должна состоять из трех основных разделов:

I Раздел заголовка (объявления программной единицы)

II Раздел описаний;

III Раздел исполняемых операторов (тело программы).

В разделе заголовка содержится одна единственная строчка, которая указывает компилятору, что он имеет дело именно с программой (процедурой или функцией) и, более того, с программой под определенным именем. Для программ эта срока начинается с зарезервированного слова program, после которого следует собственно имя программы. В конце обязательно ставится точка с запятой.

Раздел описаний может иметь как одну единственную строчку, так и достаточно большое их количество. В разделе описаний должны содержаться описания всех идентификаторов, используемых в разделе исполняемых операторов. Так, например, описание переменных начинается с зарезервированного слова VAR, а описание констант (если они используются) - CONST.

Тело программы (раздел исполняемых операторов) содержит собственно программный код, отвечающий за реализацию алгоритма. При этом тело программы обязательно оформляется так называемыми операторными скобками - begin ... end.

Т.е. все операторы, реализующие ваш алгоритм должны помещаться между этими операторными скобками.

Таким образом, структура программы Pascal в простейшем случае имеет вид:

Рисунок 2.2.5.

В более сложных программах кроме переменных часто приходится помещать в раздел описаний не только описание переменных. В таком случае раздел описаний в свою очередь может содержать некоторое множество разделов (подразделов).

Раздел описания (в общем случае) состоит из

- раздела описания используемых библиотек USES;

- раздела описания меток LABEL;

- раздела описания констант CONST;

- раздела описания типов TYPE;

- раздела описания переменных VAR;

- раздела описания процедур и функций.

ЭКЗАМЕНАЦИОННЫЙ БИЛЕТ № 6 и 7

1. О понятии “архитектура ЭВМ”

Термин “архитектура” используется в популярной литературе по вычислительной технике достаточно часто, однако определение этого понятия и его содержание могут у разных авторов достаточно различаться. Разберемся в этом вопросе более тщательно.

Начать целесообразно с происхождения термина. Слово “архитектура” в изначальном своем смысле используется в градостроении. Будучи достаточно сложной структурой, современный город состоит из районов, площадей, улиц, домов и т.п., расположенных определенным образом. Жителей города обычно мало интересует, как выглядит конкретный дом и из каких материалов он построен. Зато очень важно знать район, где этот дом расположен, улицы, ведущие к нему, и транспорт, пользуясь которым можно сократить время в пути.

Для того, чтобы ориентироваться в хитросплетении улиц и площадей, в любом городе существует исторически сложившаяся система названий, а также определенная нумерация домов. Наличие общепринятой адресации позволяет однозначно определить положение любого строения и в случае необходимости быстро отыскать его. Именно на существовании такой адресной системы построена работа почты. Во многих случаях расположение улиц и присвоение им имен носит беспорядочный характер. В то же время бывает, что эта деятельность тщательно продумана и является продолжением общей планировки города, т.е. фактически частью его архитектуры. Классическим примером может служить известная система взаимно-перпендикулярных улиц (авеню и стриты) города Нью-Йорка. Помимо чисто практической, архитектура города может иметь еще и художественную ценность (что обычно больше интересует приезжих). Но этот аспект понятия “архитектура” вряд ли переносим на вычислительную технику.

Используя аналогию с градостроительством, естественно понимать под архитектурой ЭВМ ту совокупность их характеристик, которая необходима пользователю. Это, прежде всего, основные устройства и блоки ЭВМ, а также структура связей между ними. И действительно, если заглянуть, например, в “Толковый словарь по вычислительным системам”, мы прочтем там, что термин “архитектура ЭВМ используется для описания принципа действия, конфигурации и взаимного соединения основных логических узлов ЭВМ (вследствие чего термин “архитектура” оказывается ближе к обыденному значению этого слова)”.

Однако описание внутренней структуры ЭВМ вовсе не является самоцелью: с точки зрения архитектуры представляют интерес лишь те связи и принципы, которые являются наиболее общими, присущими многим конкретным реализациям вычислительных машин. Часто говорят даже о семействах ЭВМ. т.е. группах моделей, совместимых между собой. В пределах одного семейства основные принципы устройства и функционирования машин одинаковы, хотя отдельные модели могут существенно различаться по производительности, стоимости и другим параметрам. Ярким примером могут служить различные модификации компьютеров PDP фирмы DEC (более известные нашим пользователям по отечественным аналогам – серии ДВК), семейство MSX-машин. к которому принадлежит широко распространенная YAMAHA, а также заполонившие мир IBM-совместимые персональные компьютеры.

Именно то общее, что есть в строении ЭВМ, и относят к понятию архитектуры. Важно отметить, что целью такой общности в конечном счете служит вполне понятное стремление: все машины одного семейства, независимо от их конкретного устройства и фирмы-производителя, должны быть способны выполнять одну и ту же программу (на практике из-за постоянного роста вычислительной мощности техники чаще используется менее жесткий принцип совместимости снизу вверх: все программы данной модели выполнимы на более старших). Отсюда неизбежно следует вывод, что с точки зрения архитектуры важны не все сведения о построении ЭВМ, а только те, которые могут как-то использоваться при программировании и “пользовательской” работе с ЭВМ. Равно как максимально подробная архитектура города не нуждается в описании марок кирпичей, из которых построены дома, и растворов, которыми эти кирпичи скреплены, так и архитектура ЭВМ не содержит описания электронных схем, других деталей реализации, “невидимых” для пользователя (например, внутреннего ускорителя доступа к памяти).

Ниже приводится перечень тех наиболее общих принципов построения ЭВМ, которые относятся к архитектуре:

• структура памяти ЭВМ;

• способы доступа к памяти и внешним устройствам;

• возможность изменения конфигурации компьютера;

• система команд;

• форматы данных;

• организация интерфейса.

Суммируя все вышеизложенное, получаем следующее определение архитектуры:

“Архитектура – это наиболее общие принципы построения ЭВМ, реализующие программное управление работой и взаимодействием основных ее функциональных узлов”.

2. Константа, переменная — это основополагающие понятия в любом языке программирования. Дадим определения этим понятиям.

Константа — это величина, которая при выполнении программы остаётся неизменной.

Переменная — это ячейка памяти для временного хранения данных. Предполагается, что в процессе выполнения программы значения переменных могут изменяться.

Описание и инициализация переменных

Прежде чем использовать в программе какую-то переменную, надо обязательно дать её описание, то есть сказать, какое имя имеет переменная и каков её тип. Вначале указывается тип переменной, а затем её имя. Например:

int k; // это переменная целого типа int

double x; // это переменная вещественного типа удвоенной точности

Если имеется несколько переменных одного типа, то допускается их описание через запятую в одном операторе, например:

double a, b, c;

После описания переменной её можно использовать, но возникает вопрос: а какое значение имеет переменная сразу же после её описания? Ответ таков: в программе на языке C# значение переменной после описания не определено. Такая переменная может использоваться в левой части оператора присваивания, но её нельзя использовать в выражении или в правой части оператора присваивания. Например:

double x, y, z;

x=2.5; // так можно

y=z+1; // а так нельзя! Переменная z не определена

Для последнего оператора компилятор языка C# выдаст сообщение об ошибке. Этим свойством (нельзя использовать переменную, которая не получила ни какого значения) язык C# выгодно отличается от своих предшественников — языков С и С++.

Чтобы избежать проблемы, рекомендуется инициализировать переменные, то есть не просто выделять память под переменные, но и задавать им при этом необходимые значения. Например:

double x=3, y=4, z=5;

Инициализация переменных выполняется один раз на этапе компиляции и ни как не сказывается на скорости работы программы.

Задание и использование констант

Выше было дано определение констант. Теперь рассмотрим работу с константами более подробно.

Все константы вне зависимости от типа данных можно подразделить на две категории: именованные константы и константы, которые не имеют собственного имени. Например:

25 — константа целого типа;

3.14 — вещественная константа;

'A' — символьная константа.

Все три приведённые здесь константы не имеют имени, они заданы своим внешним представлением и используются в программе непосредственно, например так:

int k=25; // переменная k инициализирована константой — целым числом 25.

В ряде случаев константе удобнее дать имя и использовать её далее по имени. Это делает текст программы более наглядным. Обычно применяется для математических или физических констант.

В языке C# определить именованную константу очень просто Для этого используют ключевое слово const, например:

const double PI=3.14; // здесь PI — константа

double t;

Типы переменных, используемых в Турбо-Паскале, приводятся в таблице. Некоторые типы объединены в группы: структурированные, простые типы.

Структурированные типы Простые типы Строковый тип

Массивы Вещественные Указатели

и ссылки

Записи Порядковые

Процедурные

Множества Целый тип типы

Логический тип

Файловые типы Символьный тип Объекты

Перечислимый тип

Тип-диапазон

Используются стандартные имена типов, либо имя типа задается в разделе описания программы, например: TYPE A = array 1 . . 1000 of real ;

Тип переменной объявляется после служебного слова VAR, например:

VAR a1, a2: A; массивы из 1000 элементов вещественных чисел типа «A»

Если не использовать служебное слово TYPE, то можно записать:

VAR a1, a2 : array 1 . . 1000 of real ;

Рассмотрим подробнее описание некоторых стандартных типов и допустимые диапазоны изменения значений переменных.

Вещественные типы Примеры описания:

Наименование размер кол. диапазон VAR c, d, e: real;

типа ( байт ) цифр значений d1, d2: double;

Single 4 7..8 10 (-45..+38) Примеры присвоения значения:

Real 6 11..12 10 (-39..+38) с:= –125. 6; e:= 10;

Double 8 15..16 10 (-324..+308) d:= 1. e02; или d:= 100.;

Extended 10 19..20 10 (-4951..+4932) d1:= 1.2e-257; 1.2*10-257

Comp 8 19..20 –263 +1..+263 –1 Comp – число без дробной части

и без точки.

Примечание: типы Single, Double, Extended работают при подключении сопроцессора, в том числе при эмуляции сопроцессора. Для этого в меню Options, Compiler установить Numeric processing: X 8087/80287, а также X Emulation, либо в начале программы установить режим компиляции $N+.

Порядковые типы имеют конечное число возможных значений.

Целые типы

Наименование размер диапазон Примеры описания:

типа ( байт ) значений VAR i, j, k: byte;

h, m, n: integer;

Byte 1 0..255 l1, l2, l3: longint;

Shortint 1 –121..+127

Word 2 0..65535 Примеры присвоения значения:

Integer 2 –32761..+32767 i:= 222; j:= 10; m:= –23000;

Longint 4 –2147483641.. l1:= 280000;

+2147483647 h:= $A7; (шестнадцатеричный

формат числа 10*16+7)

Логический тип

Переменные логического типа могут принимать значения:

False (ложно) или True (верно).

Примеры описания: VAR b1, b2, b3, b4: boolean;

Примеры присвоения значения:

b1:= True; b2:= False; b3:= not b1; или b3:= False; b4:= b1;

Символьный тип

Переменные символьного типа могут принимать значения одного из символов с кодами от #0 до #255, т. е. допускаются буквы русского алфавита и символы псевдографики. Символы с кодами от #0 до #31 (управляющие) в тексте воспринимаются как пробел, а в операторах вывода как символ или команда.

Примеры описания: VAR с, ch, e: char;

Примеры присвоения значения:

c:= '!'; c:= #33; символ «!» задается значением кода

ch:= #13; код клавиши Enter e:= #27; код клавиши Esc

Примеры вывода: Write(с); выводится символ « ! «

Write(ch); команда перевода курсора на новую строчку

Write(е); выводится специальный символ, соответствующий коду #27

Строковый тип

Переменная строкового типа задается набором символов, заключенных в кавычки.

Примеры описания: VAR s: string 25; s1: string;

длина переменной s может изменяться от 1 до 25 символов

длина переменной s1 не указывается, наибольшее число символов равно 255

Примеры присвоения значения: s:= 'Привет'; s1:= 'Hello';

Массив

Массив – упорядоченные данные одного типа, состоящие из переменных (элементов массива). Элементы массива имеют свой порядковый номер (индекс) и значение. Значение присваивается отдельно каждому элементу массива, либо сразу всем элементам массива (копирование одного массива в другой в случае массивов одинакового типа). Массив может быть многомерным (без ограничения), но занимать не более 65520 байт. Примеры описания:

VAR M1: array 1..200 of integer; A1: array 100..200 of real;

ch1: array 'A'..'Z' of char; ch2: array 0..255 of char;

М1, A1 – одномерные массивы целых и вещественных чисел

сh1, ch2 – одномерные массивы символов

Примеры присвоения значения:

M1 1:=5; M1 2:=8; M1 3:= M1 1; M1 100:=32;

A1 101:=0.2; A1 102:=2.31; ch1 'B':='C'; ch2 1:='!'

Тип-диапазон и перечислимый тип задаются программистом. Примеры описания:

TYPE DateM= 1..31; Rushb= 'А..Я'; Latb= 'A..Z'; тип диапазон

Otmetka= (2,3,4,5); Ball= (1,2,3,4,5,6,7,8,9,10); перечислимый тип

VAR t1,t2:DateM; c1:Ruchb; s1:Latb; a1,a2:Otmetka; b:Ball;

Примеры присвоения значения: t1:= 10; c1:= 'Л'; s1:= 'F'; a1:=5; b:= 8;

Файлы

Файл – именованная область внешней памяти ЭВМ, содержащая различные данные. Длина файла ограничена доступной дисковой памятью. Файлы могут быть текстовые, типизированные и нетипизированные. Рассмотрим описание текстовых файлов, хранящих информацию в виде строк переменной длины с последовательным доступом к данным.

Примеры описания: VAR f1, f2: text;

Примеры присвоения значения: Assign( f1, 'file1. in' );

Assign( f2, 'C:\ PASCAL\ WORK\ file2. out' );

Оператор Assign присваивает файловой переменной имя файла на диске.

Файл file1. in содержится в текущем каталоге. Для файла file2. out указывается дорожка DOS.

Записи

Записи – вводимый программистом тип, определяемый как структура данных разного типа, содержащая названия полей с указанием их типов, расположенных между служебными словами Record и End.

Примеры описания: Type Sity = Record

NameG: String 20; название города

NumbG: LongInt; число жителей

StolG: Boolean; Столица (Да, Нет)

Shir, Dol: Real Координаты: широта, долгота

End;

Var St1, St2, St3: Sity; Переменные типа запись

Примеры присвоения значения:

St1. NameG:= 'Уфа'; St1. NumbG:=1200000; Отдельным полям переменной St1

St2. NameG:= 'Москва'; St2. NumbG:=8200000;

St3:= St1; Всем полям переменной St3

Переменные типа запись могут обозначаться с помощью оператора присоединения:

WITH «имя переменной» DO «оператор»;

Например: With St1 do Begin

NameG:= 'Уфа'; Stolg:= True; Readln(Shir, Dol);

z:= NumbG – St2. NumbG; Writeln(NameG:5, NumbG:10) end;

Тип char

char - является самым экономным типом. Тип char может быть знаковым и беззнаковым. Обозначается, соответственно, как "signed char" (знаковый тип) и "unsigned char" (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый - от 0 до 255. Под переменную типа char отводится 1 байт памяти (8 бит).

Ключевые слова (модификаторы) signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый.

Тип int

Целочисленная величина int может быть short (короткой) или long (длинной).

 

Ключевое слово (модификатор) short ставится после ключевых слов signed или unsigned. Таким образом, различают следующие типы: signed short int, unsigned short int, signed long int, unsigned long int.

Переменная типа signed short int (знаковая короткая целая) может принимать значения от -32768 до +32767, unsigned short int (беззнаковая короткая целая) - от 0 до 65535. Под каждую из них отводится ровно по два байта памяти (16 бит).

При объявлении переменной типа signed short int ключевые слова signed и short могут быть пропущены, и такой тип переменной может быть объявлен просто int. Допускается и объявление этого типа одним ключевым словом short.

Переменная unsigned short int может быть объявлена как unsigned int или unsigned short.

Под каждую величину signed long int или unsigned long int отводится 4 байта памяти (32 бита). Значения переменных этого типа могут находиться в интервалах от -2147483648 до 2147483647 и от 0 до 4294967295 соответственно.

Существуют также переменные типа long long int, для которых отводится 8 байт памяти (64 бита). Они также могут быть знаковыми и беззнаковыми. Для знакового типа диапазон значений лежит в пределах от -9223372036854775808 до 9223372036854775807, для беззнакового - от 0 до 18446744073709551615. Знаковый тип может быть объявлен и просто двумя ключевыми словами long long.

 

Тип Диапазон Шестнадцатиричный диапазон Размер

unsigned char 0 ... 255 0x00 ... 0xFF 8 bit

signed char

или просто

char -128 ... 127 -0x80 ... 0x7F 8 bit

unsigned short int

или просто

unsigned int или unsigned short 0 ... 65535 0x0000 ... 0xFFFF 16 bit

signed short int или signed int

или просто

short или int -32768 ... 32767 0x8000 ... 0x7FFF 16 bit

unsigned long int

или просто

unsigned long 0 ... 4294967295 0x00000000 ... 0xFFFFFFFF 32 bit

signed long

или просто

long -2147483648 ... 2147483647 0x80000000 ... 0x7FFFFFFF 32 bit

unsigned long long 0 ... 18446744073709551615 0x0000000000000000 ... 0xFFFFFFFFFFFFFFFF 64 bit

signed long long

или просто

long long -9223372036854775808 ... 9223372036854775807 0x8000000000000000 ... 0x7FFFFFFFFFFFFFFF 64 bi

 



2016-01-26 1124 Обсуждений (0)
Структура программы на языке Pascal 0.00 из 5.00 0 оценок









Обсуждение в статье: Структура программы на языке Pascal

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...
Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (1124)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)