Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Структурная схема программы на алгоритмическом языке.




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

1. Блок типа PROGRAM - имеет имя, состоящее только из латинских букв и цифр. Его присутствие не обязательно, но рекомендуется записывать для быстрого распознавания нужной программы среди других листингов.

2. Программный блок, состоящий в общем случае из 7 разделов:

  • раздел описания модулей (uses);
  • раздел описания меток (label);
  • раздел описания констант (const);
  • раздел описания типов данных (type);
  • раздел описания переменных (var);
  • раздел описания процедур и функций;
  • раздел описания операторов.

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

Рrogram ИМЯ..; {заголовок программы} Uses...; {раздел описания модулей} Var..; {раздел объявления переменных}... Begin {начало исполнительной части программы}... {последовательность... операторов} End. {конец программы}

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

Откройте файл, в который Вы запишите эту программу. Для этого нажмите клавишу F10, чтобы выйти в главное меню, затем клавишами перемещения курсора выберите опцию File, а в выпавшем меню команду New.

Примечание. Обратите внимание на оформление текста программы.

Program Summa2; {Задача. Вычислить сумму двух чисел и вывести на экран. Решение. Иванов Петр, 10 А класс.} Var number1, {переменная для хранения первого числа} number2, {переменная для хранения второго числа} rezult {переменная для хранения результата вычисления}: integer; Begin {признак начала программы} number1:= 3; {присваиваем переменной number1 значение 3} number2:= 4; {присваиваем переменной number2 значение 4} {складываем значения переменных number1 и number2 и результат присваиваем переменной rezult } rezult:= number1 + number2; Write (number1, '+', number2,'=',rezult); {вывод примера на экран} End. {признак конца программы}

Задание.

  1. Найдите в этой программе заголовок, раздел описания переменных, признак начала программы, признак конца программы, тело программы, комментарий.
  2. Что обозначает строчка:
    number1, number2, rezult: integer;
  3. Как вы понимаете запись:
    number1:= 3;
  4. Чему равно значение переменной rezult после выполнения оператора:
    rezult:= number1 + number2;
  5. Переведите с английского языка слово Write. Как вы думаете, что должен делать оператор с таким названием?
  6. Поменяем местами второй и третий операторы. Будет ли программа работать? Почему?
  7. Какой недостаток Вы видите у этой программы? Как нужно изменить условие задачи, чтобы решать подобные задачи с любыми числами. Подумайте, что должно измениться в теле нашей программы, чтобы выполнить эту задачу.

А теперь подведем итог вашим размышлениям.

Имя этой программы Summa2. Заметим, что требования к имени выполняются: оно отражает содержание программы, а также не содержит недопустимых символов.

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

Из разделов описаний имеется лишь один - раздел переменных. Он начинается со служебного слова Var. Мы описали три переменные: number1, number2, rezult. Все они переменные целого типа. Поэтому мы перечислили их через запятую, поставили двоеточие и указали тип переменных. Подобные объявления разделяются между собой точкой с запятой.

После описательной части идет раздел операторов, начинающийся со служебного слова Begin, после которого идут операторы языка.

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

Лексика языка. Типы данных.

Познакомимся с основными понятиями языка.

Алгоритм - четкая последовательность действий, необходимая для решения задачи.

Программа - алгоритм, записанный на языке программирования.

Алфавит языка - набор элементарных символов, используемый для составления программ. Алфавит содержит:

· 52 буквы латинского алфавита (строчные и заглавные);

  • арабские цифры (0-9);
  • специальные символы;
  • знаки математических действий (+ - * /);
  • знаки пунктуации (.:,; " `);
  • скобки ([ ] () { });
  • знак пробела;
  • знаки отношений (< > =).

Идентификатор (имя) - имя какого-либо элемента программы, которое должно удовлетворять следующим требованиям:

  • длина имени не должна превышать 63 символа,
  • первым символом не может быть цифра,
  • переменная не может содержать пробел;
  • имя не должно совпадать с зарезервированным (служебным) словом,
  • прописные и строчные буквы воспринимаются одинаково.

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

Примеры зарезервированных слов: AND, GOTO, PROGRAM, ELSE, IF, RECORD, NOT, ARRAY, REPEAT, UNTIL, BEGIN, IN, SET, END, CASE, CONST, USES, INTERFACE, STRING, LABEL, THEN, OF, DIV, TO, VAR, DO, TYPE, WHILE, DOWNTO, FILE, FUNCTION, PROCEDURE и другие.

Переменные (Var) - вид данных, который может изменять свое значение в ходе программы, описывают переменные после зарезервированного слова Var.

Константы (Const) - вид данных, который является постоянным на всем протяжении выполнения программы, описывают константы после зарезервированного слова Const.

Комментарии - некоторая запись, служащая для пояснения программы, которая записывается в фигурных скобках.

Типы данных

Для временного хранения информации в операторах памяти машины в языке Паскаль используются константы и переменные. Они могут быть различных типов:

  • целых чисел (см. ниже);
  • действительных чисел (real);
  • символьный тип (char);
  • строковый (string);
  • логический (boolean);
  • сложные (комбинированный (record), множественный (set) и другие).

Целые типы:

Название Длина в байтах Диапазон значений
Byte   0... 255
ShortInt   -128... 127
Word   0... 65535
Integer   -32768... 32767
LongInt   -2147483648... 2147483647

Над целыми типами определены такие операции:

  1. "+" - сложение;
  2. " * " - умножение;
  3. " - " вычитание;
  4. div - целочисленное деление;
  5. mod - получение остатка от целочисленного деления.

Вещественные типы:

Вещественные типы представляются с некоторой точностью, которая зависит от компьютера. Вам необходимо знать, что вещественный тип разделяется на несколько типов, но использовать мы будем вещественные данные только типа Real, которые занимают 6 байт, имеют диапазон возможных значений модуля от 2.9Е-39 до 1.7Е+38 и точность представления данных - 11...12 значащих цифр.

Примечание. Несмотря на то, что в Turbo Pascal имеется широкий выбор вещественных типов, доступ к некоторым из них (single, double, extended) возможен при особых режимах компиляции. Особое положение в Turbo Pascal занимает тип comp, трактующийся как вещественное число без экспоненциальной и дробной частей. Он сохраняет 19 - 20 значащих цифр и знак числа. В то же время comp полностью совместим с любыми другими вещественными типами.

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

Числа с фиксированной точкой изображаются десятичным числом с дробной частью, которая может быть и нулевой. Например, 27.9, 5.00

Такие большие числа как 137.000.000 можно записать в виде чисел с десятичным порядком 1.37·108. Такие числа имеют вид mEp. Здесь m - мантисса; E - признак записи числа с десятичным порядком; p - степень числа 10. Получится 1.37Е+8. Такие числа, представленные с десятичным порядком и называются числами с плавающей точкой. Например,

Математическая запись Запись на Паскале
4·10-4 4E -4
0,62·105 0.62E+5
-10,88·1012 -10.88E12

Компьютер, по умолчанию, представляет действительные числа в виде чисел с плавающей точкой. Такое представление чисел не очень нравится пользователям. Поэтому мы будем “заставлять” компьютер выдавать действительные числа в более привычном варианте следующим образом:

R:m:n, где R - действительное число, m - количество позиций, отводимых для целой части, n - количество позиций, отводимых для дробной части.

Например, если мы хотим вывести на экран число Chislo с фиксированной точкой, причем знаем, что для вывода целой части этого числа достаточно 7 мест, а вывод дробной части ограничим сотыми, то мы запишем вывод так:

Write (Chislo:7:2)

Символьный тип (char):

Значениями данного типа является множество всех символов компьютера: русская или латинская большая или маленькая буква, цифра, знак препинания, специальный знак (например, "+", "-", "*", "/", "", "=" и др.) или пробел " ". Каждый из символов имеет уникальный номер от 0 до 255, т. е. внутренний код, который возвращает функция ORD. Символьная константа или символьная переменная - любой символ языка, заключённый в апострофы. Например,

Var Simvol: char;

Строковый тип (string):

Значением строковой величины является строка переменной длины (быть может пустая). Строковая константа или строковая переменная представляет собой произвольную последовательность символов, заключенную в апострофы. Например,

Var Stroka: string;

Логический тип (boolean):

Логический тип данных часто называют булевым по имени английского математика Д. Буля, создателя математической логики. В языке Паскаль имеются две логические константы TRUE и FALSE. Логическая переменная принимает одно из этих значений и имеет тип Boolean. Для сравнения данных предусмотрены следующие операции отношений: <, <=, =, <>, >, >=. А также существуют специфичные для этого типа логические операции OR - или; AND - и; NOT - не.

При проверке некоторых условий результат операции может быть истинным или ложным. Например, 3>5 ложь.

Более подробно этот тип данных мы рассмотрим при изучении условного оператора.

Сложные типы:

К сложным или структурированным типам относятся массивы, записи, множества, которые требуют специального изучения и здесь рассматриваться не будут.

Задание. Откройте новый файл. Создадим программу, в которой опишем несколько переменных разного типа, введем в них значения и выведем на экран.

Program TipDann; Uses Crt Var Chislo1: Integer; Chislo2: Real; Simvol: Char; Stroka: String; Logika: Boolean; Begin ClrScr; Chislo1:=12; Chislo2:=Chislo1*2; Chislo2:=Chislo2/5; Simvol:=‘d’; Stroka:=‘Строчка’; Logika:= Chislo1> Chislo2; WriteLn (‘Вывод значений:’); WriteLn (‘Значение переменной Chislo1: ’,Chislo1); WriteLn (‘Значение переменной Chislo2: ’,Chislo2:5:2); WriteLn (‘Значение переменной Simvol: ’,Simvol); WriteLn (‘Значение переменной Stroka: ’,Stroka); WriteLn (‘Значение переменной Logika: ’,Logika); End.

Внимательно рассмотрите каждую строчку программы. Обратите особое внимание на описание переменных: Chislo1 - переменная целого типа, Chislo2 - действительного, Simvol - символьного, Stroka - строкового, Logika - логического. Далее в основной программе идет присвоение переменной Chislo1 целого числа 12, переменной Chislo2 - целого числа 24. Обратим внимание, что переменной действительного типа Chislo2 присвоено целое число; никакой ошибки нет, т. к. множество целых чисел является подмножеством множества действительных чисел. Следующая строчка еще более интересная: переменной Chislo2 присваивается значение той же переменной, только деленной на 5.

Такое присваивание используют в программах, если предыдущее значение этой переменной уже не понадобится и для более рационального использования описанных переменных. Для того чтобы переменной символьного типа присвоить какой-либо символ (например, d), надо этот символ записать в апострофах (знак «’»). Аналогично поступают с переменными строкового типа (смотри следующую строку программы). А про переменные логического типа мы знаем, что им можно присваивать только два значения: True и False. В этой программе мы присвоим значение результата сравнения двух переменных, здесь оно будет равно True. А теперь выведем присвоенные значения на экран.

Задание. Измените значения переменных и проанализируйте результаты выполнения программы. Сохраните программу на дискете под правильным именем в соответствующем каталоге. Распечатайте программу.

Переменные и константы.

ПЕРЕМЕННЫЕ. ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ

Тип переменных определяется пользователем в разделе описания переменных:

var

X,Y,Z: real;

I,J,K: integer;

Digit: 0..9;

C: Color;

Done,Error: boolean;

Operator: (plus, minus, times);

Hue1,Hue2: set of Color;

Today: Date;

Results: MeasureList;

P1,P2: Person;

Matrix: array[1..10,1..10] of Real;

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

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

В настоящее время в профессиональном программировании принято записывать имена переменных с использованием так называемой венгерской нотации.

Венгерская нотация – это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на языках Pascal, C и в среде Windows.

Венгерская нотация основывается на следующих принципах:

имена переменных и функций должны содержать префикс, описывающий их тип;

имена переменных и функций записываются полными словами или словосочетаниями или их сокращениями, но так, чтобы по имени можно было понять назначение переменной или действие, выполняемое функцией.

Префиксы записываются малыми буквами, первая буква каждого слова – заглавная, префиксы и слова записываются либо слитно, либо через символ _ (подчеркивание).

Для языка Паскаль могут быть рекомендованы следующие префиксы для скалярных переменных и функций:

Префикс Тип

By Byte

Sh Shortint

I Integer

W Word

L Longint

R Real

Si Single

D Double

E Extended

C Comp

Ch Char

B Boolean

P Pointer x,у координаты символа или точки на экране

Для величин структурированного типа могут быть использованы следующие префиксы:

a – Array

s – String

sz - Stringz

se – Set

re – Record

f – File

t - Text

Например:

rV, arVector[1..20], sName, iCount.

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

Для задания начальных значений переменным (инициализации переменных) Паскаль позволяет присваивать начальные значения переменным одновременно с их описанием. Для этого используется конструкция имя переменной: тип = значение; которая должна быть размещена в разделе описания констант, например:

const rWeight: Real = 0.4;

КОНСТАНТЫ

 

Тип констант в языке Паскаль определяется по их виду: константы целого типа – это целые числа, не содержащие десятичной точки, константы действительного типа – действительные числа, логические константы – логические значения TRUE и FALSE, символьные константы – либо строки длиной в один символ, либо конструкции вида #K или ^K.

 

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

 

256 - 1

(2.5 + 1) / (2.5 - 1)

'Borland' + '' + 'Pascal'

Chr(32)

Ord('Z') - Ord('A') + 1

 

Простейший случай выражения-константы представляет собой простая константа, например 100 или 'A'. В стандартном Паскале допускается использовать только простые константы. В Паскале разрешено использование выражений-констант.

 

Поскольку компилятор должен иметь возможность полностью вычислить выражение-константу во время компиляции, в качестве выражений-констант не допускается использовать следующие конструкции:

 

Ссылки на переменные и типизированные константы (кроме констант в адресных выражениях).

Вызовы функций (кроме тех, которые отмечены далее).

Оператор получения адреса @ (кроме констант в адресных выражениях).

За исключением этих ограничений для выражений-констант соблюдаются те же синтаксические правила, что и для обычных выражений.

 

В выражениях-константах допускается использовать следующие стандартные функции:

 

Abs, Chr, Hi, High, Length, Lo, Low, Odd, Ord, Pred, Ptr, Round, SizeOf, Succ, Swap, Trunc.

 

Приведем некоторые примеры использования выражений-констант в описаниях констант:

 

const

Min = 0;

Max = 100;

Center = (Max - Min) div 2;

Beta = Chr(255);

NumChars = Ord('Z') - Ord('A') + 1;

Message = 'Out of memory';

ErrStr = 'Error:' + Message + '.';

ErrPos = 80 - Length(Error) div 2;

ErrAttr = Blink + Red * 16 + White;

Ln10 = 2.302585092994095684;

Ln10R = 1 / Ln10;

Numeric = ['0'..'9'];

Alpha = ['A'..'Z','a'..'z'];

AlphaNum = Alpha + Numeric;

Выражения и операции.

ВЫРАЖЕНИЯ

 

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

 

1. Унарная операция not, унарный минус –, взятие адреса @. Например,

 

not Done { отрицание булевской переменной }

@Х { указатель на переменную }

-15 { константа со знаком }

 

2. Операции типа умножения: *, /, div, mod, and, shl, shr. Например,

 

Х * Y

Z / (1 - Z)

i mod j = i - (i div j) * j

 

3. Операции типа сложения: +, –, or, xor. Например,

 

Done or Error

(Х+Y+Z)

 

4. Операции отношения: =, <>, <, >, <=,> =, in. Например,

 

(Х <= Y) and (Y < Z)

 

Выражения входят в состав многих операторов языка Паскаль, а также могут быть аргументами встроенных функций. Например,

 

SIN(Х/2) { вызов функции }

['0..'9','А'..'Z'] { описатель множества }

сhar(Digit+48) { назначение типа }

 

Битовая арифметика

 

Битовая или поразрядная арифметика введена в Паскале для обеспечения возможности работы с двоичными разрядами (битами). Операции битовой арифметики применимы только к целым типам.

 

Первая группа операций – логические операции not, and, or и xor.

 

Операция not является одноместной, она изменяет каждый бит целого числа на обратный.

 

Операции and, or и xor – двуместные, операнды этих операций – целые величины одинаковой длины. Операции выполняются попарно над всеми двоичными разрядами операндов.

 

Вторая группа операций – это операции сдвига влево shl и сдвига вправо shr:

 

I shl N

I shr N.

 

Эти операции сдвигают двоичную последовательность значения I влево или вправо на N двоичных разрядов. При этом биты, уходящие за пределы разрядной сетки, теряются, а освободившиеся двоичные разряды заполняются нулями. При сдвиге вправо отрицательных значений освободившиеся разряды заполняются единицами.

 

Операторы языка.

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...