
- •Основные понятия языка программирования паскаль
- •Структурное программирование
- •Основные символы языка
- •Элементы языка
- •Интегрированная среда turbo pascal
- •Структура программы в turbo pascal
- •Определение типов
- •Операторы в программе
- •Операторные скобки
- •Операторы ввода
- •Оператор присваивания
- •Оператор условного перехода
- •Оперетор безусловного перехода
- •Организация циклов
- •Использование операторов условного и безусловного перехода
- •Цикл с параметром
- •Цикл с предусловием - цикл while
- •Цикл с постусловием - цикл repeat
- •Оператор выбора варианта
- •Концепция типов данных
- •Стандартные простые типы Целый тип
- •Операции над данными целого типа:
- •Действительный тип
- •Операции над данными действительного типа:
- •Логический тип
- •Символьный тип
- •Символьные строковые константы
- •Нестандартные простые типы (определяемые пользователем)
- •Перечисляемый тип
- •Ограниченный тип (диапазон, интервал)
- •Процедуры и функции
- •Описание процедур
- •Стандартные процедуры
- •Описание функций
- •Стандартные функции
- •Итерация и рекурсия
- •Побочный эффект рекурсии
- •Предварительное описание (ссылки вперед)
- •Регулярные типы Одномерный массив
- •Алгоритмы сортировки массивов
- •1. Метод пузырька (метод обменной сортировки с выбором)
- •Многомерные массивы
- •Упакованные массивы
- •Множественные типы
- •Свойства множеств
- •Операции над множествами
- •Комбинированные типы Описание записей и действия с ними
- •Оператор присоединения.
- •Записи с вариантами
- •Типизированная константа
- •Простая типизированная константа
- •Структурированная (сложная) типизированная константа Типизированная константа массива
- •Типизированная константа записи
- •Типизированная константа множества.
- •Преобразование типов
- •Неявные преобразования типов
- •Использование стандартных функций для преобразования
- •Явные преобразования типов
- •Эквивалентность типов
- •Совместимость типов
- •Файловые типы
- •Определение файлового типа
- •Структура файла
- •Имя файла
- •Описание файлового типа
- •Файловая переменная
- •Операции над файлами
- •Типизированные файлы
- •Ссылочные типы (указатели) Статические и динамические переменные
- •Ссылочные типы (указатели)
- •Удаление узла из стека:
- •Человек
- •Человек
- •Вставка
- •Динамические переменные
- •Процедуры создания и удаления динамических переменных
- •Динамические списковые структуры
- •Однонаправленные списки
- •Двунаправленные списки
- •Очереди
- •Деревья
- •Модульная система turbo pascal
- •Uses mod 1, mod 2, mod 3; (подключение трех модулей) Общая структура модуля
- •Использование идентификаторов модуля
- •Использование модуля в программе
- •Компиляция модулей
- •Системный файл turbo.Tpl
- •Стандартные модули
- •Модуль crt
- •Модуль dos
- •Модуль printer
- •Модуль overlay
- •Модуль string
- •Процедуры модуля graph
- •Графические процедуры
- •Координаты. Окна. Страницы
- •Линии и точки
- •Многоугольники
- •Дуги,окружности, эллипсы
Стандартные процедуры
Это, в первую очередь, процедуры ввода и вывода Read, readln, write, writeln. С ними вы знакомы.
В циклах Repeat, While и For можно использовать еще две процедуры – Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условий выхода.
Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена.
Пример: В массиве целых чисел найти первое отрицательное число и вывести его на экран.
Фрагмент программы
For I:=1 to N do {поиск отрицательного числа}
Begin
If A[i]>=0 then
Continiue; {не отр.=> на след. число}
Writeln (‘1-ое отриц. число=’, A[i]);
Break
End;
Процедура Exit служит для досрочного выхода из программы. Дело в том, что безусловный переход с использованием оператора goto можно осуществлять далеко не из каждого места программы и не в любое место программы. Так, например, нельзя с его помощью перейти из основной программы в подпрограмму или выйти из подпрограммы. Для этой цели используется процедура Exit.
Описание функций
Описание функции в основном аналогично описанию процедуры, однако есть и отличия. Результатом работы функции является одно значение. Тип результата задается в заголовке.
Общий вид заголовка функции:
Function имя функции (список формальных параметров):тип результата.
Если функция изменяет значения формальных параметров – переменных или значения глобальных по отношению к данной функции переменных, то говорят, что функция имеет побочный эффект.
Применение функции с побочным эффектом нарушает структурированность программы, поэтому их использование нежелательно.
Среди входящих в функцию операторов должен обязательно присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя функции. Этот оператор и определяет значение, вырабатываемое функцией. При вызове функции передача фактических параметров производится так же, как и при вызове параметра.
Пример: Найти разность двух факториалов: F=m!-k!
Program P1;
Var F,M,K:Integer;
Function Fact (N:Integer):Integer;
Var P,I:Integer;
Begin
P:=1
For I:=2 to N do
P:=P*I;
Fact:=P
End;
Begin
Writeln (‘Ввод М,К’);
Readln (M,K);
F:=Fact (M) – Fact (K);
Writeln (‘F=’,F:5);
End.
Внутри функции имена N,P,I являются локальными. Результат вычисления факториала обозначается именем функции Fact. В основной программе переменные F,M,K являются глобальными. При вычислении значения F дважды происходит обращение к функции Fact(M) и Fact(k) прямо в правой части оператора присваивания. При этом вызов функции м. делать непосредственно внутри выражения, подобно тому, как используются стандартные встроенные функции, например Sin(x).
Стандартные функции
Они вам известны: это арифметические, алгебраические и тригонометрические функции. Кроме того, есть функция конца строки: Eoln - end of line.
Итерация и рекурсия
Итерация (от лат. повторение) - повторение, применение какой – либо математической.
Пример: Вычислить сумму ряда:
S=a1+a2+….+an
S1=a1
S2=a1+a2
S3=a1+a2+a3
S4=a1+a2+a3+a4
…………………
S=a1+a2+…+an
Рекурсия (от лат. возвращение) - вычисление последующего значения ряда через предыдущее. Последовательность, в которой соседние значения связаны формулой, называется рекурсивной.
Пример: Арифметическая прогрессия: a1, a2=a1+d, a3=a2+d, an=an-1+d
Пример.
Begin
If (n=0) or (n=1) then Factorial:=1
Else begin F:=1
For i:=2 to n do
F:=f*i;
Factorial:=f;
End;
End;
Begin Writeln (‘Введите N’);
Readln (N);
Writeln (‘факториал=’,Fact);
End.
Пример.
Program Rekursion;
Var fact:real;
N:integer;
Function Factorial (N:integer):real;
Begin
If (n=0) or (N=1) then factorial:=1
Else factorial:=factorial (N-1)*n;
End;
Begin
writeln (‘Введите N’);
Readln (N);
Fact:=factorial (N);
Writeln (‘факториал=’,fact);
End.
Здесь первый вызов функции происходит в основной программе, а затем, начинается рекурсивный вызов внутри функции.
В языке программирования Паскаль есть возможность обращения процедуры или функции к самой себе. При этом циклическую часть программы можно составить без операторов цикла. Способ обращения процедуры или функции к самой себе называется рекурсией. С помощью рекурсии удобно представлять те задачи, которые сводятся к подзадачам того же типа, но меньшей размерности.
Вычисление факториала можно представить опять через факториал.
N!=n(n-1)!-рекурсивная формула.
Представление факториала в виде последовательности операций умножения – это итерационный процесс. n!= 1*2*3…n-итерационная формула. Итерация программируется с помощью циклов.
Пример: Вычисление факториала.
Program Iteracion ;
Var fact: real;
N:integer;
Function factorial (n: integer):real;
Var f:real;
I: integer;
Пример. В 13 веке итальянский математик Фибоначчи сформулировал задачу: ”Некто поместил пару кроликов в некое место, огороженное со всех сторон стеной, чтобы узнать, сколько пар кроликов родится в течение года, если через месяц пара кроликов производит на свет другую пару, а рожают со второго месяца после своего рождения.
Program Krolik;
Var kr:integer; (*число кроликов*)
N:Integer; (*число месяцев*)
Function fib(n:integer):integer;
Begin
If (n=1) or (n=2) then fib:=1
Else fib:=fib(n-1)+fib(n-2)
End;
Begin
Writeln(‘ввести N’);
Readln (N);
Kr:=fib (N); (*вызов ф-и*)
Writeln (kr:5);
End.