Скачать презентацию Принципы структурного программирования на примере языка Pascal Лекция Скачать презентацию Принципы структурного программирования на примере языка Pascal Лекция

Лекция 5.ppt

  • Количество слайдов: 51

Принципы структурного программирования на примере языка Pascal Лекция 5 Принципы структурного программирования на примере языка Pascal Лекция 5

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

Тип данных и переменная n n n В языках программирования такие свойства данных, как Тип данных и переменная n n n В языках программирования такие свойства данных, как форма их представления и занимаемая ими память сознательно отделены друг от друга и представлены в виде понятий тип данных и переменная. Под типом данных (ТД) понимается описание данных определенного вида, для которых известен их способ представления в памяти (формат), следующие из него размерность и диапазон значений, а также определен набор операций. Т. е. тип данных – это «идеи» о представлении переменных определенного вида, и они должны быть известны транслятору (для генерации необходимого кода) и программисту. Переменная в ее первичном архитектурном понимании – это область памяти, в которой содержатся данные определенного типа. Имя переменной напрямую ассоциируется с ее адресом, содержимое памяти – со значением переменной.

Концепция данных в Паскале n n n Каждому данному, используемому в программе приписывается некоторый Концепция данных в Паскале n n n Каждому данному, используемому в программе приписывается некоторый тип. Тип константы определяется видом самой константы. Тип переменной задается явным указанием типа в разделе переменных. Среди типов, используемых в языке, есть стандартные и определяемые программистом. Любой тип определяет множество значений, которые могут принимать переменные соответствующего типа.

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

n n Все скалярные типы, кроме вещественных, являются порядковыми типами, т. е. среди множества n n Все скалярные типы, кроме вещественных, являются порядковыми типами, т. е. среди множества их значений установлен линейный порядок. Для порядковых типов в Паскале определены следующие функции: Succ(x) - дает следующее за x значение данного типа; Pred(x) - дает предыдущее значение.

n n Например: Значение Succ(3) равно 4, значение Pred(7) равно 6. Следует иметь в n n Например: Значение Succ(3) равно 4, значение Pred(7) равно 6. Следует иметь в виду, что применение функции Succ к последнему элементу и функции Pred к первому элементу последовательности приводит к ошибке.

Арифметические типы данных Арифметические типы данных

Данные целого типа В Паскале определены пять целых типов: shortint, integer, longint, byte, word. Данные целого типа В Паскале определены пять целых типов: shortint, integer, longint, byte, word. Эти типы отличаются диапазонами представимых значений, так например: n n q q q integer значения от -32768 до 32767, shortint от -128 до 127 byte от 0 до 255.

Над целыми данными определены следующие операции: n + сложение, n - вычитание, n * Над целыми данными определены следующие операции: n + сложение, n - вычитание, n * умножение, n div - целочисленное деление (операнды целые, результат целый), n mod - остаток от деления целых чисел.

Данные вещественного типа Вещественные данные также представлены несколькими типами (Single, Real, Double, Extended, Comp). Данные вещественного типа Вещественные данные также представлены несколькими типами (Single, Real, Double, Extended, Comp). Наиболее употребительный из них real. Над вещественными типами определены операции: n + сложение, n - вычитание, n * умножение, n / деление. Если операцию «/» применить к целым данным, то результат будет вещественный

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

Функция Вызов функции Тип аргумента Тип значения Абсолютное значение Х Abs( X ) Целый/ Функция Вызов функции Тип аргумента Тип значения Абсолютное значение Х 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. Логические типы данных n n n В Паскале логический тип данных носит название BOOLEAN. Значением логического типа может быть одна из двух констант: FALSE (ложь) или TRUE (истина). Логические переменные должны быть описаны предложением: Var <имя_переменной>: boolean; Величины логического типа данных можно присваивать, выводить, но нельзя вводить процедурой read.

Логические выражения n n Логические выражения (условия) – это выражения, которые могут принимать лишь Логические выражения n n Логические выражения (условия) – это выражения, которые могут принимать лишь одно из двух значений: true (истина) или false (ложь). Для построения логических выражений используются операции отношения: q q q = (отношение на равенство), <> (отношение на неравенство), < (отношение меньше), > (отношение больше), <= (отношение меньше или равно), >= (отношение больше или равно).

Пример Пример

Логические операции n n Сложные условия составляются из простых с помощью логических операций: and Логические операции n n Сложные условия составляются из простых с помощью логических операций: and (логическое «И» ), or (логическое «ИЛИ» ) и not (логическое «НЕ» ). При составлении сложных условий операнды логического выражения берутся в скобки (x<2)and(x>=0) При вычислении логических выражений операции выполняются в следующем порядке: not, and, or, операции отношения, арифметические операции. Если порядок выполнения операций нужно изменить, то применяют скобки.

Остальные типы данных n n Символьный тип (char) может принимать значения из определенной упорядоченной Остальные типы данных n n Символьный тип (char) может принимать значения из определенной упорядоченной последовательности символов. Интервальный тип определяется пользователем и формируется только из порядковых типов. Представляет собой подмножество значений в конкретном диапазоне. Type month = 1. . 12; Можно создать собственный тип данных простым перечислением значений, которые может принимать переменная данного типа. Это так называемый перечисляемый тип данных. Type colors = (red, white, blue, black); Все вышеописанное – это простые типы данных. Но бывают и более сложные, структурированные, которые базируются на простых типах.

Структурированные типы данных n n n Массив – это структура, занимающая в памяти единую Структурированные типы данных n n n Массив – это структура, занимающая в памяти единую область и состоящая из фиксированного числа компонентов одного типа. Строки представляет собой последовательность символов. Причем количество этих символов не может быть больше 255 включительно. Такое ограничение характерная черта Pascal. Запись – это структура, состоящая из фиксированного числа компонент, называемых полями. В разных полях данные могут иметь разный тип. Множества представляют собой совокупность любого числа элементов, но одного и того же перечисляемого типа. Файлы для Pascal представляют собой последовательности однотипных данных, которые хранятся на устройствах внешней памяти (например, на жестком диске – это тоже внешняя память). Понятие такого типа данных как указатель связано с динамическим хранением данных в памяти компьютера. Часто использование динамических типов данных является более эффективным в программирование, чем статических.

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

Заголовок n n n Программа состоит из заголовка и блока. В заголовке указывается имя Заголовок n n n Программа состоит из заголовка и блока. В заголовке указывается имя программы и список параметров. Общий вид: program n (input, output, x, y, …); здесь n – имя программы; input – файл ввода; output – файл вывода; x, y – внешние файлы, используемые в программе. Заголовка может и не быть или он может быть без параметров.

Основной блок n n n Блок программы состоит из шести разделов, следующих в строго Основной блок n n n Блок программы состоит из шести разделов, следующих в строго определенном порядке: q раздел меток (label) q раздел констант (const) q раздел типов (type) q раздел переменных (var) q раздел процедур и функций q раздел операторов (действий). Раздел операторов должен присутствовать всегда, остальные разделы могут отсутствовать. Каждый из первых четырех разделов начинается с соответствующего ключевого слова (label, const, type, var), которое записывается один раз в начале раздела и отделяется от последующей информации только пробелом, либо концом строки, либо комментарием.

Раздел меток (label) n n Любой выполняемый оператор может быть снабжен меткой – целой Раздел меток (label) n n Любой выполняемый оператор может быть снабжен меткой – целой положительной константой, содержащей не более 4 -х цифр. Все метки, встречающиеся в программе, должны быть описаны в разделе label. Общий вид записи label l 1, l 2, l 3…; Пример: label 10, 20, 30; 20: a: =b;

Раздел констант (const) Раздел констант начинается словом const, за которым следует задание констант. Задание Раздел констант (const) Раздел констант начинается словом const, за которым следует задание констант. Задание константы состоит из имени константы, знака равенства и значения константы. Например: const g = 9. 8; s = 1000; • Значение константы задает тип константы. • Так, в приведенном примере g - вещественная константа, а s - целая.

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

Раздел типов (type) Раздел типов начинается словом type. 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; Пример задания нестандартных типов сonst len=40; type year=1930. . 2010; names=string[len]; var empl: names; y: year;

Раздел переменных (var) n n Раздел переменных служит для приписывания типа всем переменным, используемым Раздел переменных (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, после Раздел операторов n n Раздел операторов начинается словом Begin и заканчивается словом End, после которого ставится точка, означающая конец программы. Этот раздел является обязательным. В нём записываются операторы, реализующие соответствующий алгоритм.

Операторы • • • Операторы языка задают те действия, которые надо выполнить для решения Операторы • • • Операторы языка задают те действия, которые надо выполнить для решения задачи. Идущие друг за другом операторы разделяются точкой с запятой. ; Если оператор стоит перед end, until или else, то в этом случае точка с запятой не ставится. Все операторы Паскаля делятся на простые и структурированные (составные). К простым операторам относятся такие, которые не содержат в своем составе других операторов.

Оператор присваивания ПЕРЕМЕННАЯ ВЫРАЖЕНИЕ i: =i+1 n n С помощью этого оператора присваивается значение Оператор присваивания ПЕРЕМЕННАЯ ВЫРАЖЕНИЕ i: =i+1 n n С помощью этого оператора присваивается значение переменной. Оператор состоит из двух частей и знака присваивания между ними. Знак присваивания состоит из двоеточия и равенства. : = Слева от знака присваивания записывается переменная, справа - выражение.

Выражения В операторах присваивания можно использовать арифметические выражения. Например: num : = (d + Выражения В операторах присваивания можно использовать арифметические выражения. Например: 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 знаки <, >= и др. тоже играют роль операций. Выражения, содержащие подобные операции, n знаки <, >= и др. тоже играют роль операций. Выражения, содержащие подобные операции, принимают логическое значение и называются логическими выражениями. В состав логических выражений могут входить логические операции not (не), and (и), or (или).

Выводы n При выполнении оператора, значение выражения подсчитывается и полученный результат присваивается переменной. n Выводы n При выполнении оператора, значение выражения подсчитывается и полученный результат присваивается переменной. n Тип переменной и выражения должны совпадать ( или, по крайней мере, должны быть совместимы для присваивания).

Составной оператор Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют Составной оператор Если при некотором условии надо выполнить определенную последовательность операторов, то их объединяют в один составной оператор. n Составной оператор начинается ключевым словом begin и заканчивается словом end. Между этими словами помещаются составляющие операторы, которые выполняются в порядке их следования. После end ставится точка с запятой, а после begin – только пробелы (либо комментарий). Begin i : = 2; k : = i / 5 end; Слова begin и end играют роль операторных скобок. Тело самой программы также имеет вид составного оператора. После последнего end программы ставится точка. Нельзя извне составного оператора передавать управление внутрь его. n

Комментарии n n В любом месте программы могут быть помещены комментарии. Это любой текст, Комментарии n n В любом месте программы могут быть помещены комментарии. Это любой текст, заключенный в фигурные скобки { }. Комментарии не влияют на выполнение программы, но облегчают ее чтение. Грамотно написанная программа должна содержать комментарии.

Логические операции Рассмотрим три логические операции: NOT AND OR Логические операции Рассмотрим три логические операции: NOT AND OR

Операция отрицания NOT Операция NOT - одноместная операция, изменяет истинностное значение следующего за ней Операция отрицания NOT Операция NOT - одноместная операция, изменяет истинностное значение следующего за ней операнда. Так, например, если значение переменной c есть True, то NOT c - имеет значение False.

Операция Логическое «И» n n Операция AND - логическое “И” (конъюнкция); двуместная операция. Результат Операция Логическое «И» n n Операция AND - логическое “И” (конъюнкция); двуместная операция. Результат этой операции имеет значение True только в том случае, когда оба операнда имеют значение True.

Операция Логическое «ИЛИ» n Операция OR - логическое “ИЛИ” (дизъюнкция) двуместная операция. Результат этой Операция Логическое «ИЛИ» n Операция OR - логическое “ИЛИ” (дизъюнкция) двуместная операция. Результат этой операции имеет значение True, если хотя бы один операнд имеет значение True, - результат False в том случае, если оба операнда принимают значение False.

Из логических операций наивысший приоритет имеет операция NOT, затем следует операция AND и наименьший Из логических операций наивысший приоритет имеет операция NOT, затем следует операция AND и наименьший приоритет имеет операция OR. Для изменения порядка выполнение логических операций используются круглые скобки в обычном смысле.

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

Примеры логических выражений: ( F > B) OR ( D <= 10 ) NOT Примеры логических выражений: ( F > B) OR ( D <= 10 ) NOT (A > B ) ( A > 1 ) AND ( A < 10 ) NOT (( A > 1 ) AND ( A < 10 )).

Условный оператор Этим оператором программируют базовую конструкцию алгоритмов – ветвление. да нет S A Условный оператор Этим оператором программируют базовую конструкцию алгоритмов – ветвление. да нет 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 Пример да 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 получает значение В этом примере, если x находится в интервале (0, 3), y получает значение 10, если x вне интервала, y получает значение ln(x). n Перед Else точку с запятой ставить не надо, так как точка с запятой указывает на конец оператора, а этот условный оператор заканчивается дальше.

Возможен сокращенный вариант логического оператора. да нет S Оператор А В этом случае оператор Возможен сокращенный вариант логического оператора. да нет S Оператор А В этом случае оператор имеет вид: If S Then A;

Ссылки по теме n n http: //www. pascal. helpov. net/ http: //pas 1. ru Ссылки по теме n n http: //www. pascal. helpov. net/ http: //pas 1. ru