Лекции_TР_1 часть(Махов)ПК.pptx
- Количество слайдов: 74
TURBO PASCAL 7. 0
Историческая справка Язык Pascal разработан Никлаусом Виртом на кафедре информатики Стэндфордского университета в середине 60 -х годов ХХ века. В 1985 г. появился язык Turbo Pascal 3. 0. Затем появились его версии 4. 0 … 7. 0 Delphi – система (среда) программирования, использующая язык Object Pascal. (1995 г. ) Другие ЯПВУ: Fortran, Basic, Visual Basic, С, C++, Borland C++, C#, Oberon, …. 2
Фото Никлаус Вирт Дата рождения: 15 февраля 1934 Место работы: Швейцарская высшая техническая школа Цюриха, Стэнфордский университет, Цюрихский университет, Xerox PARC 3
Список литературы Фаронов В. В. Turbo. Pascal 7. 0 Турбо. Паскаль 7. 0 Фаронов В. В. Delphi 5 Культин Н. Самоучитель Delphi 4. 0 4
Интерфейс ТP 5
Символы, лексемы, выражения и операторы ТР; Классификация типов данных ТР; Структура программы на языке ТР; 6
Состав языка ТР 7. 0 Символы: буквы: A-Z, a-z, _ цифры: 0 1 2 3 4 5 6 7 8 9 спец. символы: +, *, { , } , ( , ) #, … пробельные символы Лексемы ( словарная единица языка): константы 13 3. 14 ‘Константин’ имена (идентификаторы) Kolobok a _11 ключевые ( зарезервированные) слова begin var if знаки операций + - : = разделители ; [] , Выражения: правило вычисления значения Операторы: исполняемые описания (a + b)*с c : = a + b var a, b : real; 7
Константы (Const) Целые десятичные: 127 -89 Целые шестнадцатеричные: $FF 12 $A 3 Вещественные с пл. точкой: 12. 34 -3. 1415 Вещественные с порядком: 2. 7 e 2 3. 5 E-12 Символьные: ‘z’ ‘=‘ #98 #64 Строковые: ‘Это строка’ , ‘учеба’ Логические: TRUE и FALSE 8
Имена (идентификаторы) имя должно начинаться с буквы или _ ; имя должно содержать только буквы, знак подчеркивания и цифры; прописные и строчные буквы не различаются; длина имени практически не ограничена. Примеры правильных имен: Perimeter, A, x 01, A 13, A_and_B. Примеры неправильных имен: 2 late, Big one, Iseekю. 9
Ключевые (зарезервированные) слова Ключевые слова — идентификаторы, имеющие специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Например: Program begin end array do for uses var const type label …. и т. д. Если ключевое слово в апострофах, то это константа: ‘Begin’ 10
Знаки операций Знак операции — один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Например, целочисленное деление записывается как div. Операции делятся на унарные (с одним операндом) и бинарные (с двумя). A and B ; X >= 0. 5 ; s<>0. 2 ; y/z ; L div m ; k mod n 11
Операции и их приоритеты. 1. Унарная операция not, унарный минус - , взятие адреса @. 2. Операции типа умножения: * / div shr. Операции типа сложения: 3. - + 4. mod and shl or xor Операции отношения: = <> < > <= >= in 12
Классификация типов данных ТР Стандартные Определяемые программистом Простые логические целые вещественные символьный строковый адресный файловые перечисляемый интервальный адресные Составные массивы строки записи множества файлы объекты процедурные типы Порядковые: целый, логический, символьный, перечисляемый, интервальный( тип-диапазон). 13
Концепция типа данных Тип данных определяет: внутреннее представление данных, а, следовательно, и множество их возможных значений допустимые действия над данными (операции и функции) 14
Структура программы на ТР. Program ИМЯ_ПРОГРАММЫ; {$ …. } – директивы компилятора Uses список имён модулей; LABEL объявление глобальных меток; CONST объявление глобальных констант; TYPE объявление глобальных типов; VAR объявление глобальных имён; Далее идут описания ПРОЦЕДУР или ФУНКЦИЙ PROCEDURE ИМЯ ПРОЦЕДУРЫ; или FUNCTION ИМЯ_ФУНКЦИИ: тип; Label … ; Const … ; Type … ; Var …. ; - объявление локальных меток, констант, типов и переменных. BEGIN ……. END; - тело процедуры или функции; Основной блок программы BEGIN ……. END. 15
Структура программы на TP 7. 0 Заголовок программы; директивы; подключаемые модули; Глобальные метки, константы, типы, переменные; Раздел процедур и функций заголовок процедуры или функции; локальные метки, константы, типы, переменные; Begin …… end; Основная программа: BEGIN …. END. 16
Простейшая программа на ТР 7. 0 PROGRAM moy_01; BEGIN WRITELN(‘ Это моя первая программа на Turbo Pascal’); Readln; End. ============================ Процедуры ввода – вывода Read, Readln – ввод с клавиатуры и Write, Writeln - вывод на экран ПК. 17
Логический тип данных; Целые типы; Операции с данными целого типа; Стандартные процедуры и функции (для переменных порядкового типа) 18
Логические типы Основной логический тип данных - boolean. Величины этого типа занимают в памяти 1 байт и могут принимать два значения: true (истина) или false (ложь). Внутреннее представление значения false — 0 (нуль), значения true — 1. Для совместимости с другими языками определены типы Byte. Bool, Word. Bool и Long. Bool длиной 1, 2 и 4 байта соответственно. Истинным в них считается любое отличное от нуля значение. К величинам логического типа применяются логические операции and, or, xor и not и операции отношения. 19
Логические операции Конъюнкция (и) Дизъюнкция ( или ) Исключающее или Отрицание (нет) a b a and b a or b a xor b not a 1 1 0 0 1 1 1 0 0 0 1 20
Целые типы Тип word integer shortint longint Знак Диапазон значений 1 байт byte Размер нет 0. . 255 (0. . 28 -1) 2 байта нет 0. . 65535 (0. . 216 -1) 2 байта есть -32768. . 32767 (-215. . 215 -1) 1 байт есть -128. . 127 (-27. . 27 -1) 4 байта есть -2147483648. . 2147483647 (-231. . 231 -1) Byte => Word => Shortint =>integer => Longint 21
Операции с данными целого типа Арифметические операции Операция Знак операции сложение + вычитание - умножение * частное от деления div остаток от деления mod 22
Операции с данными целого типа (продолжение) Операции отношения: > < = <= >= <> Поразрядные операции: and, or, xor, not Операции сдвига: shl, shr 23
Операции с данными целого типа ПРИМЕРЫ 1) Var n, k, r, q: shortint; …. n: =17; k: =5; q: =n div k; r: = n mod k; …. writeln( n < k ) ; writeln( n > 22) ; 24
Стандартные математические функции Имя abs Описание модуль arctan арктангенс угла Результат целый Пояснения |x| записывается abs(x) вещественный arctg x записывается arctan(x) cos косинус угла вещественный cos x записывается cos(x) exp экспонента вещественный ex записывается exp(x) ln натуральный логарифм вещественный logex записывается ln(x) odd проверка на четность логический odd(3) даст в результате true pred предыдущее значение целый pred(3) даст в результате 2 sin синус угла вещественный sin x записывается sin(x) sqr квадрат целый sqrt квадратный корень вещественный √x записывается sqrt(x) succ следующее значение целый x 2 записывается sqr(x) succ(3) даст в результате 4 25
Стандартные процедуры и функции (для переменных порядкового типа) Имя процедуры или функции Пояснения inc(x) — увеличить х на 1 inc(x, 3) — увеличить х на 3 dec(x) — уменьшить х на 1 dec (x, 3) — уменьшить х на 3 ord chr ord(F) – вычисляет порядковый номер F pred и succ возвращают предыдущее и последующее значения соответственно Low и High возвращают наименьшее и наибольшее значения величин данного типа. Chr(N) – возвращает символ с порядковым номером N, где N : byte. 26
Вещественный и символьный типы. Вещественный тип. Операции. Функции. Символьный тип. Операции. Функции. Стандартные математические функции 27
Вещественные типы Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка; каждая часть имеет знак. Существует несколько вещественных типов, различающихся точностью и диапазоном представления данных. Точность числа определяется количеством бит, отведённых для записи мантиссы, а диапазон — количеством бит для записи порядка. 28
Вещественные типы ТР 7. 0 Тип Размер Значащих цифр Диапазон значений real 6 байт 11 -12 2. 9 e-39. . 1. 7 e+38 single 4 байта 7 -8 1. 5 e-45. . 3. 4 e+38 double 8 байт 15 -16 5. 0 e-324. . 1. 7 e+308 extended 10 байт 19 -20 3. 4 e-4932. . 1. 1 e+4923 comp 8 байт 19 -20 -9. 22 e 18. . 9. 22 e 18 29
Функции для работы с данными вещественного типа Имя Описание Randomize Исп. для генерирования случайных чисел. Random(N) Примеры Равном. распр. случ. число [0; 1] или [0; N] Pi Trunc(x) Round(x) Число “ПИ” Отбрасывает дробную часть x Tranc(-3. 1) = -3 Tranc(5. 9) = 5 Округление до ближайшего целого Round(3. 9)=4; Round(6. 5)=7; Int(x) Целая часть аргумента ( как в математике) Int(0. 95) = 0 Int(-1. 3)= -2 Frac(x) Дробная часть аргумента x =Int(x)+Frac(x) Frac(2. 7) = 0. 7 Frac(-3. 6)= -0. 6 30
Операции с данными вещественного типа Арифметические + - * / Операции отношения < = <= > >= <> Возведения в степень нет ( кроме функции SQR): Для возведения X в степень S надо выполнить следующие действия: XS = exp(s*Ln(X)); ( X>0 ); 31
Примеры выражений ТР, использующие математические функции. 1) Возведение в степень: Y = xs Y =exp(s*Ln(x)) 2) Вычисление тангенса: Tg(x) = sin(x)/cos(x); 3) Вычисление логарифма с произв. основанием Logs (x) = Ln(x)/Ln(s); 32
Какие из перечисленных констант являются допустимыми? 1) 259 2) 0, 01 3) ‘ф’ 4) 1. 7*e 3 5) $EEC 6) ‘///’ 7) $EEH 8) 0. 008 E-14. 2 9) 8. 3 e+05 10) ‘$’ 11) * 12) “ 6” 13) ‘с’’езд’ 14) -277+2 33
Символьный тип Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Для хранения в памяти под каждый символ отводится 1 байт. К символам можно применять операции отношения (<, <=, >, >=, =, <>), при этом сравниваются коды символов. Примеры: Var s, t : char; …. . s: =‘f’; t: =‘w’; writeln(s<t); writeln(s>t) 34
Функции для работы с символьным типом данных. Имя Описание Результат Целый: ord(A) = 64 ord порядковый номер символа из таблицы ASCII chr преобразование номера в символ Символьный: Chr (64) = A таблицы ASCII pred предыдущий символьный: Pred(S) = R succ последующий символ Символьный: Succ(X) = Y upcase перевод в верхний регистр символьный 35
ЛИНЕЙНЫЕ ПРОГРАММЫ Это самые простые программы. Операторы таких программ выполняются последовательно, в том порядке, в котором они были написаны. Программы с ветвлениями и циклами будут рассмотрены позже.
Переменные Переменная — это величина, которая во время работы программы может изменять свое значение. Все переменные, используемые в программе, должны быть описаны в разделе описания переменных, начинающемся со служебного слова var. Для каждой переменной задается ее ИМЯ и ТИП, например: var number : integer; x, y : real; option : char; 37
Типизированные константы При объявлении можно присвоить переменной некоторое начальное значение (инициализировать). Инициализированные переменные описываются после ключевого слова const и могут использоваться в программе как обычные переменные: const number : integer = 100; x : real = 0. 02; option : char = ’ю’; 38
Именованные константы Вместо значений констант можно (и нужно!) использовать в программе их имена. Это облегчает читаемость программы и внесение в нее изменений: const weight = 61. 5; n = 10; g = 9. 8; 39
Выражения Выражение — правило вычисления значения. В выражении участвуют операнды, объединенные знаками операций. Операндами выражения могут быть константы, переменные и вызовы функций. Операции выполняются в соответствии с приоритетами. Для изменения порядка выполнения операций используются круглые скобки. Результатом выражения является значение определенного типа. Этот тип определяется типами входящих в него операндов. Величины, участвующие в выражении, должны быть совместимых типов. t + sin(x)/2 * x результат имеет вещественный тип a <= b + 2 результат имеет логический тип (x > 0) and (y < 0) результат имеет логический тип 40
Оператор присваивания переменная : = выражение; a : = b + c; x : = 1; x : = x + 0. 5; вещественная переменная : = целое выражение; 41
Процедуры ввода-вывода ВВОД с КОНСОЛИ read(список); readln[(список)]; Список – последовательность имён, разделённых запятыми: Read (a, b); Ввод значения каждой переменной выполняется так: значение переменной выделяется как группа символов, расположенных между разделителями ( пробелами); эти символы преобразуются во внутреннюю форму представления, соответствующую типу вводимой переменной; значение записывается в ячейку памяти, определяемую именем переменной. 42
Вывод на консоль write(список); или writeln[(список)]; var n : integer; b : real; . . . n: =1; b: =4. 12417; … writeln(’Значение n = ’, n: 3, ’ b = ’, b: 5: 2, sin(n) + b); Значение n = 1 b = 4. 124. 9614709848 E+00 43
Правила формирования списка в процедуре вывода Список вывода разделяется запятыми. Список содержит выражения логических, целых, вещественных, символьного и строкового типов. После любого значения можно через двоеточие указать количество отводимых под него позиций. Для вещественных чисел можно указать второй формат, указывающий, сколько позиций из общего количества позиций отводится под дробную часть числа. Если форматы не указаны, под целое число, символ и строку отводится минимально необходимое для их представления количество позиций. Под вещественное число отводится 17 позиций, 10 из них — под дробную часть. Форматы могут быть выражениями целого типа. 44
Примеры форматированного и бесформатного вывода Пусть: K, P, Q – целого типа, R – вещественного, B – булевского типа, С – символ, S – строка, _ пробел. K=134 Write (K) Write (K, K, K) Write (K: 6) Write((k+k): 7 134134134 _ _ _ _268 R=715. 432 R= -1. 919 E+01 Write (R) _7. 1543200000 E+02 _ -1. 919000000 E+01 R=511. 04 Write (R: 15) 5. 110400000 E+02 R=511. 04 R= -46. 78 Write(R: 8: 4) Write(R: 7: 2) 511. 0400 _ -46. 78 C=‘X’ Write (C: 3) Write (C: 2, C: 4) __X _X___X 45
Пример линейной программы (перевод температуры из шкалы Фаренгейта в шкалу Цельсия) program temperature; var tf, tc : real; begin write('Введите температуру по Фаренгейту = '); readln(tf); tc : = 5 / 9 * (tf - 32); writeln('По Фаренгейту: ', tf: 6: 2, ' в градусах Цельсия: ', tc: 6: 2); Readln; end. 46
Пример № 2 Программа перевода градусной меры угла в радианную Вводим величину угла в градусной мере в виде d m s. Например 23 46 28 = 23° 46’ 28’’. Переводим минуты и секунды в градусы alf = d + m/60 + s/3600. Радианная мера угла x= (p /180)*alf. Выводим на экран x. Вычисляем и выводим на экран sin(x) и cos(x). 47
Пример № 3 Программа перевода радианной меры угла в градусную Вводим величину угла в радианах: x (x>0) Переводим радианную меру угла x в градусную alf = (180/p)*x. Выделяем градусы, минуты и секунды: d = int(alf); am = Frac(alf)*60 ; m = int(am); as = Frac(am)*60 ; s = round(as); Выводим на экран d m s. 48
Основные операторы Turbo Pascal. Примеры программ с ветвлением и циклами. 49
Простейшие операторы ТР 7. 0 Составной оператор: Begin S 1; S 2; …. End; Пустой оператор: ; ; Безусловные операторы и функции: Goto <метка> ; Break – выход из цикла; Exit – выход из подпрограммы; Halt(n) – завершает работу программы с кодом = n. 50
Операторы ветвления IF … then … else If <выражение> then S 1 else S 2; If <выражение> then S; 51
Операторы ветвления IF (примеры) sx: =1; if x < 0 then sx : = -1; ==================== if (a < b) and (a < d) then s: =‘left’ else if (a > b) and (a > d) then s: =‘right’ else s: =‘middle’ где расположена (. ) a ==================== if a < b then if a < c then m : = a else m : = c else if b < c then m : = b else m : = c; поиск min из {a, b, c} 52
Пример (применение оператора if). y -2 1 2 x -2 program shoot; var x, y: real; begin writeln(‘ Введите значения х и у: ’); readln(x, y); if (sqr(x) + sqr(y) <= 1) or (x <= 0) and (y >= - x - 2) then writeln(‘ Точка попадает в область’) else writeln(‘ Точка не попадает в область’); end. 53
Оператор выбора CASE case выражение of константы_1 : S 1; константы_2 : S 2; ………. . константы_n : Sn; [ else : S 0; ] end; 54
Пример (CASE) Var a: byte; …… case a of 4 : writeln(’ 4’); 5, 6 : writeln(’ 5 или 6’); 7. . 12: writeln(’от 7 до 12’); end; 55
Операторы циклов For Перечисляемый i: =A to B do <оператор>; i: =B downto A do <оператор>; С предусловием While <Условие> Do <оператор>; С постусловием Repeat <тело цикла> Until <условие>; 56
Блок-схема цикла For i: =A i<=B нет да Выполнить операторы цикла i: =i+1 57
Блок-схема цикла While Условие Выполняется ? нет да Выполнить операторы цикла 58
Блок-схема цикла Repeat … Until Выполнить операторы цикла нет Условие Выполняется ? да 59
Операторы циклов (комментарии) Операторы перечисляемого цикла могут не выполниться ни одного раза (например, если A > B для “ For … to …“ ) Количество выполнений операторов перечисляемого цикла известно заранее( = B-A+1). Тело цикла Repeat …. Until выполняется хотя бы 1 раз в любом случае. While … Do может не выполниться ни разу. for i: = -1 to 5 do write( ‘A’); for k: =6 downto 4 do writeln(‘W’); M: =2; repeat writeln(‘Эх, раз …’) until M< 0; {это цикл } K: =4; S: =0. 0; while K > 0 do begin s: =s+1/K; K: =K-1 end; 60
Пример использования оператора For …. To …. Do …; Program tabula_F; { табуляция y=k*x 2 } Var a, b, k, x, y, h: real; N, i: byte; Begin Write(‘ Введите k= ‘); Readln(k); Write(‘ Введите a, b, N= ‘); Readln(a, b, N); h: =(b-a)/(N-1); {шаг табуляции функции} writeln(' —————'); writeln('| X | Y |'); writeln(' —————'); For i: = 1 to N do begin x: =a+(i-1)*h; y: =k*sqr(x); writeln('|', x: 9: 2, ' |', y: 9: 2, ' |'); end; writeln(' —————'); end. y=f(x) a b x y 61
Пример использования оператора while <выражение> do S; program tabula; var Xa, Xb, Hx, k, x, y : real; begin writeln('Введите Xa, Xb, Hx, k'); readln(Xa, Xb, Hx, k); writeln(' —————'); writeln('| X | Y |'); writeln(' —————'); x : = Xa; while x <= Xb do begin y : = k * x; writeln('|', x: 9: 2, ' |', y: 9: 2, ' |'); x : = x + Hx; end; writeln(' —————'); end. y = k x Xa Xb X Y 62
Цикл с постусловием Repeat …. . Until … program square_root; var A, eps, Xp, X : real; begin writeln('Введите аргумент и точность : '); readln(A, eps); If ((A <0) or (eps < 0)) then Halt(100); X : = A/2; { начальное приближение. Его лучше вводить. } repeat Xp : = X; X : = (Xp + A/ Xp) / 2; until abs(X – Xp) < eps; writeln('Корень из ', А: 6: 3, ' с точноcтью ', eps: 7: 5, 'равен ', X : 9: 5); end. 63
Типы данных, определяемые программистом Простые: Составные: Перечисляемый и Тип-диапазон Массивы; Записи; Множества; Файлы 64
Как происходит описание типов в программе? type имя_типа = описание_типа. . . var имя_переменной : имя_типа ИЛИ var имя_переменной : описание_типа 65
Простые типы данных, определяемые программистом ЭТО: Перечисляемый тип Тип-диапазон (интервальный тип) 66
Перечисляемый тип данных type Имя_типа = (список имен констант); type Colors = (Black, Blue, Green, Cyan, Red, Magenta, Brown); … var m, n : Colors; … m : = Blue; n : = m; Пояснение: ord(Green)=2; m: =Red; n: = succ(Magenta); 67
Интервальный тип данных (тип-диапазон) Type имя_типа = Const_1. . Const_2 Type Hour = 0. . 23; Min = 0. . 59; Cent_20 = 1901. . 2000; Range = -100. . 100; Letters = ’a’. . ’z’; Degree = 0. . 360; var r : -100. . 100; или var r : Range; Var x: Letters; … Write(High(x), Low(x)); 68
Массивы Массив - упорядоченная совокупность однотипных элементов, рассматриваемая как единое целое, снабжённых индексами. Доступ к элементу массива осуществляется указанием его индекса. ОПИСАНИЕ типа Массив: Type имя_типа_массива = array [тип_индексов] of тип_элементов массива Замечания: Тип_индексов – любой порядковый тип (кроме Long. Int) Обычно это тип – диапазон; 69
Примеры описания массивов (одномерные массивы) type mas = array [1. . 7] of real; Color = array [byte] of mas; A = array [1. . 10] of boolean; Const n=50; const K : mas = (1, 1. 2, 1. 4, 1. 6, 1. 8, 2. 0, 2. 2); var с : mas; a, b : array [1. . n] of integer; Y: array [char] of byte; M: array[2. . 5] of string [4] ; … M[2]: =‘Неуд’; M[3]: =‘Удов’; M[4]: =‘Хор’; M[5]: =‘Отл’; 70
Двумерные массивы Var a : Array [1. . 3, 1. . 3] of Real; или Type Mtr = Array [1. . 3, 1. . 3] of Real; … Var U, W, Q : Mtr; Квадратная матрица a [3 x 3] Расположение элементов двумерного массива в памяти: Первая строка a 11 a 12 a 13 Вторая строка a 21 a 22 a 23 Третья строка a 31 a 32 a 33 71
Инициализация 2 D-массивов Type mas 2=array[1. . 3, 1. . 4] of integer; const B: mas 2 = ( ( 2, 3, 1, 0), ( 1, 9, 1, 3), ( 3, 5, 7, 0) ); Const m =4; n=5; Var a: array[1. . m, 1. . n] of real; … for i : = 1 to m do for j : = 1 to n do read (a[i, j]); 72
Поиск максимального элемента массива и его номера Program Max_E; { поиск макс. элемента и его номера } const n = 10; var a : array [1. . n] of real; i , im : integer; max : Real; begin writeln('Введите ', n, ' элементов массива'); for i : = 1 to n do read(a[i]); max : = a[1]; for i : = 2 to n do if a[i] > max then begin max : = a[i]; im: =i end; writeln('Максимальный элемент: ', max: 6: 2, ‘ его номер=‘, im: 3) end. 73
ПРИМЕР: Количество отрицательных элементов массива и сумма всех элементов. Program Summa_Elem; const n = 10; var sum: real; a : array [1. . n] of real; i, num : integer; begin writeln('Введите ', n, ' элементов массива'); for i : = 1 to n do read(a[i]); sum : = 0; num : = 0; for i : = 1 to n do begin if a[i] < 0 then inc(num); sum : = sum + a[i]; end; writeln('Отрицательных элементов: ', num); writeln('Сумма элементов: ', sum: 10: 3); end. 74
Лекции_TР_1 часть(Махов)ПК.pptx