- •Оглавление
- •Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические
- •1. Понятия алгоритма: рекурсивные функции системы текстовых замен
- •2. Системы счисления, переводы чисел из одной позиционной системы счисления в другую
- •4. Понятие подпрограммы, функции, не возвращающие значения, описание и использование
- •5. Передача параметров в подпрограмму, параметры входные и выходные, параметры, передаваемые по значению и по адресу
- •6. Использование подпрограмм, параметры формальные, локальные, глобальные, обращения к подпрограммам, фактические параметры
- •8. Статистические и динамические переменные, динамическая память, работа с динамическими переменными
- •10. Использование динамических переменных для представления и работы со стеком
- •Int pop(tstack *&sp) { // удаление элемента из стека
- •11. Очередь, реализация очереди массивом
- •Добавить элемент в очередь:
- •12. Очередь, представление и реализация основных операций с помощью динамических переменных
- •14. Деревья, основные операции над деревьями, представление дерева массивом Деревья.
- •2. Обход бинарного дерева:
- •If(!t) { //такого элемента нет, включаем его
- •Void Del_node (int X, tnode *&t) { //удаление из дерева поиска
- •Матрица инциденции
- •Матрица смежности
- •Список инцидентности 4) список списков
- •18. Представление графа списком инцидентности, алгоритм обхода графа в глубину
- •2) Обход графа в ширину.
- •If (not b) then //добавляем новую вершину в стек
- •19. Представление графа списком списка, алгоритм обхода графа в ширину
- •21. Основные понятия ооп: абстракция, инкапсуляция, полиморфизм
- •22. Понятие объекта, его состояние и поведение, классы, определение класса и объявление класса
- •23. Статические, дружественные и виртуальные поля и методы, особенности их использования
- •Void DisplayMoney(); // вывод на экран
- •Понятие области видимости: общие, личные, защищённые поля и методы
- •Указатель this и перегрузка методов
- •Использование классов, различные способы инициализации
- •Int CompareMoney(const Tmoney &b); //сравнение сумм
- •Void ReadMoney(); void DisplayMoney(); // ввод и вывод
- •Использование классов, работа с массивами и указателями на объекты
- •Наследование, пример использования наследования
- •Конструкторы и деструкторы, их назначение и использование
- •Архитектура пк, основные функциональные устройства и их назначение
- •Мп с точки зрения программиста, регистры общего назначения
- •Оперативная память, понятие исполняемого и физического адреса, сегментные регистры
- •Регистр флажков, его назначение и использование
- •Форматы данных и форматы команд
2. Системы счисления, переводы чисел из одной позиционной системы счисления в другую
Система счисления (СС) – это совокупность правил записи и наименования чисел. Существуют позиционные и непозиционные СС.
СС называется позиционной (непозиционной), если значение цифры числа зависит (не зависит) от местоположения цифры в числе.
Непозиционная СС, например, римская:
I – 1, V – 5, X – 10, L – 50, C – 100, D – 500, M – 1000 XXVII, XLIV
Общепризнанной ПСС является 10-ая СС. Она использует для записи чисел цифры 0, 1,
2, 3, 4, 5, 6, 7, 8, 9.
727,7 – это сокращенная запись 7 *102+2*101 +7*100 +7*10-1
В позиционной CC число разбивается на разряды слева направо, так что единица старшего разряда в определенное число раз больше единицы соседнего младшего разряда.
Основанием позиционной СС называется количество единиц какого-либо разряда, объединяемых в единицу соседнего старшего разряда.
Основание СС в любой ПСС записывается как 10 Примеры ПСС: 60ричная, 12-ричная, 5-ричная.
В ПСС с основанием Р>1 любое число может быть записано в двух формах:
1) сокращенной и 2) в виде многочлена.
Х = an an-1 an-2 an-3 … a1 a0, a-1 a-2 … a-m
Значением числа является сумма значений его цифр.
X = an*pn+an-1*pn-1 +an-2*pn-2+…+a1*p1+a0*p0+a-1*p-1+a-2*p-2+…+a-m*p-m
Здесь p – основание СС, 0 <= ai <=P-1 – называют базисными цифрами данной СС. Количество базисных цифр равно основанию СС. В информатике часто используются 2ая, 8ая и 16ая СС.
В двоичной СС наименьшее количество базисных цифр и для представления их в компьютере используются элементы, имеющие два устойчивых состояния. Кроме того, в 2ой СС наиболее простой оказывается арифметика:
Сложение Умножение
+ 0 = 0 0 * 0 = 0
+ 1 = 1 1 * 0 = 0
+ 0 = 1 0 * 1 = 0
+ 1 = 10 1 * 1 = 1
Чтобы перевести число из «чужой» СС в «свою», необходимо:
представить данное число в виде многочлена;
базисные цифры и основание Q-ичной СС записать с помощью P-ичных чисел;
выполнить арифметические действия.
Примеры:
(125,2)8 10 = 1*102 +2*101 +5*100 + 2*10-1 = 1*82 +2*81 +5*80 +2*8-1 = 64 + 16 + 5 +0,25 = (85,25)10
Переводы чисел из одной ПСС в другую. Схема Горнера:
(101,01)2 10 = 1*102 +0*101 +1*100 + 0*10-1 +1*10-2 = 1*22 +0*21 +1*20 +0*2-1 +1*2-2 = 4 + 1 + 0,25 = (5,25)10 ;
(AB1)16 10 = A*102 +B*101 +1*100 = 10*162 + 11*161 + 1* 160 = 2560 + 176 + 1=
= (2737)10.
Для перевода целых чисел из любой системы в 10ую удобно использовать схему Горнера, согласно которой:
an*pn+an-1*pn-1+an-2*pn-2+…+a1*p1+a0*p0 = = ((…(an*P + an-1)*P + an-2)*P +…+a1)*P + a0 Например:
(1321)8 10 = ((1*8 + 3)*8 + 2)*8 + 1 = (721)10
(1234)8 10 = ((1*8 + 2)*8 + 3)*8 + 4 = (668)10
Смешанные СС
Смешанная Q-P-ичная СС - это СС, в которой каждая цифра P-ичного числа записывается с помощью n Q-ичных цифр, где n - это количество Q-ичных цифр, достаточных для хранения старшей Р-ичной цифры.
Например, число 2410 в 2-10-й СС равно 0010 0100 2-10.
Переводы чисел для СС, связанных соотношением P = Qn.
Перевод из P в Q. Чтобы перевести число из СС с основанием P в СС с основанием Q, достаточно каждую цифру данного числа записать с помощью n Q-ичных разрядов, используя таблицу представления базисных цифр Переводы чисел для СС, связанных соотношением P = Qn. Числа с фиксированной и плавающей точкой:
Перевод из Q в P. Чтобы перевести число из СС с основанием Q в СС с основанием P, достаточно данное число разбить влево и вправо от запятой на группы по n разрядов, неполные крайние группы можно дополнить нулями. Затем каждую такую группу записать с помощью одной P-ичной цифры.
Примеры:
(1BF9,51)16 2 8 = (0001 1011 1111 1001, 0101 0001)2 = (15771,242)8
(7541,23)8 2 16 = (111 101 100 001,010 011)2 = (F61,4C)16 Числа с фиксированной и плавающей точкой. X = знак (an an-1 an-2…a0 a-1 a-2…a-m)p – это запись числа с фиксированной точкой.
Записываем в виде многочлена:
Х = знак (an*Pn + an-1*Pn-1 + an-2*Pn-2 +…+a0*P0 + a-1*P-1 + a-2*P-2 +…+ a-m*P-m)P
Вынесем за скобку в качестве множителя Pk и свернем, получим число в форме с плавающей точкой.
Числа с фиксированной и плавающей точкой. Нормализованные числа.
Х = знак (an*Pn-k + an-1*Pn-1-k + an-2*Pn-2-k +…+ a0*P-k + ak-1*P-1 + ak-2*P-2 +…+ a-m*P-m-k)*Pk
X = знак (an an-1 an-2…ak, ak-1 ak-2…a-m)*Pk или
X = знак |M| * Рзнак |n|
Число с плавающей точкой называется нормализованным числом, если в записи 1) k = n+1 и an <> 0, или в записи 2) мантисса M удовлетворяет условию 1/P <= |M| < 1.
Например: 3.1415926
0.0031415926*103
314.15926*10-2
0.31415926
Арифметические действия над числами с плавающей точкой.
M1*2p1 + M2 *2p2 = M*2p, если P1 > P2, то вычисляется P1 - P2, M2 сдвигается на (P1 - P2) разрядов вправо и мантиссы складываются, результат нормализуется, так что порядок суммы чисел P = P1 + P/, где P/ учет нормализации мантиссы результата суммирования.
Вычитание сводится к сложению
Умножение: M = M1*M2 и P = P1+P2+P/
Деление: M = M1/M2 и P = P1–P2+P/
Нетрадиционные позиционные системы счисления ПСС делят на традиционные, нетрадиционные и смешанные. Все ПСС одинаковы в том смысле, что:
1) Арифметические операции выполняются по одним и тем же правилам; 2) Справедливы одни и те же законы арифметики ..
3) Правила выполнения арифметических действий опираются на таблицы сложения и умножения в P-ичной СС.
Для традиционных ПСС вводится понятие базис и основание СС так, что базис – это последовательность чисел, каждое из которых задает значение цифры по ее месту в записи, т.е.
задает вес каждого разряда. Тогда, базис 10-ой СС – это 1, 101, 102, 103, 104…10n, а в общем виде:
…p-2, p-1, 1, p, p2 p3…pn
Знаменатель P геометрической прогрессии, члены которой образуют базис традиционной СС, является основанием СС.
Нетрадиционные позиционные системы счисления. Факториальная ПСС.
В традиционных ПСС вес единиц разрядов числа растет справа налево равномерно в P раз, где P – основание СС. В нетрадиционных ПСС вес единиц разрядов в числе также растет, но не равномерно, а по какому-либо другому закону. Например, число, записанное в факториальной ПСС имеет значение в 10-ой СС, равное сумме факториалов n первых натуральных чисел, умноженных на цифры факториальной записи числа.
3221ф = 3*4! + 2*3! + 2*2! + 1*1! = 8910
40301ф = 4*5! + 3*3! + 1*1! = 49910
Чтобы перевести число из 10-ой СС в факториальную, необходимо разделить данное число на 2, затем целую часть разделить на 3, затем на 4 и т. д. пока целая часть не окажется равной нулю.
3. Понятие подпрограммы, функции, возвращающие значения в С/С++, описание и использование
Подпрограмма – отдельная структурная единица, имеющая собственное имя и реализующая вспомогательный алгоритм, который неоднократно используется в основной программе или другой подпрограмме с различными значениями некоторых величин, называемых параметрами.
Для того чтобы использовать подпрограмму, ее необходимо описать, а затем в нужном месте основной программы или другой подпрограммы обратиться к ней с конкретными значениями параметров.
Описать подпрограмму – значит выбрать для нее имя, определить величины, от которых будет зависеть вычисление подпрограммы в различных точках обращения и записать последовательность операторов, реализующих вспомогательный алгоритм.
Достоинства использования подпрограмм:
Позволяет избегать дублирования одинаковых частей программы, делая ее короче, но увеличивая время ее выполнения (за счет передачи параметров, обращения к подпрограмме, возврату из нее);
Делает структуру программы более четкой и понятной (основная программа записана более кратко, использование подпрограммы более эффективно с точки зрения разработки, отладки, модификации программы). Отдельные подпрограммы, модули, можно хранить в отдельных файлах, т.е. отдельно друг от друга.
Позволяет расширить язык программирования, добавив в него новые функции, операции и операторы-процедуры. Для любого языка программирования создана большая библиотека стандартных подпрограмм и программист, разрабатывая сложный программный продукт, создает, по сути, собственную библиотеку подпрограмм, которые затем можно использовать для разработки других проектов. Позволяет повторно использовать ранее разработанные программы.
В С/С++ существует один тип подпрограмм – функции. Но функции здесь реализуются так, что они могут выдавать один результат и тогда обращением к ним является указатель функции (имя функции, за которым в () через запятую фактические параметры). В этом случае указатель функции – операнд в выражении или элемент списка вывода.
