- •1 Вопрос Краткая история развития вычислительной техники (вт).
- •2 Вопрос Понятие о машинном языке
- •Вопрос 3 Язык Паскаль. Структура Паскаль-программы.
- •4 Вопрос Типы данных в языке Паскаль.
- •Вопрос 5. Оператор присваивания , ввода и вывода. Простейшие Паскаль программы.
- •6 Вопрос Базовая структура «ветвление». Операторы условия и выбора в языке Паскаль.
- •7 Вопрос: Понятие цикла. Классификация циклов.
- •8 Вопрос: Операторы цикла в языке Паскаль
- •10 Вопрос Функции пользователя в языке Паскаль.
- •11 Вопрос Рекурсия. Рекурсивные функции.
- •13 Вопрос Этапы развития языков программирование
- •14 Вопрос Объектно-ориентированное программирование.
- •15 Вопрос Алгоритм. Классификация алгоритмов. Блок – схема.
- •Вопрос 16. Понятие модели и их классификация.
- •17 Вопрос Основные этапы моделирования.
- •Вопрос 18. Структура и архитектура эвм.
- •Вопрос 19. Логические основы эвм.
- •20 Вопрос Процессор.
- •21 Вопрос Внутренняя и внешняя память
- •22 Вопрос устройства ввода данных
- •23 Вопрос Классификация эвм
- •Вопрос 24 классификаци по (программное обеспечение)
- •25 Вопрос Базовое по. Операционные системы
- •26 Вопрос Прикладное по. Системы обработки текста.
- •27 Вопрос Базы данных и субд.
- •28 Вопрос Прикладное по. Электронные таблицы.
- •29 Вопрос Прикладное по. Компьютерная графика. Создание презентаций.
- •30. Глобальные сети. Сервисы Интернет.
- •31. Локальные компьютерные сети. Топология сетей.
- •32. Работа с графикой
- •33. Телекоммуникации. Сеть Интернет.
10 Вопрос Функции пользователя в языке Паскаль.
Функции в Паскале
Подпрограмма - автономная часть программы, выполняющая определенный алгоритм и допускающая обращение к ней из различных частей общей программы.
В языке Паскаль существует два вида подпрограмм: процедура (PROCEDURE ) и функция ( FUNCTION ).
Набор встроенных функций в языке Паскаль достаточно широк (ABS, SQR, TRUNC и т.д.). Если в программу включается новая, нестандартная функция, то ее необходимо описать в тексте программы, после чего можно обращаться к ней из программы. Обращение к функции осуществляется в правой части оператора присваивания, с указанием имени функции и фактических параметров. Функция может иметь собственные локальные константы, типы, переменные, процедуры и функции. Описание функций в Паскале аналогично описанию процедур. Отличительные особенности функций: - результат выполнения - одно значение, которое присваивается имени функции и передается в основную программу;
- имя функции может входить в выражение как операнд.
Функция, определенная пользователем, состоит из заголовка и тела функции. Заголовок содержит зарезервированное слово function, идентификатор (имя) функции, заключенный в круглые скобки, необязательный список формальных параметров и тип возвращаемого функцией значения. Тело функции представляет собой локальный блок, по структуре аналогичный программе:
function <имя> (Формальные параметры) : тип результата;
const ...;
type ...;
var ...;
begin
<операторы функции>
end;
В разделе операторов должен присутствовать, по крайней мере, один оператор, присваивающий имени функции значение. В точку вызова возвращается результат последнего такого присваивания.
Обращение к функции осуществляется по имени с необязательным указанием списка аргументов. Каждый аргумент должен соответствовать формальным параметрам, указанным в заголовке, и иметь тот же тип.
Пример. Написать подпрограмму-функцию степени аx, где a, х – любые числа. Воспользуемся формулой: аx = ex ln a
program p2;
var f, b, s, t, c, d : real; { глобальные параметры}
function stp (a, x : real) : real;
var y : real; { локальные параметры}
begin
y := exp (x * ln ( a)) ;
stp:= y;{присвоение имени функции результата вычислений подпр-мы}
end; { описание функции закончено }
begin {начало основной программы }
d:= stp (2.4, 5); {вычисление степеней разных чисел и переменных }
writein (d, stp (5,3.5));
read (f, b, s, t); c := stp (f, s)+stp (b, t);
writeln (c);
end.
11 Вопрос Рекурсия. Рекурсивные функции.
Реку́рсия — процесс повторения элементов самоподобным образом. Например, если два зеркала установить друг напротив друга, то возникающие в них вложенные отражения суть одна из форм бесконечной рекурсии.Термин «рекурсия» используется в различных специальных областях знаний — от лингвистики до логики, но наиболее широкое применение находит в математике и информатике. В математике и информатике рекурсия имеет отношение к методу определения функций: рекурсивно заданная функция в своём определении содержит себя, в частности, рекурсивной является функция, заданная рекуррентной формулой. Таким образом, можно одним выражением дать бесконечный набор способов вычисления функции, определить множество объектов через самого себя с использованием ранее заданных частных определений.
В программировании рекурсия — вызов функции (процедуры) из неё же самой, непосредственно (простая рекурсия) или через другие функции (сложная или косвенная рекурсия), например, функция вызывает функцию , а функция — функцию . Количество вложенных вызовов функции или процедуры называется глубиной рекурсии.
Преимущество рекурсивного определения объекта заключается в том, что такое конечное определение теоретически способно описывать бесконечно большое число объектов. С помощью рекурсивной программы же возможно описать бесконечное вычисление, причём без явных повторений частей программы.
Реализация рекурсивных вызовов функций в практически применяемых языках и средах программирования, как правило, опирается на механизм стека вызовов — адрес возврата и локальные переменные функции записываются в стек, благодаря чему каждый следующий рекурсивный вызов этой функции пользуется своим набором локальных переменных и за счёт этого работает корректно. Оборотной стороной этого довольно простого по структуре механизма является то, что на каждый рекурсивный вызов требуется некоторое количество оперативной памяти
компьютера, и при чрезмерно большой глубине рекурсии может наступить переполнение стека вызовов. Вследствие этого, обычно рекомендуется избегать рекурсивных программ, которые приводят (или в некоторых условиях могут приводить) к слишком большой глубине рекурсии.
Имеется специальный тип рекурсии, называемый «хвостовой рекурсией». Интерпретаторы и компиляторы функциональных языков программирования, поддерживающие оптимизацию кода (исходного или исполняемого), автоматически преобразуют хвостовую рекурсию к итерации, благодаря чему обеспечивается выполнение алгоритмов с хвостовой рекурсией в ограниченном объёме памяти. Такие рекурсивные вычисления, даже если они формально бесконечны (например, когда с помощью рекурсии организуется работа командного интерпретатора, принимающего команды пользователя), никогда не приводят к исчерпанию памяти. Однако, далеко не всегда стандарты языков программирования чётко определяют, каким именно условиям должна удовлетворять рекурсивная функция, чтобы транслятор гарантированно преобразовал её в итерацию. Одно из редких исключений — язык Scheme (диалект языка Lisp), описание которого содержит все необходимые сведения.
Любую рекурсивную функцию можно заменить циклом и стеком.
12 вопрос Массивы в языке Паскаль.
Поговорим о массивах в Паскале. Массив представляет собой последовательность элементов одного типа. Каждый массив характеризуется следующими особенностями:
каждый компонент, входящий в массив, можно обозначить явно и к нему устанавливается прямой доступ,
кол-во компонент, входящих в массив, может быть определено при его описании и в последующем не изменяется.
Чтобы обозначить компонент массива, используют имя переменной (переменной-массива), а также индексы, которые указывают необходимый элемент. Индекс может иметь только порядковый тип (за исключением longint). Часто используют интервальный тип (отрезок, диапазон). Приведем описание типа массива:
имя типа - правильный идентификатор;
список индексов - совокупность одного, либо нескольких индексных типов, которые отделяются друг от друга запятыми;
тип - всякий тип данных.
При работе с программой в Паскале массивы можно как вводить, так и выводить, лишь по одному элементу.
Одномерным массивом называется фиксированное число элементов одинакового типа.
Вот пример программы на одномерный массив: ввод и вывод.
Определение переменной в качестве массива возможно при ее описании без первоначального описания типа используемого массива:
В случае, когда массивы a и b описываются следующим образом:
то у переменных a и b будет разный тип. Чтобы обеспечить совместимость типов необходимо описать переменные через первоначальное описание типа. Если массивы имеют идентичные типы, то в исходном коде программы один массив можно присвоить другому. В соответствии с этим значения переменных одного массива присваиваются значениям элементов другого массива. Для массивов в Паскале не определены операции отношения. Сравнение двух массивов возможно только по каждому элементу.
Многомерные массивы - массивы, каждым элементом которых являются массивы.
Представим примеры описания двумерных массивов.
Пример 1.
Пример 2.
Глубина вложенности массивов представляется произвольной, вследствие этого размерность массива (число элементов, входящих в состав списка индексных типов) не ограничена, но не может превышать 65520 байт.
При работе с многомерными массивами мы организуем вложенные циклы. Например, для заполнения двумерного массива (матрицы) случайными числами пользуются следующими командами:
Чтобы красиво вывести на экран двумерный массив, используйте конструкцию вида: