Показаны сообщения с ярлыком Описание. Показать все сообщения
Показаны сообщения с ярлыком Описание. Показать все сообщения

Функции пользователя (описание, вызов, структура). Рекурсивные подпрограммы

В языке Паскаль имеется два вида подпрограмм - процедуры и функции.

Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров.

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

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

Описание и вызов функций 

Структура описания процедур и функций до некоторой степени похожа на структуру Паскаль-программы: у них также имеются заголовок, раздел описаний и исполняемая часть. Раздел описаний содержит те же подразделы, что и раздел описаний программы: описания констант, типов, меток, процедур, функций, переменных. Исполняемая часть содержит собственно операторы процедур. 
Формат описания функции:
Function имя функции (формальные параметры): тип результата;
раздел описаний функции
Begin
  исполняемая часть функции
End;
Формальные параметры в заголовке функций записываются в виде:
Var имя праметра: имя типа
отсутствовать (об этом далее). Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа.

При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.

Вызов функции в Турбо Паскаль может производиться способом как при процедурах, кроме того имеется возможность осуществить вызов внутри какого-либо выражения. В частности имя функции может стоять в правой части оператора присваивания, в разделе условий оператора if и т.д.

Для передачи в вызывающий блок выходного значения функции в исполняемой части функции перед возвратом в вызывающий блок необходимо поместить следующую команду:
имя функции := результат;
При вызове функций необходимо соблюдать следующие правила:
  • количество фактических параметров должно совпадать с количеством формальных; 
  • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу.
Заметим, что имена формальных и фактических параметров могут совпадать.
Пример: программа поиска максимума из двух целых чисел.
Var x,y,m,n: integer;
Function MaxNumber(a,b: integer): integer;

Var max: integer;
Begin
  If a>b Then max := a
  Else max := b;
  MaxNumber := max;
End;
Begin
  write('Введите x,y ');
  readln(x,y);
  m := MaxNumber(x,y);
  n := MaxNumber(2,x+y);
  writeln('m=',m,'n=',n);
End.
Рекурсия – способ организации вычислит. процесса, при котором процедура или функция в ходе выполнения ее операторов, обращается сама к себе.

Для того, чтобы такое обращение не было бесконечным, в тексте программы должно быть условие, при выполнении которого дальнейшего обращения к программе не происходит.

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

Процедуры пользователя в Pascal (описание, вызов, структура)

В языке Паскаль имеется два вида подпрограмм - процедуры и функции.

Процедуры помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров.

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

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

Описание и вызов процедур 

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

Формат описания процедуры имеет вид:
Procedure имя процедуры (формальные параметры);
раздел описаний процедуры
Begin
  исполняемая часть процедуры
End;

Формальные параметры в заголовке процедур записываются в виде:
Var имя праметра: имя типа
 и отделяются друг от друга точкой с запятой. Ключевое слово var может отсутствовать. Если параметры однотипны, то их имена можно перечислять через запятую, указывая общее для них имя типа.

При описании параметров можно использовать только стандартные имена типов, либо имена типов, определенные с помощью команды type.Список формальных параметров может отсутствовать.

Вызов процедуры производится оператором, имеющим следующий формат:
имя процедуры(список фактических параметров); 

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

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

При вызове процедур необходимо соблюдать следующие правила:
  • количество фактических параметров должно совпадать с количеством формальных; 
  • соответствующие фактические и формальные параметры должны совпадать по порядку следования и по типу. 
Заметим, что имена формальных и фактических параметров могут совпадать. Это не приводит к проблемам, так как соответствующие им переменные все равно будут различны из-за того, что хранятся в разных областях памяти.

Кроме того, все формальные параметры являются временными переменными - они создаются в момент вызова подпрограммы и уничтожаются в момент выхода из нее.

Существует два вида переменных:
  • Локальные – описываются в подпрограммах, используются только в той подпрограмме, где были описаны. В основной программе они не известны. 
  • Глобальные – описываются в основной программе до раздела процедур и функций. Область их действий распространяется на основную программу и на все подпрограммы. 
Рассмотрим использование процедуры на примере программы поиска максимума из двух целых чисел.
Var x,y,m,n: integer;
Procedure MaxNumber(a,b: integer; Var max: integer);
Begin
  If a>b Then max := a
  Else max := b;
End;
Begin
  write('Введите x,y ');
  readln(x,y);
  MaxNumber(x,y,m);
  MaxNumber(2,x+y,n);
  writeln('m=',m,'n=',n);
End.

Запись в Pascal. Работа с записями. Прямой доступ к записям

Комбинированный тип данных.

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

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

Процедуры ввода – вывода в Pascal

Процедуры ввода информации Read, ReadLn в Pascal

Процедура ввода обеспечивает ввод числовых данных, символов, строк, и т.д. для следующей их обработки программой.
Формат:
Read(X1, X2,…,Xn);
Значения X1, X2,…,Xn набираются минимум через один пробел на клавиатуре пользователем. После набора данных для одной процедуры Read  нажимается клавиша ввода. Значения переменных должны вводится в строгом соответствии с синтаксисом языка Pascal. Если соответствие нарушается ( например X1 имеет тип Integer, а при вводе набирается значение типа Char), то возникает ошибка ввода.

Пример:
Var :
      I: Real;
  J: Integer;
  K: Char;
Begin
  Read(I,J,K);
  …
End. 

Процедуру Read можно использовать для организации пауз произвольной длины при выполнении программы. Для этого достаточно записать: Read(Kbd,Ch). Ch- литерная переменная, Kbd – имя стандартного файла клавиатуры. Программа продолжит работу только после того, как будет нажата любая клавиша на клавиатуре. Введенный символ на клавиатуре не отобразится.
Для ввода данных можно использовать процедуру ReadLn. Она аналогична процедуре Read. После выполнения данной процедуры курсор автоматически перейдет на новую строку.

Выражения в Pascal

Арифметические выражения в Pascal

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


Выражение
Тип данных
Тип результата
Операция
Пример
A+B
Real
Integer
Real, Integer
Real
Integer
Real
Сложение


A-B
Real
Integer
Real, Integer
Real
Integer
Real
Вычитание

A*B
Real
Integer
Real, Integer
Real
Integer
Real
Умножение

A/B
Real
Integer
Real, Integer
Real
Real
Real
Деление

A div B
Integer
Integer
Целочисленное деление
11 div 5 Þ2
10 div 3Þ3
2 div 3Þ0
A mod B
Integer
Integer
Деление с остатком
11 mod 5Þ1
10 mod 3Þ1
14 mod 5Þ4

Приоритет операций в порядке убывания: /, *, div, mod, -,  +
Для изменения приоритета операций используются круглые скобки.

Например:
(A+B)/(A-B)

Константы в Pascal

Числовые константы

В языке Pascal допускается использование чисел в 10 и 16 системах счисления. Если число представлено в 16 системе счисления, то перед ним без пробела записывается знак $. Диапазон изменения чисел в 16 системе счисления от $00000000 до $FFFFFFFF.

В 10 системе счисления числа могут записываться двумя способами: с фиксированной и с плавающей точкой. Вещественные десятичные числа с фиксированной точкой записываются по обычным правилам арифметики. Целая часть от дробной отделяется точкой. Если точка отсутствует, число считается целым.
 
Например
125 - целое десятичное число
$1FF - 16 -е число
124.674 - вещественное число

Вещественные десятичные числа с плавающей точкой представлены в виде: mE+p, где m - мантисса (целое или дробное число с десятичной точкой), E - означает "десять в степени", р - порядок (целое число).
 
Например
5.18Е +02 -> 5,18*102 -> 518
10Е-03-> 10*10-3 -> 0,01

Строковые и символьные константы

Строка символов - это последовательность любого количества символов (не более 126), расположенных на одной строке и заключенных в апострофы.
 
Например
Const
Symb='TURBO';

Основные понятия языка Turbo Pascal 7.0

Понятия языка Turbo Pascal

Язык Pascal разработан профессором Виртом в 1969 -1971 г. и назван в честь великого французского математика и философа - Блеза Паскаля - первого в мире создателя счетно-решающей машины. Язык Pascal был разработан в первую очередь для обучения учащихся практике программирования. Благодаря своей стройности, лаконичности, эффективности реализации большинства научно-технических задач язык Pascal приобрел широкую известность.

Алфавит  языка

Алфавит - совокупность допустимых в языке символов.
Элементы алфавита можно разбить на четыре группы:
  • символы, используемые в идентификаторах;
  • разделители - пробел;
  •  специальные символы;
  • неиспользуемые символы.

Символы, используемые в идентификаторах

Идентификатор - имя любого объекта программы - может включать латинские буквы (прописные и строчные), арабские цифры (0…9) и символ подчеркивания.
Общие правила написания идентификаторов:
  • Идентификатор начинается только с буквы или знака подчеркивания (исключение составляют метки, которые могут начинаться и цифрой и буквой);
  • Между двумя идентификаторами должен быть, по крайней мере, один пробел.
  • Длина идентификатора может быть любой, но значимыми являются только первые 63 символа;
  • Прописные и строчные буквы в идентификаторах не различаются.
Например:
Metka12
1gr              - ошибка
Blok_5
Nomer.data - ошибка

Специальные символы

При написании программ применяются специальные символы: + - * / = > < [ ] ( ) { } . , : '# $  Составные символы, которые воспринимаются как единое целое: :=  <>  ..  <=  >=  (.  .)  (*  *)

Неиспользуемые символы

Буквы русского алфавита не используются в Pascal, но их можно использовать в комментариях и символьных строках.

Файлы в Pascal. Понятия файла и файловой переменной. Внешние файлы

