
- •Процедуры, функции; записи; файлы. Программирование рекурсивных алгоритмов.
- •Программирование рекурсивных алгоритмов
- •0 00011010 - Положительное число 1 00011010 – отрицательное число
- •Кодирование текстовой информации
- •Кодирование графической информации
- •Кодирование звуковой информации
- •Языки программирования высокого уровня
- •Основные преимущества алгоритмических языков перед машинными таковы:
Программирование рекурсивных алгоритмов
Рекурсия — это такой способ организации вспомогательного алгоритма (подпрограммы), при котором эта подпрограмма (процедура или функция) в ходе выполнения ее операторов обращается сама к себе. Вообще, рекурсивным называется любой объект, который частично определяется через себя.
Пример рекурсивной подпрограммы (определение факториала).
Function Factorial (N: Integer): Integer; Begin if (N=0) or (N = 1) Then Factorial := 1 Else Factorial := N*Factorial(N -1) End; Здесь Factorial(N) определяется через значение Factorial(N-1), которое определяется через Factorial(N-2), и т.д. до сведения к значению Factorial(0), которое определено явно и равно 1. Любое рекурсивное описание должно содержать явное определение для некоторых значений аргумента (или аргументов), так как иначе процесс сведения оказался бы бесконечным. Таким образом, при рекурсивном описании необходимо наличие базовой части описания, которая обеспечивала бы завершение рекурсивных вызовов функции (процедуры).
Различают прямую и косвенную рекурсию. При прямой некоторая подпрограмма обращается непосредственно сама к себе. При косвенной – обращается к др. подпрограмме, которая вызывает первую подпрограмму. Любая рекурсивная подпрограмма обычно содержит 2 ветви: рекурсивная и нерекурсивная. Рекурсивная ветвь содержит вызов подпрограммы самой себя (на прямую или косвенно). Нерекурсивная ветвь содержит вычисления результата при некоторых элементарных значениях входных параметров. Принцип работы рекурсивной подпрограммы LIFO (Lost in - Firs Out) – последний зашел - первый вышел. Любой рекурсивный алгоритм может быть заменен нерекурсивным аналогом. В общем случае, сказать какой будет работать быстрее нельзя, однако, в большинстве случаев рекурсивный работает медленнее, т.к. использует дополнительные операции со стеком. Стек - структура данных, представляющая из себя список элементов организованных по принципу LIFO. Рекомендуется использовать рекурсивный алгоритм только в случае отсутствия явного нерекурсивного алгоритма.
Кодирование числовой, текстовой, графической и др. информации. Языки программирования высокого уровня.
Кодирование – преобразование входной информации в форму, воспринимаемую компьютером, т.е. двоичный код. Декодирование – преобразование данных из двоичного кода в форму, понятную человеку.
Все виды информации в компьютере представлены в двоичном коде, т.е. в виде нулей и единиц. Минимальное количество информации, которое можно представить с помощью одного двоичного символа – бит. Любая информация (числовая, текстовая, графическая, звуковая и др.) в памяти компьютера представляется в виде чисел в двоичной системе счисления (почти всегда).
Кодирование числовой информации
Система счисления – совокупность приемов и правил записи чисел с помощью определенного набора символов.
Все системы счисления делятся на две большие группы: позиционные и непозиционные.
В непозиционной системе значение цифры не зависит от ее местоположения в числе, а в позиционной зависит. Пример непозиционной – римские цифры, пример позиционной – арабские цифры. Количество различных символов, используемых для изображения числа в позиционных системах счисления, называется основанием системы счисления.
Обычно ячейка памяти равна 1 байту, который в свою очередь равен 8 битам. Т.е. в одной ячейке памяти можно сохранить восьмиразрядное число в двоичной системе счисления. Очевидно, что минимальным таким числом будет 00000000, а максимальным 11111111.
Если представить число 11111111 в десятичной системе счисления, то мы получим число 255. Т.е в одном байте можно сохранять целые положительные числа от 0 до 255 включительно (всего 256 значений, что соответствует 28).
Представление положительных и отрицательных чисел
Прямой код – это представление числа в двоичной системе счисления, при котором первый (старший) разряд отводится под знак числа. Если число положительное, то в левый разряд записывается 0; если число отрицательное, то в левый разряд записывается 1. Например: