Паскаль ТУСУР на уроки.ppt
- Количество слайдов: 108
PASCAL ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ 2006
СТРУКТУРА КУРСА 1. Среда Pascal. Структура программы. Типы данных. Интерфейс ввода/вывода информации. Оператор присваивания. Модули языка. 2. Основные операторы языка. Назначение. Принцип работы. • Оператор ветвления IF CASE • REPEAT…UNTIL Оператор повтора FOR WHILE 3. Обработка символьных и строковых данных; 4. Структурированные типы. • массивы • множества • записи • Одномерные массивы файлы Двумерные массивы 5. Управление экраном в текстовом , графическом режимах. Процедуры управления. 6. Использование подпрограмм (процедуры и функции). Использование модулей. 2
Рабочая программа КПК ( TURBO PASCAL) Тема 1. Среда Pascal. Основы языка. 1 час Тема 2. Операторы ветвления. 2 часа (1 час) Тема 3. Операторы повтора. 2 часа (1 час) Тема 4. Символьные и строковые типы данных. 2 часа (1 час) Тема 5. Массивы. Одномерные. Многомерные. 2 часа Тема 6. Графика. Анимация. 2 часа Тема 7. Процедуры и функции. 2 часа Тема 8. Работа с файлами. 1 час Тема 9. Множества и записи 1 час Анализ изученных тем 1 час 3
Основные этапы решения задач на компьютере Первый этап. Постановка задачи. Второй этап. Математическое или информационное моделирование. Свойства алгоритма Третий этап. Алгоритмизация задачи. • Конечность • Результативность Четвертый этап. Программирование. • Массовость • Правильность Пятый этап. Ввод программы и исходных данных в ЭВМ. Шестой этап. Седьмой этап. Тестирование и отладка программы. Исполнение отлаженной программы и анализ результатов. 4
ИНТЕРФЕЙС СРЕДЫ PASCAL Язык программирования Turbo Pascal 7. 0 заключён в инструментальную оболочку. Она включает в себя: • многооконный текстовый редактор; • компоновщик программ; • отладчик программ; • систему помощи; • компилятор. 5
ИНТЕРФЕЙС СРЕДЫ PASCAL Отображение результатов выполнения программы Список открытых файлов: Alt + 0 Быстрый доступ к открытым файлам: Alt + <№ окна> Просмотр текущего значения переменных: Ctrl + F 7 Для выполнения программы по строкам- F 8 Компиляция + проверка -F 9 Запуск Ctrl+F 9 6
ОСНОВНЫЕ ОПРЕДЕЛЕНИЯ • Зарезервированное слово – это специальное слово, используемое языком программирования для отделения логических областей программы. • Оператор – это команда языка выполняющая какое-либо действие (проверка условия, организация цикла и пр. ) • Идентификатор – это имя, свободно избираемое программистом для элементов программы. • Тип данных – это характеристика идентификатора, определяющая множество значений, которые он может принимать (целые или дробные числа, строки символов, логически выражения и пр. ). 7
ОБЩАЯ СТРУКТУРА ПРОГРАММЫ Program Имя_программы; Uses раздел подключаемых модулей; Label раздел описания меток; Const раздел описания констант; Type раздел описания собственных типов данных; Var раздел описания переменных; Begin Основное тело программы; End. Минимальный код: 8
9 Выражение- синтаксическая единица языка, определяющая способ вычисления некоторого значения и состоит: Знаков операций, Переменныx Констант круглых скобок, оператора присваивания. Параметры программы, значения которых меняется в процессе выполнения программы Y: =(A+B)*25; Параметры программы, значения которых не меняется в процессе выполнения программы
ИДЕНТИФИКАТОРЫ Термин идентификатор применяется к константам, переменным, функциям, процедурам, компонентам и другим объектам, определяемым пользователем. Разрешённые символы: • латинские буквы; • цифры; • знак подчёркивания. Ограничения: • не должны начинаться с цифры, но могут начинаться со знака подчёркивания. • не могут состоять из нескольких слов. • не могут совпадать с каким-либо из ключевых слов. В идентификаторах не учитывается регистр символов. Ошибочные идентификаторы: Данные { Используются русские символы } My name { Есть пробел } 2 Array { Начинается с цифры } Var { Совпадает с ключевым словом } 10
ВВОД ДАННЫХ С КЛАВИАТУРЫ Для того, чтобы ввести информацию с клавиатуры, необходимо воспользоваться оператором ввода: Read или Read. Ln. Синтаксис: Read (N 1, N 2, … Nn); Где N 1, N 2, … Nn – переменные (целые, вещественные, строковые) Read(ln)- курсор устанавливается на следующую строку. В переменную Х и А заносится значение введенное с клавиатуры • После ввода значения, необходимо нажать клавишу Enter • Если переменных в операторе указано несколько, то они вводятся через пробел, либо через нажатия клавиши Enter 11
ВЫВОД НА ЭКРАН Для того, чтобы вывести информацию на экран, необходимо воспользоваться оператором вывода: Write или Writeln. Синтаксис: Write (N 1, N 2, … Nn); Где N 1, N 2, … Nn – переменные (целые, вещественные, строковые) «Пустой» оператор WRITELN добавляет пустую строку 12
13 ФОРМАТЫ ВЫВОДА Значение Выражение Результат 134 Write(I); (вывод на экран содержимого ячейки I) 134 5671 Write(I, I); (вывод на экран содержимого ячейки I два раза) 5671 134 Write(I: 6); (задается поле шириной 6 пробелов, до вывода содержимого I) ------134 Write(I+I: 3); (cодержимое I удваивается , и результат выводится после трёх пробелов) ---624 7, 154 Е+2 Write(I: 3: 1); (вещественный тип использует формат для целой (3 позиции ) и дробной (1 позиция ) части числа. 715. 4 Сумма = Write(‘Сумма=’); Текст обрамляется апострофами. 312
РАБОТА С ДАННЫМИ
15 РАБОТА С ДАННЫМИ ОБЪЯВЛЕНИЕ ИДЕНТИФИКАТОРОВ ЗАДАНИЕ ТИПА ДАННЫХ Идентификация данных Однозначность операций над данными ЗАДАНИЕ ЗНАЧЕНИЙ Операции с данными
16 ТИПЫ ДАННЫХ Тип данных – это характеристика идентификатора, определяющая множество значений, которые он может принимать (целые или дробные числа, строки и т. д. ) Простые целые Byte, shortint, Структурированные integer, word, longint Символьные (char) Строковый (string) Регулярный (array) Логические (boolean) Real, Single, вещественные Комбинированный (record) Double, extended, Множественный (set) comp перечисляемые Файловый (file) интервальные Простые типы: одна переменная – одно значение Структурированные типы: одна переменная – несколько значений
ЦЕЛЫЙ И ВЕЩЕСТВЕННЫЙ ТИП ДАННЫХ Конечный набор возможных значений ! Выход за пределы диапазона приводит к ошибке ! Синтаксис: Var <имя переменной> : <тип переменной> ; Зарезервировано место в памяти компьютера под 3 -и переменных 17
ЗАДАНИЕ ЗНАЧЕНИЙ ПЕРЕМЕНЫМ Для задания значения переменной, необходимо воспользоваться оператором присваивания : = Синтаксис записи: <Переменная> : = <Значение> ; В переменную (целочисленную) с именем А заносится значение 3 18
ОПЕРАЦИИ С ЦЕЛЫМИ ПЕРЕМЕННЫМИ Арифметические операции: Sqr , +, -, *, / Нельзя использовать с целыми типами Стандартные функции: div-вычисляет целую часть от частного, дробная откидывается. Пример: 10 div 3=3; 2 div 3=0; mod-вычисляет остаток, полученный при делении Пример: 11 mod 5 = 1; 14 mod 5 = 4; 19
ОПЕРАЦИИ С ВЕЩЕСТВЕННЫМИ ПЕРЕМЕННЫМИ Стандартные функции: pi , Sqrt , Sin , Cos , Abs , Exp , Ln Round , Trunc - (вещественный → целый) Frac -(вещественный → вещественный ) Пример round(5. 67)=6 – округление до целого числа trunc(5. 67)=5 – отбрасывание дробной части числа Frac(5. 67)=0. 67 – отбрасывание целой части числа E – обозначает степень числа. 5. 6 E-5 = 5. 6· 10 -5 Позиция вывода числа Количество выводимых символов дробной части 20
ПОДКЛЮЧЕНИЕ ДОПОЛНИТЕЛЬНЫХ МОДУЛЕЙ Дополнительные модули расширяют возможности ваших программ, путём введения дополнительных операторов. Модули подключаются в разделе Uses. Program My; Uses Модуль1, Модуль2 ; ________________________ МОДУЛЬ 1 Набор ресурсов 1 … МОДУЛЬ N Модули: • Системные • Собственные Набор ресурсов N Очистка текстового экрана Ожидание нажатия на клавишу Подключённый модуль с именем CRT 21
ВЫВОД В ПРОИЗВОЛЬНОЕ МЕСТО ЭКРАНА Goto. XY (X, Y : Integer) Где X, Y – координата знакоместа на экране. X может принимать значения от 1 до 80, а Y от 1 до 25. Например: Program My_program; {Подключение модуля} Uses Crt; Begin {Очистка экрана} Clr. Scr; {Вывод данных} Goto. XY(1, 1); write('▒'); Goto. XY(80, 1); write('▒'); Goto. XY(1, 25); write('▒'); Goto. XY(80, 25); write('▒'); {Задержка экрана} Read. Key; End. Программа выводит по углам экрана символ “▒” (код 177). 639 пикс. Система координат 479 пикс. 22
ВЫВОД В ЦВЕТЕ Text. Color (Color); Определяет цвет символов. Text. Background (Color); Определяет цвет знакоместа. Program My. Program; Uses Crt; Begin Text. Color(Red); Text. Back. Ground(Blue); Write('На дворе '); Text. Color(White); Write('трава, '); Text. Color(Green); Text. Back. Ground(Yellow); Write('на траве '); Text. Back. Ground(Magenta); Write('дрова. '); End. 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Цвета Black Blue Green Cyan Red Magenta Brown Light. Gray Dark. Gray Light. Blue Light. Green Light. Cyan Light. Red Light. Magenta Yellow White 23 – чёрный – синий – зелёный – циановый – красный – сиреневый – коричневый – светло-серый – тёмно-серый – голубой – светло-зелёный – светло-циановый – розовый – светло-сиреневый – жёлтый – белый
УПРАЖНЕНИЕ Программу вычисления над двумя числами x и y с дополним выводом результата через функции управлением координатами и цветом. Используемый материал: Переменные объявляются в разделе Var Целый тип называется Integer. Вещественный тип называется Real Операторы ввода вывода: Read(Ln) Write (Ln) Синтаксис присвоения переменной значения: <Переменная> : = <Значение> ; После каждого оператора ставится знак ; (кроме begin и последнего end) • Goto. XY (X, Y : Integer)- координата знакоместа на экране • Text. Background (Color) - определяет цвет знакоместа • Text. Color (Color)-определяет цвет символов 24
ОПЕРАТОРЫ
26 УСЛОВНЫЙ ОПЕРАТОР IF Условный оператор реализует «ветвление» , т. е изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Проверка условия НЕТ Действие 1 Пойду на пляж Идёт дождь ДА Действие 2 Возьму зонт Действие 3 Пойду в кино
СИНТАКСИС ЗАПИСИ УСЛОВНОГО ОПЕРАТОРА IF 27 Краткая форма: If <условие> then <оператор>; Например, если в переменной Х значение меньше чем 0, тогда в эту же переменную записывается значение 1: If X<0 Then X : = 1; Полная форма: If <условие> then <оператор_1> else <оператор_2> ; Например: If X>5 Then X : = X - 1 Else X : = X + 1; После слов Then и Else можно использовать только один оператор Перед словом Else, знак ; отсутствует
ВЛОЖЕННОСТЬ УСЛОВИЙ Пример 1 Y: =0; Y: =X; Y: =2*X; 1 Объединить на II крупных варианта x<0 -2 -1 0 1 2 3 4 5 6 7 x>=0 If x<0 Then y: =0 else 2 Разделить II –ой вариант на 2 группы x<5 x>=5 If x<5 Then y: =x else y: =2*x П. Ф. внешнее условие П. Ф. вложенное условие 28
29 ВЛОЖЕННОСТЬ УСЛОВИЙ Пример 2 Значение а, b, c- целые числа. Определить наибольшее и занести в переменную max Полная форма 1 способ Краткая форма Надо помнить !!! Условный оператор можно вставить 1. После слова Else 2. После слова Then П. Ф. вложенное условие П. Ф. внешнее условие 2 способ
ПРОВЕРКА УСЛОВИЙ Операции сравнения: > - больше < - меньше = - равно >= - больше или равно <= - меньше или равно <> - не равно 30 Логические операции: Not And Or - Не - Или Мультипликативные операции: Div - целая часть от деления Mod - остаток от деления Например: Если Мой рост > Роста Пети, То я выше Пети Если (идёт дождь) Или (идёт снег), То я останусь дома Если Не ( (идёт дождь) И (ветер) ), То я пойду гулять При использовании логических операций, условия заключаются в скобки
УПРАЖНЕНИЕ- ПРИМЕР 1. Определить, является ли введённое число чётным или нет? 2. Вычислить y=16. 5 x+9 x-12. 5 x , при x=[-5. . -1, 1. . 5] 31
ОПЕРАТОРНЫЕ СКОБКИ Если после слов Then или Else необходимо записать несколько операторов, то их заключают в операторные скобки (составной оператор). Операторные скобки начинаются словом Begin, а заканчиваются словом End; Например: If Z > 0 Then Begin X : = 1; Y : = -1; Write. Ln( ‘Информация принята’ ); End Else Write. Ln( ‘Ошибка’ ); 32
УПРАЖНЕНИЕ 33 1. Напишите программу примера (1), (2). 2. Напечатать фразу: “Мы нашли в лесу _ грибов”. Согласно окончанию слова “гриб” с числом. ( Количество грибов от 1 до 10 вводится с клавиатуры) Количество грибов = 30. 3. Используемый материал: • Формы записи условного оператора: If <условие> Then <оператор>; If <условие> Then <оператор_1> Else <оператор_2> ; • Перед Else знак ; не ставится • Операции сравнения: > < = <> >= <= • Логические операции: Not Or And
ОПЕРАТОР ВЫБОРА CASE 34 Оператор выбора используется для замены конструкций из вложенных условных операторов. Значение проверяется Синтаксис записи Case <порядковая_переменная> of <значение_1> : <оператор_1> ; <значение_2> : <оператор_2> ; ……… <значение_N> : <оператор_N> ; Else <оператор_N+1> ; End; В операторе выбора можно использовать операторные скобки Не обязательная строка
ОПЕРАТОР ВЫБОРА CASE Case Рост ученика of 16. . 30 : Вы ученик начальных классов ; 31, 32, 33 : Вы учитесь в классе 5 -6 ; 34. . 50 : Вы старшекласник Для перечисления значений используется запятая, для выбора диапазона – двоеточие Else Вы явно не ученик ; End; Case x of -128. . -1: writeln(‘Отрицательные’); 0: writeln(‘Ноль’); 1. . 127: writeln(‘Положительные’) Else Write. Ln(‘Выход из диапазона’); End; 35
УПРАЖНЕНИЕ 1. Напишите программу, которая получив число, выводит на экран соответствующий день недели. Например, ввели число 2, программа должна вывести ‘Вторник’. Если число выходит за пределы 1. . 7, то должно быть выведено сообщение, что такого дня нет. Используемый материал: Оператор выбора: Case <порядковая_переменная> of <значение_1> : <оператор_1> ; ……… <значение_N> : <оператор_N> ; Else <оператор_N+1> ; End; 36
ЦИКЛЫ Цикл-предусматривает многократное выполнение некоторых операторов, входящих в тело цикла. В языке Паскаль имеются три оператора цикла: n For (цикл с параметром или на заданное число повторений) n While (цикл ПОКА – с предусловием) n Repeat (цикл ДО - с постусловием) Если число повторений известно, то лучше воспользоваться оператором цикла с параметром. 37
ЦИКЛ С ПАРАМЕТРОМ 38 Цикл на заданное число повторений с возрастающим или убывающим значением параметра For {парам} : = {нач_зн} To {кон_зн} Do {оператор} ; Тело цикла Замечания • Параметр – целый тип; • В цикле можно использовать операторные скобки; • В теле цикла нельзя менять параметр цикла; • Параметр цикла увеличивается на единицу; • Начальное значение > конечного, иначе тело цикла игнорируется; • Для уменьшения параметра, To - заменяется Down. To.
39 ЦИКЛ С ПАРАМЕТРОМ Параметр цикла имеет 2 функции FOR <пар_цик>: =S 1 to S 2 do Переменная цикла Счетчик цикла Работает по формуле S 1: =S 1+1 (I: =I+1) I: =S 1 С шагом 1 Тип Integer Для изменения шага в цикле : Ø Вводят дополнительную переменную, отвечающую за изменение шага в алгоритме. Ø Изменяют значение переменной цикла, при этом учитывая n целый тип; n конечное значение.
УПРАЖНЕНИЕ 1. Составить программу вывода на экран таблицы перевода из градусов по шкале Цельсия в градусы по шкале Фаренгейта для значений от 15 до 30 градусов с шагом 1. Результат вывести в виде таблицы. (С*1, 8+32) Температура По Фаренгейту По Цельсию 2. Вычислить y=sin (x) , где x изменяется от 0 до 1 с шагом 0, 1. Результат вывести в виде таблицы Таблица значений x y 40
ЦИКЛ С ПАРАМЕТРОМ Переменная цикла выполняет функции: 1. переменная цикла 2. переменная алгоритма Переменная цикла и переменная алгоритма работают независимо. Меняем шаг переменной X 41
ВЛОЖЕННОСТЬ ЦИКЛА 42 1. Вывод таблицы умножения в столбец. Внешний цикл J Начинает работу Выполняется 10 раз Внутренний цикл I Выполняет 10 проходов за 1 проход внешнего цикла. Выполняется 100 раз Все операторы внутреннего цикла должны располагаться в теле внешнего Передача управления происходит от внутреннего цикла к внешнему цикла !!!
УПРАЖНЕНИЕ 43 1. Написать программу, которая выводит на экран таблицу Пифагора 1 2 1 1 2 2 2 4 3 3 6 4 4 8 5 6 7 8 9 10 12 14 16 18 2. Составить программу вывода прямом и обратном порядке. … … … … … строчных букв латинского алфавита в … Используемый материал: Оператор цикла For: For <парам> : = <нач_зн> To <кон_зн> Do <оператор> ; • Параметр – целый тип (обычно, Integer); • В цикле можно использовать операторные скобки; • Параметр цикла увеличивается на единицу
ЦИКЛ WHILE ( «ПОКА» ) Цикл While сначала проверяет условие, и только если оно истинно выполняет тело цикла. While {условие} do {оператор}; • В теле кода, написанном ниже цикл не выполниться ни разу: x: =1; While x>1 do x: =x-1; • Можно получить бесконечный цикл. Например: x: =1 While x>0 do х: =х+1; 44
ЦИКЛ WHILE ( «ПОКА» ) Программа, вывода на экран суммы чисел от a до b. Цикл работает, пока изменяющаяся переменная f не станет больше значения b 45
УПРАЖНЕНИЕ 46 1. Космонавты решили на луне садить берёзы, причем каждый год увели-чивать число берёз в два раза, в первый год посадили 3 берёзы. Выведите на экран через, сколько лет число берёз превысит 10 000. 2. Напишите программу, которая определяет максимальное из введенных чисел с клавиатуры (ввод чисел заканчивается числом 0). Ниже представлен рекомендуемый вид экрана: Введите числа. Для завершения ввода введите 0. 89 15 0 Максимальное число 89. Используемый материал: Оператор цикла While: While <условие> do <оператор> ; Цикл While сначала проверяет условие, и только если оно истинно выполняет основное тело цикла.
ЦИКЛ REPEAT ( «ДО ТЕХ ПОР» ) 47 Цикл Repeat сначала выполняет тело цикла, а лишь затем проверяет условие Repeat {тело_цикла} Until {условие}; Нет необходимости в цикле Repeat использовать составной оператор, т. к. данная конструкция предусматривает выполнение не одного, а нескольких операторов, заключенных между словами Repeat и Until.
ЦИКЛ REPEAT ( «ДО ТЕХ ПОР» ) Программа, вывода на экран суммы чисел от a до b. Цикл работает, пока изменяющаяся переменная f не станет больше значения b 48
УПРАЖНЕНИЕ 49 1. Космонавты решили на луне садить берёзы, причем каждый год увели-чивать число берёз в два раза, в первый год посадили 3 берёзы. Выведите на экран через, сколько лет число берёз превысит 10 000. 2. Напишите программу, которая определяет максимальное из введенных чисел с клавиатуры (ввод чисел заканчивается числом 0). Ниже представлен рекомендуемый вид экрана: Введите числа. Для завершения ввода введите 0. 89 15 0 Максимальное число 89. Используемый материал: Оператор цикла While: While <условие> do <оператор> ; Цикл While сначала проверяет условие, и только если оно истинно выполняет основное тело цикла.
ЗАЦИКЛИВАНИЕ / ПРЕРЫВАНИЕ ЦИКЛОВ For While Repeat 50 Выбор модели цикла, зависит лишь от удобства его использования в конкретной ситуации. Мы практически всегда можем вместо одно-го вида цикла воспользоваться другим 1. Инициализируем начальное значение 2. Наращиваем “счетчик цикла”
For While Repeat ЗАЦИКЛИВАНИЕ ПРЕРЫВАНИЕ ЦИКЛОВ 51
ПРЕРЫВАНИЕ ЦИКЛОВ 52 Для гибкого управления циклическими операторами используются процедуры: • Break — выход из цикла; • Continue — завершение очередного прохода цикла; Примеры: Найти минимальное число i, для которого сумма чисел от 1 до i больше 100. Как только s (сумма чисел от 1 до i) становиться больше 100 срабатывает оператор break и происходит выход из цикла. s: =0; for I : = 1 to 100 do begin if s>100 then break; s : = s + i; end; Writeln (‘минимальное число i, такое, что ( 1+2+. . +i )>100 равно ’, i); С клавиатуры вводятся 10 чисел и в цикле считается сумма только положительных. Если число отрицательное, то выполняется оператор continue, который начинает следующий проход цикла. s: =0; for I : = 1 to 10 do begin Readln (k); if k<0 then Сontinue; s : = s + k; end; Writeln (‘Сумма положительных чисел равна ’, s);
Символьный и строковый тип данных
СИМВОЛЬНЫЙ ТИП ДАННЫХ (CHAR) Символьный тип данных – для хранения одного символа Один из 256 символов. Таблицы ASCII- кодов Значения в апострофах Буквы расположены подряд по алфавиту (for ) n: =#97; 1. Программа, вывода на экран малых и больших букв латинского алфавита. 2. Программа определения числового значения ASCII кода нажатой клавиши 54
УПРАЖНЕНИЕ 55 1. Дана последовательность символов, заканчивающаяся “/”. Посчитайте количество восклицательных знаков. Ввод на поверку организовать в цикле. 2. Составить программу вычисления sin(x) в цикле, каждый раз для нового значения. Количество проходов цикле неизвестно, организовать диалог – Продолжить? – (“Да” – “Нет”) Используемый материал: Символьный тип называется CHAR • Символы заключаются в апострофы • Буквы расположены согласно алфавита в таблице ASCII -кодов
УПРАЖНЕНИЕ 56 1. Вывести алфавит в столбец. Организовать запрос на количество колонок(ширина поля алфавита). 1. Цикл FOR определяет ширину поля. 2. Для вывода последовательности алфавита – используем диапазон. 3. <С>-начало диапазона. 4. Сравниваем <С> c элементом диапазона (IN). - выводим. 5. В С загружаем следующий элемент диапазона (INC(C)). 6. Сравниваем , выводим и т, д до Z. Пункт 5, 6, 7 - в цикле REPEAT
СИМВОЛЬНЫЙ ТИП ДАННЫХ (CHAR) 57
СИМВОЛЬНЫЙ ТИП ДАННЫХ (CHAR) Ord(x) - возвращает порядковый номер Chr(x) -преобразует целое число ( тип Byte) в символ ASCII-КОД. Pread(x)-возвращает предыдущее значение Succ(x)- возвращает последующее значение 58
59 СТРОКОВЫЙ ТИП ДАННЫХ (STRING) Строки – упорядоченный набор символов. Строки заключены в апострофы. Строки не совместимы с целыми и вещественными типами. Тип String Диапазон 256 символов { Основные операторы для строк } • + { конкатенация } • Length ( S ); { длина строки } Например: X : = ‘Вася’; Write( ‘В вашем имени’, Length(X), ‘букв. ’); S : = X; X : = S;
ОПЕРАЦИИ СО СТРОКОВЫМИ ПЕРЕМЕННЫМИ Delete - удаление символа строки Insert -вставка строки в строку Str -преобразование числового значения величины в строку. Val - преобразует значение строки в величину целочисленного или вещественного типа. Copy - выделяет подстроку. Concant -выполняет сцепление строк Length(St) - вычисляет текущую длину символа(строки). Pos - обнаруживает первое появление в строке подстроки. Up. Case - преобразует строчную букву в прописную. 60
УПРАЖНЕНИЕ 1. Написать программу вывода слова наоборот. 2. Подсчитать количество слов в строке. 3. Определить, является ли введенное слово “перевертышем”. Используемый материал: Строковый тип называется STRING • Строки заключаются в апострофы 61
СТРОКОВЫЙ ТИП ДАННЫХ 62
СТРОКОВЫЙ ТИП ДАННЫХ 1 2 3 4 5 6 7 8 9 10 a b c d e f 63 Каждое слово вырезается учитывая пробелы • Начальная позиция первого слова=4. • Позиция первого пробела=10. • Длина слова =10 -4=6.
СТРОКОВЫЙ ТИП ДАННЫХ 64
МАССИВЫ
66 МАССИВЫ Массив – это фиксированное количество значений одного типа. Доступ к конкретному значению осуществляется через индекс. Структура Одномерного массива: Переменная массива ( имя массива) Индекс 1 Доступ к массиву: 2 3 4 9 A = 7 0 0 <Имя массива> [ <Индекс> ] Структура двумерного массива: 11 12 13 14 21 22 23 24 31 32 33 34 41 42 43 44 Индекс строки i Индекс столбца j Значения A[i] : = значения; A[2] : = 7; A[i, j] : = значения;
МАССИВЫ Массив объявляется в разделе Var: {Имя} : Array [ {нач_зн}. . {кон_зн} ] of {тип} ; Примеры объявления массивов: Var A : Array [1. . 4] of String; B : Array [0. . 662] of Real; С : Array [1. . 10] of Integer; Примеры заполнения массивов значениями: A[1]: =‘Вася’; A[2]: =‘Петя’; A[3]: =‘Маша’; A[4]: =‘Олеся’; Write (A[3]); For f: =1 to 10 do C[f] : = f*2; For f: =1 to 10 do Write. Ln ( C[f] ); 67
Организация ввода вывода данных в массивах 68 Ввод вывод в одномерных массивах Ввод с клавиатуры Ввод случайным образом FOR I: =1 TO N DO READ(A[I]) A[I]: =RANDOM(M); Ввод по формуле FOR I: =1 TO N DO A[I]: =SIN(I) Вывод FOR I: =1 TO N DO WRITE(A[I]: 3) Ввод вывод в многомерных массивах Ввод с клавиатуры FOR I: =1 TO N DO FOR J: =I TO N DO READ(A[I, J]) Вывод FOR I: =1 TO N DO BEGIN FOR J: =I TO N DO WRITE (A[I, J]); WRITELN; END;
69 СТАНДАРТНЫЕ АЛГОРИТМЫ НАД ЭЛЕМЕНТАМИ МАССИВАМИ Накопление суммы S: =0; FOR I: =1 TO N DO S: =S+A[I] (произведения) P: =1; FOR I: =1 TO N DO P: =P*A[I] Перестановка элементов N: =A[I]; A[I]: =A[I+1]; A[I+1]: =N; Нахождения min (max) элемента и его порядковый номер min: =A[1]; FOR I: =2 TO N DO IF min >A[I] THEN BEGIN min: =A[I]; minn: =I; END; Удаление элемента X-номер удаляемого элемента FOR I: =1 TO N DO IF (A[I]<>X) THEN WRITELN(A[I]: 3); FOR I: =1 TO N DO IF (I=X) THEN A[I]: =A[I+1]; Сортировка элементов FOR I: =1 TO N DO IF A[I+1]
МНОГОМЕРНЫЕ МАССИВЫ {Имя} : Array [ {нач_зн}. . {кон_зн} , {и т. д. } ] of {тип} ; 70 Список интервалов для каждой размерности массива Пример объявления двухмерного массива (матрицы, таблицы) на 4 строки и 6 столбцов: Var A : Array [1. . 4, 1. . 6] of Integer; Пример заполнения массива: For i: =1 to 4 do For j: =1 to 6 do A[i, j] : = i+j;
71 КВАДРАТНЫЕ МАТРИЦЫ Количество строк = количеству столбцов а 11 а 12 а 13 а 21 а 22 а 23 а 24 а 31 а 32 а 33 а 34 а 41 а 42 а 43 Побочная диагональ Сумма индексов = размерности строки/столбца +1 а 14 а 44 а 11 а 12 а 13 а 14 а 21 а 22 а 23 а 24 а 31 а 32 а 33 а 34 а 41 а 42 а 43 Главная диагональ i=j Для элементов над главной диагональю i
72 УПРАЖНЕНИЕ 1. Напишите программу, которая запрашивает у пользователя 7 целых чисел и заносит их в массив. В массиве находится максимальный элемент и отображается на экране. Например: Введите 1 число: 4 Введите 2 число: 8 Введите 3 число: 9 Введите 4 число: 2 Введите 5 число: 4 Введите 6 число: 5 Введите 7 число: 0 Максимальное число: 9 2. Напишите программу, которая заполняет двухмерный массив случайными числами от -10 до 20 и выводит суммы элементов расположенных по диагонали таблицы. -10+random(31); Используемый материал: Объявления массива: <Имя> : Array [<нач_зн> … <кон_зн> ] of <тип> ; Доступ к массиву: <Имя массива> [ <Индекс> ]
ГЕНЕРАТОР СЛУЧАЙНЫХ ЧИСЕЛ (ГСЧ) Для генерации в программе случайных чисел, используют следующие операторы: Randomize – инициализация ГСЧ. Объявляется только в самом начале программы; Random – генерирует случайное число от 0 до 1 (вещественный тип); Random (N) – генерирует случайное число от 0 до N-1 (целый тип); 73
РАБОТА С ФАЙЛАМИ
75 РАБОТА С ФАЙЛАМИ Файл: Начало файла Указатель )a@$ku⌂|"Hd 9 v*9(L*M=БYGRMxdu. В █ 8 e*ВOt. CDr. TVz. HGJ 1 a. BD>@Б(r 8 s. E} █ : wc. Jv. Am. Ra'v/. Wai; $`SWI=y 2]su. B █ ? Hq>v. F(Lm. Bc. V^Adz 4 P 4. 6 b]o{Qk. В 8 █ cu<6`8 Z': M^1; : 8 ANwak; , b 2 -4…u 5 █ 2]su. B? Hq>v. F(Lm. Bc. Adz 4 wc. P]o{Qk. В █ 8 c 8 df]e"v, su>+), VAEFБj. FV, W$Q- █ y 0 G 1 Gj. N$-e. Б|sq. Z 0`Qn. В%БD%y █ █ █ - признак конца строки █ - признак конца файла Переменная Создание, чтение, запись, закрытие.
РАБОТА С ФАЙЛАМИ Последовательность действий, при работе с файлами: 1. Объявление файловой переменной (ФП); 2. Ассоциация ФП с файлом; 3. Открытие файла для чтения/записи; 4. Операции с файлом; 5. Закрытие файла (так же разрывается связь между файлом и ФП); 1. Объявление ФП <Имя> : File of <тип> ; <Имя> : Text; Var f: Text; h: File of Integer; 2. Ассоциация ФП с файлом Assign ( <ФП>, <имя файла> ); Assign (f, ‘c: myData. ghm’) 76
РАБОТА С ФАЙЛАМИ 3. Открытие файла для чтения/записи Reset ( <ФП> ); - открывает файл для чтения Rewrite ( <ФП> ); - открывает файл для записи 4. Операции с файлом Read ( <ФП>, <П 1> , <П 2> , …); - считывает в переменные <П 1>, <П 2> и т. д. по одному элементу с позиции указателя. Write ( <ФП> , <П 1> , <П 2> , …); - записывает в файл значения переменных <П 1>, <П 2> и т. д. по одному элементу с позиции указателя. Eo. Ln ( <ФП>); - возвращает True, если достигнут конец строки. Eo. F ( <ФП>); - возвращает True, если достигнут конец файла. 5. Закрытие файла Close ( <ФП> ); 77
РАБОТА С ФАЙЛАМИ 78 Упростите программу, если известно, что матрица размером 5 x 5 (используйте цикл For)
УПРАЖНЕНИЕ 79 Напишите программу «ДОМ-3» . В первом файле содержаться имена участников в именительном падеже. Во втором, те же самые имена, но в винительном. В третьем – список выражения чувств или какое-то действие (любит, не любит, целует, хочет укусить, обожает, уважает, ненавидит, хочет видеть, обнимает). Программа должна случайно брать информацию из этих файлов и создавать новый по следующему принципу: <имя в им. пад> <чувство/действие> <имя в вин. пад> Ольга любит Сергей Олег хочет видеть Романа Катя уважает Настю И т. д. Используемый материал: Название операторов: Assign, Rewrite, Reset, Write, Read, Close.
ГРАФИКА
ГРАФИКА Для работы с графикой в Pascal необходимы два файла – модуль graph. tpu и драйвер графического адаптера egavga. bgi. Первый находится в каталоге UNITS, а второй – в BGI. ! Драйвер egavga. bgi. Необходим при работе exe файла ! Чтобы рисовать, надо: 1. подключить модуль GRAPH (в разделе Uses); 2. инициализировать графику (Init. Graph); 3. что-нибудь нарисовать; 4. закрыть графический режим (Close. Graph) 81
ГРАФИКА Инициализация графического режима Рисование линии. Перо переходит из точки (0, 0) в точку (639, 479). PROGRAM Primer_1; Uses Graph, crt; Var Gd, Gm: Integer; BEGIN Gd: =0; Init. Graph (Gd, Gm, ‘d: BPbgi'); Line (0, 0, 639, 479); Read. Key; Close. Graph; END. 639 пикс. Система координат 479 пикс. 82 Закрытие графического режима
ГРАФИЧЕСКИЕ ПРИМИТИВЫ Line (x, y); Чертит линию от текущей координаты пера до координат (x, y). Move. To (x, y); Устанавливает перо в координаты (x, y). Put. Pixel (x, y, Color); Рисует точку с координатами (x, y) цветом Color. x 1, y 1 Get. Pixel (x, y): word; Возвращает цвет точки с координатами (x, y). Rectangle (x 1, y 1, x 2, y 2); Строит контур прямоугольника. Circle (x, y, r); Рисует окружность с центром в (x, y) и радиусом r. Set. Line. Style (Ln, 0, T) Изменяет параметры контуров. Ln - стиль линии (0. . 3): T - толщина линии: 1 = нормальная; 3 = толстая. Fill. Ellipse (x, y, Xr, Yr); Рисует закрашенный эллипс с центром в (x, y) и радиусами Xr и Yr. Set. Fill. Style (Type, Color); Устанавливает тип (0. . 11) и цвет штриховки замкнутых фигур Clear. Device; Очищает графический экран закрашивая его в текущий цвет фона 83 x 2, y 2
УПРАЖНЕНИЕ 1. Напишите программу, рисующее на экране монитора домик. Используемый материал: Графический модуль: Graph Инициализация графики: Init. Graph Закрытие графического режима: Close. Graph; 84
85 ЦИКЛ В ГРАФИКЕ 20 40 60 80 1 b 1: =40; q: =40; 100 2 B: =20; 180 140 0 for j: =1 to 10 do begin 20 40 60 b, b 1 80 100 120 140 q 1: =60 q, q 1 for i: =1 to 15 do begin bar (b; b 1; b+20; b 1+20); bar (q; q 1; q+20; q 1+20); q: =q+40; b: =b+40; end; b: =20; q: =40; b 1: =b 1+40; q 1: =q 1+40; end;
ГРАФИКА + ЦВЕТ Set. Color(Color: word); Устанавливает цвет пера Set. Bk. Color(color: word); Устанавливает цвет фона. Цвета Black Blue Green Cyan Red Magenta Brown Light. Gray Dark. Gray Light. Blue Light. Green Light. Cyan Light. Red Light. Magenta Yellow White 86 – чёрный – синий – зелёный – циановый – красный – сиреневый – коричневый – светло-серый – тёмно-серый – голубой – светло-зелёный – светло-циановый – розовый – светло-сиреневый – жёлтый – белый
ГРАФИЧЕСКИЕ ПРИМИТИВЫ 87
УПРАЖНЕНИЕ 88 1. Напишите программу, рисующая на экране монитора звёздное небо со звёздами случайного радиуса (от 1 до 5 пикс. ) и случайным расположением. Цвет тоже случайный (белый, светло-серый, тёмносерый); Используемый материал: Set. Color (Color: word); - Устанавливает цвет рисования Set. Bk. Color (color: word); - Устанавливает текущий цвет фона. Line (x, y); - Чертит линию от текущей координаты пера до координат (x, y). Move. To (x, y); - Устанавливает перо в координаты (x, y). Put. Pixel (x, y, Color); - Рисует точку с координатами (x, y) цветом Color. Rectangle (x 1, y 1, x 2, y 2); - Строит контур прямоугольника из линий текущего цвета. Circle (x, y, r); - Рисует окружность с центром в (x, y) и радиусом r. Fill. Ellipse (x, y, Xr, Yr); - Рисует закрашенный эллипс с центром в (x, y) и радиусами Xr и Yr.
ЭЛЕМЕНТЫ ЗАЛИВКИ Рисуем солнце на небе Set. Fillstyle (x, y ); - Устанавливает маску заливки и цвет фона Floodfill (x, y, z); - Устанавливает координаты заливки. Если указаны координаты внутри фигуры - заливка фигуры Если указаны координаты вне фигуры – заливка фона. 89
90 АНИМАЦИЯ (Солнышко скользит по небу) Меняем значение движения по горизонтали Рисуем солнце на небе Задаем цвет для рисования, совпадающий с цветом фона Время приостановки исполнения программы
ПОДПРОГРАММЫ
ПОДПРОГРАММЫ Подпрограммы –часть программы, оформленная в виде отдельной синтаксической конструкции , снабженная именем (самостоятельный программный блок ) - для решения отдельных задач. Процедуры Выполняют законченную последовательность действий , не возвращая результата работы в основную программу. Вызов: осуществляется по имени данной процедуры в теле программы. например: r(x 2, y 2, x 3, y 3, z); Функции Выполняет действие и возвращает результат. Вызов: производится в различных выражениях. z: =r(x 1, y 1, x 2, y 2); writeln(r(x 1, y 1, x 2, y 2)); Пример системных подпрограмм: Write(“Ок”)// процедура с одним параметром Clr. Scr; // процедура без параметров Length (S); // функция с одним параметров Random; // функция без параметров Функция, в отличие от процедуры возвращает результат вызова. 92
93 ПОДПРОГРАММЫ Механизмы передачи информацией между программой и подпрограммой описание процедуры: описание procedure<имя>(<список формальных переменных>); var{раздел описания переменных} begin {операторы} Область входных end; function<имя> (<список формальных переменных> : <тип>) : тип); begin <имя функции>: =<выражение>; end; переменных например: procedure r (xa, ya, xb, yb: real; var d: real); begin d: =sqrt(sqr(xa-xb)+(ya-yb)); End Область входных и выходных переменных вызов процедуры: <имя >< список фактических переменных>; например: r(x 2, y 2, x 3, y 3, z); writeln(z); функции: например: Область входных переменных fuction r (xa, ya, xb, yb: real; )real); begin r: = sqrt(sqr(xa-xb)+(ya-yb)); end; Присваивает себе вычисл. Значение Тип функции вызов функции: < оператор>: = < имя функции > (<список фактических переменных>); например: z: =r(x 1, y 1, x 2, y 2);
УПРАЖНЕНИЕ 1. Составить программу передачи переменных в процедуру на обработку и вывода результатов через основную программу. 94
ПОДПРОГРАММЫ (ППР) Вложенность подпрограмм Программа Подпрограмма 1 Подпрограмма 3 Подпрограмма 4 Подпрограмма 2 95 Область доступности переменных • Переменные, описанные в некоторой ППР, известны в пределах её тела, ВКЛЮЧАЯ и все вложенные ППР (переменная описанная в ППР 1 будет доступна и в ППР 3, 4). • Имена переменных, описанных в ППР, могут совпадать с именами переменных из других ППР (в каждой из ППР может быть объявлена одинаковая переменная). • Имя переменной, описанное в ППР, экранирует одноимённые переменные из ППР, объемлющих данный (если в ППР 1 и ППР 3 объявлены одинаковые переменные, то в каждой ППР эти переменные будут уникальны). Переменные программы называются глобальные, А переменные подпрограмм – локальные.
ПРОЦЕДУРЫ БЕЗ ПАРАМЕТРОВ Синтаксис записи: Procedure {имя процедуры}; {Раздел переменных, констант, типов, меток, модулей} Begin {Тело процедуры}; End; Пример использования процедуры без параметров: 96
ПРОЦЕДУРЫ БЕЗ ПАРАМЕТРОВ Пример экранирования одноимённых переменных: Program My_program; Uses Crt; Var A: String; // Описание процедуры Procedure My_Procedure; Var A: String; Begin A : = 'Подпрограмма'; Writeln(A); End; Begin A : = 'Тело'; Writeln(A); My_Procedure; Writeln(A); End. // Вызов процедуры 97
ПРОЦЕДУРЫ С ПАРАМЕТРАМИ 98 Для того, чтобы подпрограммы были более универсальными, применяются специальные механизмы обмена данными между программой и её подпрограммами. Системные процедуры с параметрами: Set. Color (Red); { Процедура с Rectangle (0, 0, 639, 479); { Процедура с Init. Graph (Gd, Gm, ‘d: BPbgi'); { Процедура с { параметрами одним параметром } несколькими параметрами } несколькими разнотипными } } Синтаксис записи процедуры с параметрами Procedure {Имя} ( {Область входных переменных} Var {Область выходных переменных (для каждой переменной свой Var)} ); Структура областей: Переменная_1, Переменная_2, … : Тип; . . . Переменная_N-1, Переменная_N, … : Тип; Любая из областей может отсутствовать
ПРОЦЕДУРЫ С ПАРАМЕТРАМИ Использование входных параметров Процедура рисования окаймляющего экран прямоугольника, заданного цвета Без параметров С параметрами Procedure Cir; Begin Set. Color (i); Set. Bk. Color (b); Rectangle (0, 0, 639, 479); End; Procedure Cir (i, b: Integer); Begin Set. Color (i); Set. Bk. Color (b); Rectangle (0, 0, 639, 479); End; Вызов процедуры в программе: i: =6; b: =12; Cir; Cir(6, 12); 99
ПРОЦЕДУРЫ С ПАРАМЕТРАМИ Использование выходных параметров Процедура преобразования угла из градусной меры в радианную. PROGRAM EX_26_3; VAR x, a: real; PROCEDURE Rad(alfa: real; var betta: real); {выходная переменная} BEGIN Betta : = pi*alfa/180; END; BEGIN Write('Введите угол в градусах: '); Readln(x); Rad(x, a); {Вызов процедуры} Writeln('Ему равен угол в радианах = ', a: 6: 4); END. 100
УПРАЖНЕНИЕ 1. Напишите процедуру, рисующую треугольник, в следующем формате: Triangle (x 1, y 1, x 2, y 2, x 3, y 3, Color) 2. Напишите процедуру вычисления площади прямоугольника в следующем формате: SRect (a, b, S) где, S – выходной параметр процедуры. Используемый материал: Procedure {Имя} ( {Область входных переменных} Var {Область выходных переменных} ); Структура областей: Переменная_1, Переменная_2, … : Тип; . . . Переменная_N-1, Переменная_N, … : Тип; 101
ФУНКЦИИ 102 Синтаксис записи функции Function ( {Область входных переменных} Var {Область выходных переменных} ): {Тип} ; Оформление процедуры Оформление функции Procedure S(a, b: real; var s: real); Begin s : = a+b; End; Function Sum (a, b: real): real; Begin Sum : = a+b; End; Вызов процедуры Вызов функции S(10, 20, A); Write (A); A : = S(10, 20); Write. LN (A); Write. LN ( S(20, 30) ); Оформлять некоторую подпрограмму как функцию целесообразно только в том случае, если ожидается некоторый результат её работы. Если подпрограмма ориентирована только на выполнение некоторой последовательности действий (вывод на экран, рисование и т. д. ), лучше оформить её как процедуру.
УПРАЖНЕНИЕ 103 Напишите функцию вычисления площади прямоугольника в следующем формате: SRect (a, b) Используемый материал: Function {Имя} ( {Область входных переменных} Var {Область выходных переменных} ): {Тип} ; Структура областей: Переменная_1, Переменная_2, … : Тип; . . . Переменная_N-1, Переменная_N, … : Тип;
МОДУЛИ
105 МОДУЛИ Модуль (UNIT) - самостоятельная программная единица, ресурсы (процедуры и функции) которой могут быть использованы другими программами. Program My 1; Uses Модуль1, Модуль2 ; __________________________ _________ МОДУЛЬ 1 Набор ресурсов 1 … Program My 2; Uses Модуль1, Модуль2 ; __________________________ _________ МОДУЛЬ N Набор ресурсов N Модули подключаются к программе через раздел USES
МОДУЛИ. СТРУКТУРА 106 Модуль состоит из следующих частей: 1. Заголовок модуля. 2. Интерфейсная часть. (описания видимых объектов) 3. Реализационная часть. (описания скрытых объектов) 4. Инициализационная часть (не обязательна). Unit {Имя модуля}; Interface { Раздел глобальных переменных, констант, типов} { модулей } { Список заголовков процедур и функций } Implementation { Раздел локальных переменных, констант, типов} { Реализация процедур и функций } Begin {Часть инициализации } End. ! Имя заголовка модуля должно совпадать с именем файла модуля !
МОДУЛИ Пример модуля: Unit My_Unit; Interface Var ms: Array [1. . 100, 1. . 10] of Real; { Глобальный массив } Function Cub(x: integer): Integer; { Функция Cub = x^3 } Function ext 4(x: integer): Integer; { Функция ext 4 = x^4 } Implementation Function Cub(x: integer): Integer; { Реализация функции Cub } Begin Cub : = x*x*x; End; Function Ext 4(x: integer): Integer; { Реализация функции ext 4 } Begin Ext 4 : = x*x*x*x; End. 107
108 УПРАЖНЕНИЕ Напишите модуль одной функцией и одной процедурой: { Функция вычисление X 1=1/x } X 1(a: real): real; While not keypressed do begin { Процедура печати на экране слова S, в позиции X, Y Delay(2000); Write. XY(S: String; X, Y: Iteger); End; Используемый материал (структура модуля): Unit {Имя модуля}; Interface { Раздел глобальных переменных, констант, типов} { модулей } { Список заголовков процедур и функций } Implementation { Раздел локальных переменных, констант, типов} { Реализация процедур и функций } Begin {Часть инициализации } End. }