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

1 слайд

«ЗНАКОМСТВО С ЯЗЫКОМ ПАСКАЛЬ» УРОК НА ТЕМУ: Учитель математики и информатики МБО УСОШ № 2 г. Калача-на-Дону Волгоградской области Анисимовой Н.А.

2 слайд

ЦЕЛЬ УРОКА: выяснить структуру программы, операторы, правила оформления и пунктуацию языка Turbo Pascal.

3 слайд

Система программирования TURBO PASCAL. Паскаль – это универсальный язык программирования, позволяющий решать самые разнообразные задачи обработки информации.

4 слайд

1)язык программирования Тurbo Pascal; 2)интегрированная среда программирования(компилятор: переводит программу в машинный код и интерпретатор: исполняет команды) СОСТАВ СИСТЕМЫ ПРОГРАММИРОВАНИЯ ТР:

5 слайд

1)латинские буквы – большие и малые; 2)буквы русского алфавита - большие и малые; 3)цифры – от 0 до 9; 4)знаки операций - +, -, /, *,=, =; 5)разделительные знаки – () { } ; . , ‘ _% & # и т. Д. Алфавит языка программирования TURBO PASCAL

6 слайд

7 слайд

Заголовок программы Раздел описания переменных Раздел операторов (основная часть)

8 слайд

Раздел описания переменных начинается со слова Var , за которым идет список имен однотипных переменных через запятую. В языке Паскаль существует два числовых типа величин: вещественный (Real) и целый (Integer). Имена переменных составляются из латинских букв и цифр, причем первым символом - буква. VAR список однотипных переменных: INTEGER; список однотипных переменных:REAL;

9 слайд

Раздел операторов – основная часть программы. Начало и ко-нец раздела отмечаются служебными словами BEGIN и END , которые являются операторными скобками. Между этими сло-вами помещаются все команды алгоритма, записанные на языке Паскаль (операторы). Разделителем операторов являет-ся точка с запятой. В самом конце программы ставится точка. BEGIN READ(список ввода); READLN(список ввода); переменная:=арифметическое выражение; WRITE(список вывода); WRITELN(список вывода); END.

10 слайд

Ввод исходных данных с клавиатуры происходит по опе-ратору READ или READLN (читать). Оператор READLN отличается от READ только тем, что после ввода данных курсор перемещается в начало новой строки. переменная:=арифметическое выражение; WRITE(список вывода); WRITELN(список вывода); END. READ(список ввода); READLN(список ввода);

11 слайд

переменная:=арифметическое выражение; Арифметический оператор присваивания: слева- переменная, справа - арифметическое выражение, которое должно быть вычислено. Составной символ:= читается как «присвоить». Сначала вычисляется арифметическое выражение, затем полученное значение присваивается переменной.Пример: a:= sqr (x) + sin (y) / (12*z + 5)

12 слайд

mod div / * - + SIN (x) COS (x) SQR (x) SQRT (x) ABS (x) Sin x Cos x x 2 |x| x сложение вычитание умножение деление деление нацело Остаток от деления

13 слайд

Правила записи арифметических выражений Арифметическое выражение записывается в строку Нельзя ставить подряд два знака арифметических операций Нельзя опускать знак умножения между сомножителями Используются только круглые скобки Последовательность выполнения операций определяется по их приоритетам () F(x) * / + - div mod

14 слайд

Вывод результатов происходит по WRITE или WRITELN (писать). Результаты выводятся в порядке их перечисле-ния в списке. Разница в выполнении операторов WRITE и WRITELN состоит в том, что после выполнения операции вывода по оператору WRITELN курсор перемещается в начало новой строки. WRITE(список вывода); WRITELN(список вывода);

15 слайд

Задание 1: AXby 6) TU154 2) R&B 3) 4Wheel 4) Вася 5) “PesBarbos” 7) 8) _ABBA 9) A+B

16 слайд

program zadacha1; var a, b: integer; x, y: real; begin a:= 5; 10:= x; y:= 7,8; b:= 2.5; x:= 2*(a + y); a:= b + x; end. имя переменной должно быть слева от знака:= целая и дробная часть отделяются запятой и несоответствие типов Несоответствие типов ЗАДАНИЕ 2: Найдите ошибки в записи программы.

  1. 1. Pascal
  2. 2. Pascal Паскаль был разработан швейцарским ученым Никлаусом Виртом. Паскаль считается важнейшим инструментом для обучения методам структурного программирования и с 1983 г. введен в учебные курсы в школах для учащихся, которые специализируются в области информатики. В дальнейшем язык Паскаль совершенствовался и приобрел новые свойства, отличные от авторского варианта.
  3. 3. Язык Паскаль относительно прост в изучении, довольно ясен и логичен и, будучи первым изучаемым языком программирования, приучает к хорошему стилю.
  4. 4. Как и естественные языки, каждый язык программирования имеет свой стиль и свои правила. Синтаксис языка программирования – это набор правил, которые определяют способы построения правильных программ из символов алфавита.
  5. 5. Алфавит языка Паскаль 26 латинских строчных и 26 латинских прописных букв: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z подчеркивание _ 10 цифр: 0 1 2 3 4 5 6 7 8 9 знаки операций: + - * / = <> < > <= >= := @ ограничители (разделители): . , " () (. .) { } (* *) .. : ; спецификаторы: ^ # $
  6. 6. Структура программы {1. заголовок программы} program Имя_Программы; {2. раздел указания используемых модулей} uses Список_Используемых_Модулей; {3. Раздел описаний} label Описания_меток; const Описания_Констант; type Описания_Типов; var Описания_Переменных; procedure Описания_Процедур_и_функций; function exports Описания_Экспортируемых_Имен; {4. Раздел операторов} begin Операторы end.
  7. 7. Упрощенная структура программы {1. заголовок программы} program Имя_Программы; {2. раздел указания используемых модулей} uses Список_Используемых_Модулей; {3. Раздел описаний} const Описания_Констант; var Описания_Переменных; {4. Раздел операторов} begin Операторы программы end.
  8. 8. Команды языка программирования называются операторами Разделителем операторов в Паскале является; (точка с запятой)
  9. 9. Комментарий представляет собой фрагмент текста программы, ограниченный символами { }. Комменнтарии в программе выполняют информационную функцию. {Моя первая программа } program first; begin writeln(‘Hello, World!’) end.
  10. 10. Пример: периметр прямоугольника program perimetr; {заголовок программы} uses crt; {crt – необходим для очистки экрана} var a,b:integer; {объявление переменных} P:integer; Begin {начало программы} clrscr; {очистка экрана} a:=12; {присваиваем переменной а значение 12} b:=7; {присваиваем переменной b значение 7} P:=2*(a+b); {значение выражения присваиваем P} write("P = ",P); {выводим на экран значение P} end. {конец программы}
  11. 11. Программа в своей работе имеет дело с данными. Некоторые данные устанавливаются еще до того, как программа начнет выполняться, а после ее запуска сохраняют свои значения неизменными на всем протяжении работы программы. Это константы. Другие данные могут изменяться во время выполнения программы. Они называются переменными.
  12. 12. Различие между переменной и константой довольно очевидно: во время выполнения программы значение переменной может быть изменено, а значение константы нет. переменныепеременные константыконстанты данныеданные
  13. 13. Под переменной мы будем понимать ячейку («коробку»), куда компьютер может записывать («складывать») данные. Под ячейкой мы в действительности подразумеваем «кусочек памяти» в котором хранится информация. Чтобы воспользоваться информацией, хранящейся в ячейке, нужно, чтобы каждая ячейка имела свое имя или, как часто говорят, - идентификатор. a b sum 5 3 8
  14. 14. Идентификаторы. Именами (идентификаторами) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Идентификатором является последовательность букв, цифр и знаков подчеркивания, которая начинается с буквы или символа подчеркивания и не содержит пробелов.
  15. 15. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы. Примеры имен языка ПАСКАЛЬ: A b12 r1m SIGMA gamma I80_86
  16. 16. В Паскале разница между строчными и прописными буквами игнорируется, поэтому имена NaMe и name одинаковы.
  17. 17. Служебное слово – это слово, которое в языке ПАСКАЛЬ имеет определенное смысловое значение, которое не может быть изменено. Иногда его называют ключевым словом.
  18. 18. Служебные (зарезервированные) слова: ABSOLUTE EXPORTS LIBRARY SET ASSEMBLER EXTERNAL MOD SHL AND FAR NAME SHR ARRAY FILE NIL STRING ASM FOR NEAR THEN ASSEMBLER FORWARD NOT TO BEGIN FUNCTION OBJECT TYPE CASE GOTO OF UNIT CONST IF OR UNTIL CONSTRUCTOR IMPLEMENTATION PACKED USES DESTRUCTOR IN PRIVATE VAR DIV INDEX PROCEDURE VIRTUAL DO INHERITED PROGRAM WHILE DOWNTO INLINE PUBLIC WITH ELSE INTERFACE RECORD XOR END INTERRUPT REPEAT EXPORT LABEL RESIDENT
  19. 19. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов. Существуют имена которые называются стандартными. sin cos real true В отличие от служебных слов смысл стандартных имен может быть переопределен программистом.
  20. 20. Это указание компилятору, сколько памяти необходимо зарезервировать для переменных нашей программы. В откомпилированной программе для всех переменных отведено место в памяти, и всем переменным присвоены нулевые значения. Все переменные, используемые в программе необходимо объявить в разделе описания переменных после зарезервированного слова var. Объявление переменных
  21. 21. Данные бывают различных типов...
  22. 22. Типы данных Имена стандартных типов являются предопределенными идентификаторами и действуют в любой точке программы. Они описаны в стандартном модуле System, который по умолчанию подключается в список используемых модулей. Пользовательские типы – это дополнительные типы (простые и структурированные) описанные пользователем.
  23. 23. Стандартные типы данных 1. группа целых типов (Shortint, Integer, Longint, Byte, Word); 2. группа действительных типов(Single, Real, Double, Extended, Comp); 3. логические (булевские типы)(Boolean, ByteBool, WordBool, LongBool); 4. символьный(Char); 5. строковый (String); 6. указательный (Pointer); 7. текстовый тип (Text).
  24. 24. Группа целых типов Название типа Тип диапазон значений требуемая память Короткое целое со знаком Shortint -128 .. 127 1 байт Целое со знаком Integer -32768 .. 32767 2 байта Длинное целое со знаком Longint -2147483648 .. 2147483647 4 байта Короткое целое без знака Byte 0 .. 255 1 байт Целое без знака Word 0 .. 65535 2 байта
  25. 25. Var b: byte; summa, count: integer; Объявление переменных целого типа summa:= -365; Испозование
  26. 26. Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе счисления. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки, например: 217 -45 8954 +483
  27. 27. Группа вещественных типов определяет те данные, которые реализуются подмножеством действительных чисел. Var A: real; begin ... A:=0.65; … End.
  28. 28. Название типа Тип Диапазон значений Количество цифр мантиссы Размер (байт) Вещественное число одинарной точности Real 2.9e-39 .. 1.7e+38 11 6 Вещественное число Single 1.5e-45 .. 3.4e+38 7 4 Вещественное число двойной точности Double 5.0e-324 .. 1.7e+308 15 8 Вещественное число повышенной точности Extended 3.4e-4932 .. 1.1e+4932 19 10 Целое число в формате вещественного Comp -9.2e+18 .. 9.2e+18 19 8
  29. 29. Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е: 28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16
  30. 30. Булевскому типу данных соответствует идентификатор Boolean. Переменные булевского типа имеют размер 1 байт и могут содержать значения TRUE или FALSE. Значению FALSE соответствует 0, любое число отличное от нуля считается TRUE. Var knopka, flag: boolean; Begin knopka:=true;
  31. 31. Символьному типу соответствует стандартный идентификатор Char. Переменные и константы символьного типа могут принимать значения из множества символов кода ASCII. Var simvol, bukva, z: char; Объявление символьных переменных
  32. 32. Строковому типу соответствует стандартный идентификатор String. Var S: String; {строка от 0 до 255 символов} S2: String; {стока из 5-ти символов}
  33. 33. Строка символов представляет собой последовательность символов из набора символов кода ASCII, заключенную в одиночные кавычки. Строки в языке ПАСКАЛЬ - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Примеры строк: "СТРОКА" "STRING" "АД""ЮТАНТ"
  34. Символьный тип, а также целые и булевские типы относят к, так называемым, порядковым типам.  Множество допустимых значений любого порядкового типа представляет собой упорядоченную последовательность, каждый элемент которой имеет свой порядковый номер (начиная с 0).
  35. 35. Функция Ord возвращает порядковый номер этого значения в описании типа. Ord(2)=2, Ord(‘0’)=48 Writeln(ord(‘e’)); Writeln(ord(‘9’));
  36. 36. Таблица кодировки ASCII ASCII (American Standard Code for Information Interchange; произносится «а́ски») -компьютерная кодировка для представления латинского алфавита, арабских цифр, некоторых знаков пунктуации и управляющих символов. Ее ввел американский институт стандартизации ANSI.

Cлайд 1

ЯЗЫК ПРОГРАММИРОВАНИЯ ПАСКАЛЬ Богданов Владимир Бесплатные презентации http://prezentacija.biz/

Cлайд 3

Язык Паскаль был создан Никлаусом Виртом в 1968-1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа. Первая публикация Вирта о языке датирована 1970 годом, представляя язык, автор указывал в качестве цели его создания - построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные. Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы - язык Модула-2.

Cлайд 4

UCSD Pascal Основная статья: UCSD Pascal В 1978 году в Калифорнийском университете в Сан-Диего была разработана система UCSD p-System, включавшая порт компилятора Вирта с языка Паскаль в переносимый p-код, редактор исходных кодов, файловую систему и прочее, а также реализовывавшая значительное число расширений языка Паскаль, такие как модули, строки символов переменной длины, директивы трансляции, обработка ошибок ввода-вывода, обращение к файлам по именам и другое. Впоследствии основные реализации языка Паскаль основывались на этом диалекте.

Cлайд 5

Object Pascal] Основная статья: Object Pascal В 1986 году фирма Apple разработала объктное расширение языка Паскаль, получив в результате Object Pascal. Он был разработан группой Ларри Теслера, который консультировался с Никлаусом Виртом.

Cлайд 6

В 1983 году появилась первая версия интегрированной средыразработки Turbo Pascal фирмы Borland, основывавшаяся на одноимённой реализации Паскаля. В 1989 году объектное расширение языка было добавлено в Turbo Pascal версии 5.5. Последняя версия (7.0) была переименована в Borland Pascal. Объектные средства были позаимствованы из Object Pascal от Apple, языковые различия между объектным Turbo Pascal 5.5 и Object Pascal от Apple крайне незначительны. Почти в то же самое время, что и Borland, Microsoft выпустил свою версю объектно-ориентированного языка Паскаль.и] Эта версия Паскаля не получила широкого распространения. Дальнейшее развитие реализации Паскаля от Borland породило вариант Object Pascal от Borland, впоследствии, в ходе развития среды программирования Delphi, получившийодноимённое название.

