Лекция 5.ppt
- Количество слайдов: 51
Принципы структурного программирования на примере языка Pascal Лекция 5
Программа, введенная в ЭВМ, обрабатывается транслятором соответствующего языка. В процессе трансляции проверяется правильность записи конструкций языка (синтаксический контроль). Если обнаружены ошибки, выводится соответствующее сообщение и трансляция приостанавливается, если ошибок нет - строится выполняемая программа. При этом выделяется память для всех данных программы и фиксируется их тип (информация для этого берется из раздела описаний программы).
Тип данных и переменная n n n В языках программирования такие свойства данных, как форма их представления и занимаемая ими память сознательно отделены друг от друга и представлены в виде понятий тип данных и переменная. Под типом данных (ТД) понимается описание данных определенного вида, для которых известен их способ представления в памяти (формат), следующие из него размерность и диапазон значений, а также определен набор операций. Т. е. тип данных – это «идеи» о представлении переменных определенного вида, и они должны быть известны транслятору (для генерации необходимого кода) и программисту. Переменная в ее первичном архитектурном понимании – это область памяти, в которой содержатся данные определенного типа. Имя переменной напрямую ассоциируется с ее адресом, содержимое памяти – со значением переменной.
Концепция данных в Паскале n n n Каждому данному, используемому в программе приписывается некоторый тип. Тип константы определяется видом самой константы. Тип переменной задается явным указанием типа в разделе переменных. Среди типов, используемых в языке, есть стандартные и определяемые программистом. Любой тип определяет множество значений, которые могут принимать переменные соответствующего типа.
n n n Типы данных делятся на простые (скалярные) и производные. Значением переменной скалярного типа является одно данное (число, буква и т. п. ). Значением переменной производного типа является, как правило, сложная структура, состоящая из различных компонентов.
n n Все скалярные типы, кроме вещественных, являются порядковыми типами, т. е. среди множества их значений установлен линейный порядок. Для порядковых типов в Паскале определены следующие функции: Succ(x) - дает следующее за x значение данного типа; Pred(x) - дает предыдущее значение.
n n Например: Значение Succ(3) равно 4, значение Pred(7) равно 6. Следует иметь в виду, что применение функции Succ к последнему элементу и функции Pred к первому элементу последовательности приводит к ошибке.
Арифметические типы данных
Данные целого типа В Паскале определены пять целых типов: shortint, integer, longint, byte, word. Эти типы отличаются диапазонами представимых значений, так например: n n q q q integer значения от -32768 до 32767, shortint от -128 до 127 byte от 0 до 255.
Над целыми данными определены следующие операции: n + сложение, n - вычитание, n * умножение, n div - целочисленное деление (операнды целые, результат целый), n mod - остаток от деления целых чисел.
Данные вещественного типа Вещественные данные также представлены несколькими типами (Single, Real, Double, Extended, Comp). Наиболее употребительный из них real. Над вещественными типами определены операции: n + сложение, n - вычитание, n * умножение, n / деление. Если операцию «/» применить к целым данным, то результат будет вещественный
Стандартные функции n n n Над арифметическими данными определены некоторые стандартные (элементарные) функции. В отличие от математики в Паскале обращение к таким функциям осуществляется единообразно, независимо от конкретной функции. Для использования такой функции надо написать ее имя и за ним в скобках параметр (аргумент).
Функция Вызов функции Тип аргумента Тип значения Абсолютное значение Х Abs( X ) Целый/ Вещественный Как у аргумента Синус Х радиан Sin( X ) Вещественный Косинус Х радиан Cos( X ) Вещественный Arc. Tan( X ) Вещественный Квадратный корень из Х Sqrt( X ) Целый/ Вещественный Как у аргумента Значение квадрата Х Sqr( X ) Целый/ Вещественный Как у аргумента Значение е в степени Х Exp( X ) Вещественный Натуральный логарифм Х Целая часть значения Х Ln( X ) Вещественный Trunc( X ) Вещественный Long. Int Frac( X ) Вещественный Int( X ) Вещественный Round( X ) Вещественный Long. Int Арктангенс Х радиан Дробная часть значения Х Целая часть значения Х Округление Х
Логические типы данных
Логические типы данных n n n В Паскале логический тип данных носит название BOOLEAN. Значением логического типа может быть одна из двух констант: FALSE (ложь) или TRUE (истина). Логические переменные должны быть описаны предложением: Var <имя_переменной>: boolean; Величины логического типа данных можно присваивать, выводить, но нельзя вводить процедурой read.
Логические выражения n n Логические выражения (условия) – это выражения, которые могут принимать лишь одно из двух значений: true (истина) или false (ложь). Для построения логических выражений используются операции отношения: q q q = (отношение на равенство), <> (отношение на неравенство), < (отношение меньше), > (отношение больше), <= (отношение меньше или равно), >= (отношение больше или равно).
Пример
Логические операции n n Сложные условия составляются из простых с помощью логических операций: and (логическое «И» ), or (логическое «ИЛИ» ) и not (логическое «НЕ» ). При составлении сложных условий операнды логического выражения берутся в скобки (x<2)and(x>=0) При вычислении логических выражений операции выполняются в следующем порядке: not, and, or, операции отношения, арифметические операции. Если порядок выполнения операций нужно изменить, то применяют скобки.
Остальные типы данных n n Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов. Интервальный тип определяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне. Type month = 1. . 12; Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных. Type colors = (red, white, blue, black); Все вышеописанное – это простые типы данных. Но бывают и более сложные, структурированные, которые базируются на простых типах.
Структурированные типы данных n n n Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа. Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение характерная черта Pascal. Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях данные могут иметь разный тип. Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа. Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (например, на жестком диске – это тоже внешняя память). Понятие такого типа данных как указатель связано с динамическим хранением данных в памяти компьютера. Часто использование динамических типов данных является более эффективным в программирование, чем статических.
Структура программы, написанной на языке Pascal
Заголовок n n n Программа состоит из заголовка и блока. В заголовке указывается имя программы и список параметров. Общий вид: program n (input, output, x, y, …); здесь n – имя программы; input – файл ввода; output – файл вывода; x, y – внешние файлы, используемые в программе. Заголовка может и не быть или он может быть без параметров.
Основной блок n n n Блок программы состоит из шести разделов, следующих в строго определенном порядке: q раздел меток (label) q раздел констант (const) q раздел типов (type) q раздел переменных (var) q раздел процедур и функций q раздел операторов (действий). Раздел операторов должен присутствовать всегда, остальные разделы могут отсутствовать. Каждый из первых четырех разделов начинается с соответствующего ключевого слова (label, const, type, var), которое записывается один раз в начале раздела и отделяется от последующей информации только пробелом, либо концом строки, либо комментарием.
Раздел меток (label) n n Любой выполняемый оператор может быть снабжен меткой – целой положительной константой, содержащей не более 4 -х цифр. Все метки, встречающиеся в программе, должны быть описаны в разделе label. Общий вид записи label l 1, l 2, l 3…; Пример: label 10, 20, 30; 20: a: =b;
Раздел констант (const) Раздел констант начинается словом const, за которым следует задание констант. Задание константы состоит из имени константы, знака равенства и значения константы. Например: const g = 9. 8; s = 1000; • Значение константы задает тип константы. • Так, в приведенном примере g - вещественная константа, а s - целая.
n n n В любом месте программы, где будет использовано имя константы, при вычислениях будет подставлено ее значение. Величина константы в процессе вычислений не может изменяться. Естественно, что наряду с константами, заданными таким образом, в программе можно использовать явно записанные константы (значения).
Раздел типов (type) Раздел типов начинается словом type. n В этом разделе можно сформировать новые типы. n Задание типа состоит из имени типа, знака равенства и описания типа. n Общий вид записи: type t 1 = вид_типа; t 2 = вид_типа; где t 1 и t 2 – идентификаторы вводимых типов. n Затем тип используется при объявлении переменных. n
Пример задания нестандартных типов сonst len=40; type year=1930. . 2010; names=string[len]; var empl: names; y: year;
Раздел переменных (var) n n Раздел переменных служит для приписывания типа всем переменным, используемым в программе. Этот раздел начинается словом var, за которым следуют описания переменных, разделенные точкой с запятой.
Описание переменной состоит из имени переменной, за которым через двоеточие следует приписываемый ей тип. n Если один и тот же тип надо приписать нескольким переменным, их имена перечисляют через запятую, а затем после двоеточия указывают тип. Например: var i, j, k : integer; x, y, z : real; n Тип переменной можно задать двумя способами: q указать имя типа (например, real, color и т. д. ), q или описать сам тип, например: array[1. . 16] of char n
Раздел операторов n n Раздел операторов начинается словом Begin и заканчивается словом End, после которого ставится точка, означающая конец программы. Этот раздел является обязательным. В нём записываются операторы, реализующие соответствующий алгоритм.
Операторы • • • Операторы языка задают те действия, которые надо выполнить для решения задачи. Идущие друг за другом операторы разделяются точкой с запятой. ; Если оператор стоит перед end, until или else, то в этом случае точка с запятой не ставится. Все операторы Паскаля делятся на простые и структурированные (составные). К простым операторам относятся такие, которые не содержат в своем составе других операторов.
Оператор присваивания ПЕРЕМЕННАЯ ВЫРАЖЕНИЕ i: =i+1 n n С помощью этого оператора присваивается значение переменной. Оператор состоит из двух частей и знака присваивания между ними. Знак присваивания состоит из двоеточия и равенства. : = Слева от знака присваивания записывается переменная, справа - выражение.
Выражения В операторах присваивания можно использовать арифметические выражения. Например: num : = (d + n) / 10; s: = trunс(num) + 1; n Функция trunc дает целый результат, а число 1 записано без десятичной точки; таким образом, оба слагаемых в сумме дают целое значение. n Деление (с использованием знака «/» ) всегда дает вещественный результат: 6. 5 / 2 = 3. 25 6 / 2 = 3. 0 n Деление нацело (нахождение частного и остатка) может быть выполнено при помощи операций div и mod. n Выражение может включать в себя и целые и вещественные члены. Наличие хотя бы одного вещественного члена или знака «/» приводит к тому, что значение результата будет вещественным. Функции trunc и round могут быть использованы для преобразования вещественного числа в целое. n
n знаки <, >= и др. тоже играют роль операций. Выражения, содержащие подобные операции, принимают логическое значение и называются логическими выражениями. В состав логических выражений могут входить логические операции not (не), and (и), or (или).
Выводы n При выполнении оператора, значение выражения подсчитывается и полученный результат присваивается переменной. n Тип переменной и выражения должны совпадать ( или, по крайней мере, должны быть совместимы для присваивания).
Составной оператор Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор. n Составной оператор начинается ключевым словом begin и заканчивается словом end. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования. После end ставится точка с запятой, а после begin – только пробелы (либо комментарий). Begin i : = 2; k : = i / 5 end; Слова begin и end играют роль операторных скобок. Тело самой программы также имеет вид составного оператора. После последнего end программы ставится точка. Нельзя извне составного оператора передавать управление внутрь его. n
Комментарии n n В любом месте программы могут быть помещены комментарии. Это любой текст, заключенный в фигурные скобки { }. Комментарии не влияют на выполнение программы, но облегчают ее чтение. Грамотно написанная программа должна содержать комментарии.
Логические операции Рассмотрим три логические операции: NOT AND OR
Операция отрицания NOT Операция NOT - одноместная операция, изменяет истинностное значение следующего за ней операнда. Так, например, если значение переменной c есть True, то NOT c - имеет значение False.
Операция Логическое «И» n n Операция AND - логическое “И” (конъюнкция); двуместная операция. Результат этой операции имеет значение True только в том случае, когда оба операнда имеют значение True.
Операция Логическое «ИЛИ» n Операция OR - логическое “ИЛИ” (дизъюнкция) двуместная операция. Результат этой операции имеет значение True, если хотя бы один операнд имеет значение True, - результат False в том случае, если оба операнда принимают значение False.
Из логических операций наивысший приоритет имеет операция NOT, затем следует операция AND и наименьший приоритет имеет операция OR. Для изменения порядка выполнение логических операций используются круглые скобки в обычном смысле.
Операндами в логических операциях могут быть: § логические константы, § переменные типа Boolean, § функции типа Boolean, § отношения, заключенные в круглые скобки.
Примеры логических выражений: ( F > B) OR ( D <= 10 ) NOT (A > B ) ( A > 1 ) AND ( A < 10 ) NOT (( A > 1 ) AND ( A < 10 )).
Условный оператор Этим оператором программируют базовую конструкцию алгоритмов – ветвление. да нет S A B
При выполнении программы, в зависимости от истинности условия выполняется та или иная ветвь программы. Записывается оператор в виде: if S then A else B , где S - логическое выражение, истинность которого проверяется; A и B – операторы (простые или составные). Выполняется такой оператор следующим образом: проверяется значение выражения S, если оно истинно, выполняется оператор A, иначе – оператор B.
Пример да y: =10 (x > 0) AND (x<3) нет y: =ln(x) IF (x > 0) AND (x<3) Then y: =10 Else y: =ln(x);
В этом примере, если x находится в интервале (0, 3), y получает значение 10, если x вне интервала, y получает значение ln(x). n Перед Else точку с запятой ставить не надо, так как точка с запятой указывает на конец оператора, а этот условный оператор заканчивается дальше.
Возможен сокращенный вариант логического оператора. да нет S Оператор А В этом случае оператор имеет вид: If S Then A;
Ссылки по теме n n http: //www. pascal. helpov. net/ http: //pas 1. ru