Файлы в Pascal.


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

Файл – совокупность данных, записанная во внешней памяти под определенным именем.
Файловый тип переменной – структурированный тип, представляет собой совокупность однотипных элементов, количество которых заранее не определено.

Турбо Паскаль поддерживает три файловых типа:
  1. типизированные файлы – файлы, состоящие из компонентов одного типа, число которых заранее не определено;
  2. безтиповые файлы – файлы, где информация записывается и считывается блоками определенного размера, в них могут храниться данные любого вида и структуры; 
  3. текстовые файлы – файлы, состоящие из любых символов. Они организуются по строкам, каждая из которых заканчивается символом «конец строки». В конце файла ставиться символ «конец файла». Информацию текстового файла можно просмотреть с помощью любого текстового редактора.
Понятие файла в Паскале употребляют в двух смыслах:
  1. как поименованная область данных на внешнем носители (внешний файл)
  2. как переменная файлового типа (внутренний файл)
В программе между этими объектами устанавливают связь и все, что в процессе выполнения программы происходит с внутр. файлом, дублируется во внешний. Над элементами файла можно делать только 2 операции: читать с файла, записывать в файл.

Множества, описание множества, конструктор множества, операции над множествами Pascal

Множество в Pascal.

Множества в Pascal
Множества в Pascal.
Множество - это совокупность однотипных элементов, рассматриваемых как единое целое.

Количество элементов, входящих в множество, может меняться в пределах от 0 до 256 (множество, не содержащее элементов, называется пустым). Множества отличаются от массивов непостоянством количества своих элементов, а также элементы множества не пронумерованы и неупорядочены. Действия могут выполняться только над множеством в целом.

Тип элементов множества называется базовым типом. Базовый тип м.б. любым порядковым (целым, логическим, символьным, интервальным, перечисляемым). Элементы множества задаются в [] (например: [3,4,5], [1..10], [‘a’,’c’], [ ]-пустое множество). Порядок записи элементов множества не имеет значения: [1,2,3]=[3,1,2]

Что такое язык программирования?

Язык программирования 

Язык программирования – фиксированная система обозначений и правил для достижения определенных целей.

Языки делятся в зависимости от близости или удаленности от языка машинных команд
  1. языки высокого уровня – инструкции для ЭВМ записываюся простыми командами на аппаратном уровне, который отображает структуру ЭВМ, продуцируют быстрые и компактные продукты, но сложные для изучения и работы (отчасти C/C++, ассемблер).. Такие языки еще называют машинно – ориентированными.
  2. языки низкого уровня – инструкции для ЭВМ записываются в наглядно, легко воспринимаемом виде, имеют понятный синтаксис, близкий к человеческому общению, и удобные в работе, но создают довольно громоздкие и медленные программы (таковы, к примеру, семейства языков Basic, Java, Delphi, отчасти языки C/C++)
Проблемно-ориентированные языки – предназначены для решения узкого класса задач.

Процедурно-ориентированные языки – используют специалисты, знающие математич. модель решения задач и методы решения.

Виды алгоритмов и способы их описания

Виды алгоритмов и способы их описания.

Алгоритмы различаются на следующие виды:
  1. Линейный – перечень команд (инструкций), выполняемых последовательно друг за другом
  2. Разветвляющийся – алгоритм, при котором последовательность выполнения команд зависит от условия, которое разделяет выполнение на несколько ветвей
  3. Циклический – алгоритм, в котором одна и та же команда или последовательность команд повторяется один или некоторое количество раз. Выход из повторяющегося условия определяется данными программы или условиями задача.
Любая алгоритмическая конструкция может содержать в себе другую конструкцию того же или иного вида, т. е. алгоритмические конструкции могут быть вложенными.

Основные свойства алгоритма

Основными свойствами алгоритма являются:
  1. Детерминированность (определенность). Предполагает получение однозначного результата вычислительного процесса при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  2. Результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  3. Массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  4. Дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений.

Понятие алгоритма

Понятие алгоритма

Алгоритм - это последовательность действий, приводящая к достижению какой либо цели.

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



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

Данные – это информация представленная в формализованном виде (числа, таблицы, рисунки).
 

Алгоритм является первичным. Сначала (в идеале) составляется блок-схема, после этого пишется основная программа.

Существует несколько видов алгоритмов.

Вообще, алгоритм не привязан ни к какому языку программирования. Он обособлен и по-своему уникален.

Существует множество способов описание алгоритмов.

Формы записи алгоритмов:

  • Словесная (записи на естественном языке) 
  • Графическая (изображение в виде блок-схемы) 
  • С использованием специального алгоритмического языка
  • Табличная (в форме таблиц)
  •  Программная (тексты на языках программирования)

Алгоритм строиться по определенным правилам, описанным в ГОСТе. Для построения блок-схем алгоритмов используются специальные графические инструменты (к примеру - Microsoft Visio).