Cлайд 7

Важным шагом в развитии языка является появление свободных реализаций языка Паскаль l и GNU Pascl которые не только вобрали в себя черты множества других диалектов языка, но и обеспечили чрезвычайно широкую переносимость написанных на нём программ (например GNU Pascal поддерживает более 20 различных платформ, под более чем 10 различными операционными системами, Free Pascal обеспечивает специальные режимы совместимости с различными распространёнными диалектами языка, такими как Turbo Pascal (полная совместимость), Delphi и другими). Начиная с Delphi 2003, создана реализация языка для платформы Net, хотя разработчики продолжают использовать Delphi более ранних версий. О коммерческих разработках на Free Pascal, GNU Pascal и TMT Pascal на данный момент известно мало. Кроме того, в Южном федеральном университетеразработан PascalABC.NET- язык программирования Паскаль, включающий большинство возможностей языка Delphi, а также ряд собственных расширений. Он основан на платформе Microsoft.NT и содержит практически все современные языковые средства: классы, перегрузку операций, интерфейсы,обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения.

Cлайд 8

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

Cлайд 9

Тем не менее, первоначально язык имел ряд ограничений: невозможность передачи функциям массивов переменной длины, отсутствие нормальных средств работы сдинамической памятью, ограниченная библиотека ввода-вывода, отсутствие средств для подключения функций написанных на других языках, отсутствие средств раздельной компиляции и т. п. Подробный разбор недостатков языка Паскаль того времени был выполнен Брайаном Керниганом в статье «Почему Паскаль не является моим любимым языком программирования» (эта статья вышла в начале 1980-х, когда уже существовал язык Модула-2, потомок Паскаля, избавленный от большинства его пороков, а также более развитые диалекты Паскаля). Некоторые недостатки Паскаля были исправлены в ISO-стандарте 1982 года, в частности, в языке появились открытые массивы, давшие возможность использовать одни и те же процедуры для обработки одномерных массивов различных размеров.

Cлайд 10

Однако многие недостатки языка не проявляются или даже становятся достоинствами при обучении программированию. Кроме того, по сравнению с основным языком программирования в академической среде 1970-х (которым был Фортран, обладавший гораздо более существенными недостатками), Паскаль представлял собой значительный шаг вперёд. К 1980-м годам Паскаль стал основой для многочисленных учебных программ, в отдельных случаях на его основе были созданы специализированные обучающие языки программирования, так, в начале 1980-х годов в СССР для обучения школьников основам информатики и вычислительной техники Андрей Ершов разработал алголо-паскалеподобный «учебный алгоритмический язык».

Cлайд 11

Наиболее известной реализацией Паскаля, обеспечившей широкое распространение и развитие языка, является Turbo Pascal фирмы Borland, выросшая затем в объектный Паскаль для DOS (начиная с версии 5.5) и Windows и далее в Delphi, в которой были внедрены значительные расширения языка. Диалекты Паскаля, применяемые в Turbo Pascal для DOS и Delphi для Windows, стали популярны из-за отсутствия других успешных коммерческих реализаций.

Cлайд 12

После начала использования Паскаля в 1970 году и появления реализаций, расходящихся не только в дополнениях, но и в синтаксисе, был поднят вопрос о стандартизации языка. Стандарт языка был разработан Никлаусом Виртом в 1974 году совместно с Кетлин Йенсен (Kathleen Jensen). В дальнейшем, были приняты международный стандарт от ISO и американский от ANSI. На данный момент, выделяют три принципиально разных стандарта: Unextended Pascal (исходный), Extended Pascal (расширенный), Object-Oriented Extensions to Pascal (объектно-ориентированное расширение Паскаля).

Cлайд 13

Cлайд 14

Синтаксис и языковые конструкции Паскаль, в его первоначальном виде, представляет собою чисто процедурный язы и включает в себя множество алголоподобных структур и конструкций с зарезервированными словами наподобие if, then, else, while, for, и т. д. Тем не менее, Паскаль также содержит большое количество возможностей для структурирования информации и абстракций, которые отсутствуют в изначальном Алголе-60, такие как определение типов, записи, указатели, перечисленя, и множества. Эти конструкции были частично унаследованы или инспирированы от языков Симула-67, Алгол-64, созданного Никлаусом Виртом AlgolW (англ.)русск. и предложены Хоаром. В современных диалектах (Free Pascal) доступны такие операции, как перегрузка операторов и функций.

Cлайд 15

program p; begin end. Программа не выполняет никаких действий и содержит пустой блок операторов. Пример программы, выводящей строку «Hello, world!»:

Cлайд 16

begin writeln("Hello, World!"); { оператор вывода строки } end.

Cлайд 17

Cлайд 18

Cлайд 19

Cлайд 20

В Pascal над целыми типами (byte, shortint, word, integer, longint и их диапазоны) допустимы побитовые операции. Логические операции над битами: Над битами двух целых операндов можно выполнять ранее рассмотренные логические операции: not, and, or, xor. Отличие между побитовыми и логическими операциями состоит в том, что побитовые (поразрядные) операции выполняются над отдельными битами операндов, а не над их значением в десятичном (обычно) представлении. Выделяется понятие порядковых типов данных (ordinal), к ним относятся целые типы (знаковые и беззнаковые), логический (boolean), символьный (char), перечислимые типы и типы-диапазоны. Порядковые типы задаются целым числом (кодом), которое можно получить с помощью функции ord. Все операции, выполняемые над порядковыми типами, выполняются с их кодами.

Cлайд 21

Cлайд 22

Для порядковых типов определены операции inc, dec, succ, pred, ord, операции сравнения (= >

Cлайд 23

Cлайд 24

Cлайд 25

В Паскале Йенсен и Вирта строки представлялись как упакованные массивы символов; следовательно, они имели фиксированную длину и обычно дополнялись до этой длины пробелами. В современном Паскале для работы со строками используется встроенный тип string, поддерживающий операции конкатенации (+) и сравнения (> =

Cлайд 26

Тип string [n] или просто string в диалектах языка 1970-1990-х годов определялся в виде массива символов array of char (n по умолчанию принимало значение 80 в UCSD Pascal и 255 в Turbo/Borland Pascal), код нулевого символа при таком представлении служит для задания длины строки, соответственно строка могла иметь максимальный размер 255 символов. По умолчанию в Delphi и FreePascal в качестве String используется тип AnsiString, память под который выделяется и освобождается компилятором динамически, а максимальный размер строки в текущих реализациях составляет 2 гигабайта. Кроме того, в Delphi и Free Pascal в качестве string может использоваться тип WideString, где применяется 16-битное представление символов в кодировке UCS-2, при этом средства преобразования из однобайтовых строк в многобайтовые и обратно в стандартной библиотеке языка отсутствуют.

Cлайд 27

Новые типы могут быть определены из существующих: type { секция объявления типов } x = Integer; y = x;

Cлайд 28

Более того, из примитивных типов могут быть сконструированы составные: type { секция объявления типов } a = Array of Integer; { определение массива } b = record { определение записи } x: Integer; y: Char; end; c = File of a; { определение файла }

Cлайд 29

Файловые типы в Паскале делятся на типизированные, текстовые и файлы без типов. Как показано в вышеприведённом примере, типизированные файлы в Паскале - это последовательности однотипных элементов. Для каждого файла существует переменная-указатель на буфер, которая обозначается f^. Процедуры get (для чтения) и put (для записи) перемещают указатель к следующему элементу. Чтение реализовано так, чтоread(f, x) представляет собою то же, что и get(f); x:=f^. Соответственно, запись реализована так, что write(f, x) представляет собою то же, что и f^ := x; put(f). Текстовые файлы text определены как расширение типа file of char и помимо стандартных операций над типизированными файлами (чтение, запись символа), позволяют осуществлять символьный ввод-вывод в файл всех типов данных аналогично консольному вводу-выводу.

Cлайд 30

Файлы без типов объявляются как переменные типа file. С ними можно проводить операции побайтового нетипизированного ввода-вывода по несколько блоков байт указанной длины через буфер, для этого служат специальные процедуры blockread и blockwrite (расширение UCSD).

Cлайд 31

Cлайд 32

Cлайд 33

Cлайд 34

Cлайд 35

Указатели Паскаль поддерживает использование указателей (типизированные ^тип и нетипизированные pointer): type a = ^b; b = record x: Integer; y: Char; z: a; end; var pointer_to_b:a;

Cлайд 36

Здесь переменная pointer_to_b - указатель на тип данных b, являющийся записью. Тип типизированного указателя может быть задан перед объявлением типа, на который он ссылается. Это исключение к правилу, которое гласит, что любая вещь должна быть объявлена перед тем, как используется. Введение этого исключения позволило организовывать рекуррентные определения структур данных, в том числе такие, как линейные списки, стеки и очереди, включая указатель на запись в описании этой записи (см. также: нулевой указатель - nil). Для типизированного указателя определена операция разыменования (её синтаксис: указатель^). Чтобы создать новую запись и присвоить значение 10 и символ A полям x и y в ней, необходимы следующие операторы:

Cлайд 37

new(pointer_to_b); { выделение памяти указателю } pointer_to_b^.x:= 10; { разыменовывание указателя и обращение к полю записи } pointer_to_b^.y:= "A"; pointer_to_b^.z:= nil; ... dispose(pointer_to_b); { освобождение памяти из-под указателя }

Cлайд 38

Для целей обращения к полям записей и объектов можно также использовать оператор with, как показано в примере: new(pointer_to_b); with pointer_to_b^ do begin x:= 10; y:= "A"; z:= nil end; ... dispose(pointer_to_b);

Cлайд 39

Процедурный тип В оригинальном языке Паскаль Йенсен и Вирта процедурный тип использовался только при описании формального параметра. Уже в TP существовал полноправный процедурный тип. В объявлении типа ставится заголовок процедуры либо функции (без имени), обобщённо описывающий интерфейс подпрограммы. Значение этого типа содержит указатель на подпрограмму с заголовком, соответствующую описанному в объявлении типа. С помощью идентификатора переменной может происходить вызов соответствующей процедуры или функции.

Cлайд 40

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

Cлайд 41

В операторах while, for, if, case в качестве выполняемого оператора может использоваться блок. Такая конструкция, представляющая собой обычный оператор или блок, называется сложным оператором. В Turbo Pascal для управления процессом компиляции существуют директивы, которые помещаются в комментарии и позволяют переключать режимы работы компилятора - например, включать и отключать проверку операций ввода-вывода, переполнения:

Cлайд 42

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

Cлайд 43

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

Cлайд 44

До появления связных модулей в их современном виде некоторые реализации Паскаля поддерживали модульность за счёт механизма включения заголовочных файлов, похожего на механизм #include в языке Си: с помощью специальной директивы, оформляемой в виде псевдокомментария, например, {$INCLUDE "файл"}, содержимое указанного файла прямо включалось в текст программы в исходном, текстовом виде. Таким образом можно было разделить программный код на множество фрагментов, для удобства редактирования, но перед компиляцией они автоматически объединялись в один файл программы, который в итоге и обрабатывался компилятором. Такая реализация модульности примитивна и имеет множество очевидных недостатков, поэтому она была быстро заменена. Современные реализации языка Паскаль (начиная с UCSD Pascal) поддерживают модули. Программные модули могут быть двух видов: модуль главной программы, который, как обычно, начинается с ключевого слова program и тело которого содержит код, запускаемый после загрузки программы в память, и вспомогательных модулей, содержащих типы, константы, переменные, процедуры и функции, предназначенные для использования в других модулях, в том числе в главном модуле.

Cлайд 45

Общая структура подключаемого модуля на Паскале выглядит следующим образом: unit UnitName1; interface ... implementation ... begin {может отсутствовать - используется, если необходимо поместить операторы инициализации} ... end.

Cлайд 46

Возможен также ещё один вариант: unit UnitName2; interface ... implementation ... initialization ... finalization .... end.

Cлайд 47

В отличие от главной программы, файл модуля начинается с ключевого слова UNIT, за которым следует имя модуля и точка с запятой. Современные реализации, как правило, требуют, чтобы имя модуля совпадало с именем файла исходного кода, в котором этот модуль содержится. Модуль содержит три секции: интерфейсную секцию, секцию реализации и тело модуля.

Cлайд 48

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

Cлайд 49

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

Cлайд 50

Тело модуля начинается находящимся на верхнем уровне вложенности ключевым словом BEGIN. Тело содержит программный код, который выполняется один раз при загрузке модуля. Тело может применяться для инициализации, присваивания начальных значений переменным модуля, выделения ресурсов для его работы и так далее. Тело модуля может отсутствовать. В ряде реализаций Паскаля, например, в Delphi, вместо тела модуля могут применяться две секции (также необязательные) - INITIALIZATION иFINALIZATION. Они располагаются в конце модуля, после соответствующего ключевого слова. Первая - секция инициализации, - содержит код, который должен быть выполнен при загрузке модуля, вторая - секция финализации, - код, который будет выполнен при выгрузке модуля. Секция финализации может выполнять действия, обратные инициализации - удалять объекты из памяти, закрывать файлы, освобождать выделенные ресурсы. Модуль заканчивается ключевым словом END с точкой.

Cлайд 51

Чтобы использовать модуль, главная программа или другой модуль должны импортировать данный модуль, то есть содержать объявление о его использовании. Это объявление делается с помощью инструкции подключения модулей, представляющей собой ключевое слово USES, за которым через запятую следуют имена модулей, которые требуется подключить. Инструкция подключения должна следовать непосредственно за заголовком программы, либо после ключевого слова INTERFACE, если подключение производится в модуле.

Cлайд 52

Модули, подключённые в интерфейсной секции, могут использоваться во всём модуле - и в секции реализации, и в теле. Но секция реализации может иметь собственную инструкцию подключения (она следует за ключевым словом IMPLEMENTATION), содержащую имена подключаемых модулей, которые отсутствуют в интерфейсной секции, но нужны для секции реализации. Одним из поводов использования отдельного списка подключения для раздела реализации является ситуация, когда два или более модуля используют друг друга. Чтобы не возникали циклические ссылки в объявлениях использования таких модулей, по крайней мере один из них должен подключать другой в секции реализации.

Cлайд 53

Любые объявленные в интерфейсных секциях модулей объекты можно использовать в программе там, где эти модули подключены. Имена импортированных из подключённых модулей объектов остаются теми же самыми, и их можно использовать непосредственно. Если два или более подключённых модуля имеют объекты, называемые одинаково, и компилятор не может их различить, то при попытке использования такого объекта будет выдана ошибка компиляции - неоднозначное задание имени. В этом случае программист должен применять квалификацию имени - указать имя в формате «.».

Cлайд 54

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

Cлайд 55

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

Cлайд 56

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

Cлайд 57

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

Cлайд 58

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

Cлайд 59

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

Cлайд 60

Основное достоинство ООП - это сокращение количества межмодульных вызовов и уменьшение объёмов информации передаваемой между модулями. Это достигается за счет более полной локализации данных и интегрирования их с подпрограммами обработки.

Cлайд 61

Основные недостатки в ООП - это некоторое снижение быстродействия из-за более сложной организации программной системы, а также, как правило, заметное увеличение объёма бинарного кода (особенно при использовании стандартных библиотек классов в небольших программах) из-за того, что большинство современных компиляторов и компоновщиков не способны выявить и удалить весь код, приходящийся на неиспользуемые классы, виртуальные методы и другие элементы ООП.

Cлайд 62

В Object Pascal классы задаются с помощью типа object, аналогичного record, который кроме полей данных может содержать заголовки процедур и функций (они называютсяметодами). Имена описываемых методов следуют за именем класса через точку.

Cлайд 63

Конструктор и деструктор задаются как обычные процедуры, но вместо идентификатора procedure задаются ключевые слова constructor и destructor. Соответственно, в отличие от С++-подобных языков они имеют имя, отличное от имени класса, деструкторов может быть несколько и они могут иметь параметры (на практике эта возможность используется редко, обычно класс имеет единственный деструктор Destroy, переопределяющий виртуальный деструктор класса-родителя).

Cлайд 64

Поддерживаются единичное наследование, полиморфизм классов, механизм виртуальных методов (слово virtual после заголовка метода класса). Существуют и динамические методы (в TP описываются путём добавления целого числа после слова virtual и используются преимущественно для обработки сообщений; в Delphi и FreePascal для этих целей используется слово message, а для создания обычных динамических методов - слово dynamic), отличающиеся меньшим использованием памяти и меньшей скоростью вызова за счёт отсутствия дублирования динамических методов предков в VMT потомка (однако FreePascal не делает различий между виртуальными и динамическими методами). В Delphi, FPC реализована перегрузка операций, абстрактные методы, директивы private, protected, public, published (по умолчанию члены класса являются public):

Cлайд 65

В диалекте Delphi классы могут также конструироваться с помощью слова class (причём взаимное наследование с object-классами не допускается) и введены интерфейсы(interface) - все методы абстрактные и не могут содержать полей данных. Все классы (созданные с помощью class) являются наследниками TObject, все интерфейсы происходят от IUnknown. Классы, созданные с помощью class, могут реализовывать несколько интерфейсов.

Cлайд 66

В Delphi интерфейсы были введены для поддержки технологии COM фирмы Microsoft. Классы (Class) в отличие от обычных классов (Object) не нуждаются в явном выделении/освобождении памяти, память под них динамически выделяется конструктором с именем Create, вызываемым с именем класса, и освобождается при вызове деструктора с именем Destroy (могут иметь другие имена). Переменная такого класса в отличие от класса object хранит адрес экземпляра класса в памяти, значение nil используется для указания пустой ссылки, поэтому для освобождения объекта в TObject определен специальный метод free, проверяющий ссылку на nil и вызывающий виртуальный деструктор Destroy. Код с использованием таких классов будет выглядеть следующим образом:

Cлайд 67



Язык Паскаль разработан в 1971 году и назван в честь Блеза Паскаля – французского ученого, изобретателя механической вычислительной машины.

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



АЛФАВИТ ЯЗЫКА

Все латинские прописные и строчные буквы (A-Z, a-z);

Арабские цифры (0-9);

Знаки +, -, *, /, ….

Служебные слова.


F1 – справка или справочная служба (помощь).

F2 – записать редактируемый текст в дисковый файл (сохранить ) .

F5 – распахнуть активное окно на весь экран.

F6 – сделать активным следующее окно.

F9 – компилировать программу, но не выполнять ее.

F10 – перейти к главному меню.


Основные функциональные клавиши

Alt – X – выход из программной среды.

Ctrl – F9 – выполнить прогон программы: компилировать программу, находящуюся, в редакторе, загрузить ее в оперативную память и выполнить.

Alt – F5 – сменить окно редактора на окно вывода результатов работы (прогона) программы.

Tab – переключение между элементами окон.


Для перехода от состояния выбора режима из главного меню в состояние редактирования нужно нажать клавишу Esc .

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


Структура программы

Программа состоит из трех основных частей:

Заголовок программы.

Раздел описаний (соглашения).

Исполняемая часть (операторы).


Служебные слова

Program ;

Label ;

Const ;

Type ;

Procedure ,

Function


Программы на Паскале содержат следующие «знаки препинания»:

  • Точка с запятой;
  • Точка.

Точкой с запятой отделяют операторы друг от друга; точка ставится в конце программы.

Служебные слова BEGIN и END от операторов точкой с запятой не отделяются.




Переменная – это величина, которая может меняться при выполнении программы.

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

Тип определяет размер и структуру памяти под переменную.


Тип данных определяет:

  • формат представления данных в памяти;
  • множество допустимых значений;
  • множество допустимых операций.

ОПИСАНИЕ ПЕРЕМЕННЫХ

Описание переменных начинается со служебного слова VAR (переводится – «переменная»).

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


Простые

Структурированные

Ссылочные

Процедурные

Объектные


Простые

типы

порядковые

вещественные


Простые

порядковые типы

Целые типы

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

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


Целочисленные типы

Диапазон возможных значений

2147483648... 2147483647


Например:

a, f, m, n: integer;


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

Диапазон

2.9*10 -39 ... 1.7*10 38

5.0*10 -45 ... 3.4*10 38

5.0*10 -324 ... 1.7*10 308

3.4*10 -4932 ... 1.1*10 4932


Например:

a, f, m, n: real;


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

Логический тип данных Boolean представляет такой тип данных, когда параметр (переменная) может принимать два значения True и False .


Например:


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

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

Значения такого типа записывается в апострофах: a = ‘d’, r=‘g’.


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

Данный тип определяется набором идентификаторов, с которыми могут совпадать значения параметров (переменных). Список идентификаторов указывается в круглых скобках и разделяются между собой запятыми. Объявление типа должно быть сделано в разделе объявлений и ему должно предшествовать кодовое слово Type .


Например:

Color=(black, white, blue, green, red)



Арифметические операции

Сложение

Вычитание

Умножение

Деление вещественное

Деление целочисленное

Получение остатка от деления целых чисел


Операторы ввода

  • Read;

read (имена переменных),

Например:

read (a, b, c) .

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


Операторы ввода

  • Readln

Readln (имена переменных) ,

Например:

Readln (a, b, c)

При использовании этого оператора после ввода данных курсор переходит на новую строку.


Операторы вывода

Write (‘ текст ’ , имена переменных: m, n)

Writeln (‘ текст ’ , имена переменных: m, n)

Например:

Write (‘ сумма, С= ’ , с)

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

При использовании оператора Writeln осуществляется переход на новую строку.

Loading...Loading...