- •Понятие информации, виды и способы её представления
- •Задачи получения, передачи, преобразования и хранения информации
- •Язык как способ представления и передачи информации
- •Задачи, требующие автоматизированной обработки информации
- •Системы автоматизированной и автоматической обработки информации
- •Назначение и структура операционных систем
- •Исторические этапы автоматизации обработки информации
- •Последовательность обработки прикладных программ
- •Жизненный цикл программного обеспечения
- •Задачи системного программного обеспечения
- •Назначение и последовательность функционирования компиляторов
- •Требования к языкам программирования и их классификация
- •Понятие алгоритма, его основные свойства и способы записи
- •14. Временная и объёмная сложность алгоритма
- •15. Оценки временной сложности алгоритма
- •16. Структура рекурсивных алгоритмов
- •18. Методы доступа к функциям из библиотек и пакетов
- •22. Операции над данными стандартных типов и их старшинство
- •24. Манипуляторы потокового ввода и вывода
- •25. Ссылочные типы данных и их применение
- •27. Структурный тип данных
- •29. Многомерные массивы
- •30. Строки и массивы символов
- •31. Файлы и потоки
- •32. Методы открытия файлов для обмена информацией
- •33. Прямой доступ к отдельным записям в файлах
- •34. Программная реализация алгоритмов линейной структуры
- •35. Программная реализация разветвляющихся алгоритмов
- •36. Реализация циклических алгоритмов с заранее неизвестным количеством повторений
- •37. Реализация циклических алгоритмов с заранее известным количеством повторений
- •39. Предварительное описание функции
- •40. Локальные и глобальные величины программы
- •41. Способы обмена информацией между вызывающей и вызываемой функциями
- •42. Передача функций в качестве параметров функций
- •44. Динамические переменные. Выделение и освобождение памяти при выполнении программы
- •45. Построение списковых (последовательных) структур
- •46. Последовательные, циклические и рекурсивные алгоритмы
- •47. Базовая структура цифровой машины с хранимой программой
- •48. Архитектура и структура команд четырёхадресной машины
- •49. Архитектура и структура команд трёхадресной машины
- •50. Архитектура и структура команд двухадресной машины
- •51. Архитектура и структура команд одноадресной машины
- •52. Классификация устройств памяти систем обработки информации
- •53. Реализация устройств оперативной и долговременной памяти
- •54. Позиционные системы счисления и выполнение арифметических операций
- •55. Представление целых и действительных чисел в позиционных системах счисления
- •56. Связь между системами счисления с основаниями вида 2k
- •57. Перевод целых и действительных чисел из одной позиционной системы в другую
- •58. Прямой, обратный и дополнительный коды
- •59. Нормализованное представление чисел, переполнение, модифицирванные коды
- •60. Алгоритмы сложения и вычитания в дополнительных и обратных кодах
- •61. Алгоритмы умножения в дополнительных и обратных кодах
- •62. Структуры рекурсивных алгоритмов
- •63. Применение рекурсивных алгоритмов
- •64. Оценка сложности рекурсивных алгоритмов
44. Динамические переменные. Выделение и освобождение памяти при выполнении программы
Выделение памяти осуществляется с помощью оператора new и имеет вид: тип_данных *имя_указателя = new тип_данных;, например int *a = new int;. После удачного выполнения такой операции, в оперативной памяти компьютера происходит выделение диапазона ячеек, необходимого для хранения переменной типа int.
Логично предположить, что для разных типов данных выделяется разное количество памяти. Следует быть особенно осторожным при работе с памятью, потому что именно ошибки программы, вызванные утечкой памяти, являются одними из самых трудно находимых.
Инициализация значения, находящегося по адресу указателя выполняется схожим образом, только в конце ставятся круглые скобки с нужным значением: тип данных *имя_указателя = new тип_данных(значение). Например: int *b = new int(5).
45. Построение списковых (последовательных) структур
Списковая организация данных подразумевает размещение элементов списка в произвольных свободных участках памяти. При построении списковых структур с каждым компонентом списка связывается набор вспомогательных полей, обеспечивающий связь отдельных компонентов списка между собой. Так, для линейного односвязного списка компоненты связаны между собой отношением «предыдущий-следующий» за счет хранения в компоненте адреса следующего компонента.
То есть, мы просто делаем вот такие структурочки (сам писал):
#include "stdafx.h"
#include <iostream>
using namespace std;
struct Something {
int someData;
Something* next;
};
int main()
{
Something* last = new Something();
Something* first = last;
for (int i = 0; i < 10; i++) {
last->someData = i;
last->next = new Something();
last = last->next;
}
while (first->next != 0) {
cout << first->someData << endl;
first = first->next;
}
system("pause > nul");
return 0;
}
Выведет N чисел от 0 до N-1.
46. Последовательные, циклические и рекурсивные алгоритмы
Циклический алгоритм - это такой алгоритм, действия которого повторяются, т.е. выполняются в цикле. Существует 3 типа циклических структур:
Цикл с предусловием;
Цикл с послеусловием;
Цикл с параметром;
Иначе данные структуры называют циклами типа «пока», «до», «для».
Также см. пункты 36, 37. А про рекурсию см. 16.
Можно ещё примеров привести: последовательные алгоритмы – это просто, например, алгоритм определения четности числа. Циклический - сортировка. Рекурсивный – классический пример нахождения чисел Фибоначчи.
47. Базовая структура цифровой машины с хранимой программой
В основе архитектуры современных вычислительных машин лежит представление алгоритма реше-
ния задачи в виде программы. Программа для ВМ состоит из команд, необходимых для выполнения функций, задач. Причем эти команды соответствуют правилам конкретного языка программирования.
ВМ, где определенным образом закодированные команды программы хранятся в памяти, известна под названием вычислительной машины с хранимой в памяти программой. Идея принадлежит создателям вычислителя ENIAC Эккерту, Мочли и фон Нейману. Еще до завершения работ над ENIAC они приступили к новому проекту — EDVAC, главной особенностью которого стала концепция хранимой в памяти программы, на долгие годы определившая базовые принципы построения последующих поколений вычислительных машин. Относительно авторства существует несколько версий, но поскольку в законченном виде идея впервые была изложена в 1945 году в статье фон Неймана, именно его фамилия фигурируеттв обозначении архитектуры подобных машин, составляющих подавляющую частьтсовременного парка ВМ и ВС. Сущность фон-неймановской концепции вычислительной машины можно свести к четырем принципам:
двоичного кодирования (согласно этому принципу, вся информация, как данные, так и команды, кодируется двоичными цифрами 0 и 1);
программного управления (все вычисления, предусмотренные алгоритмом решения задачи, должны быть представлены в виде программы, состоящей из последовательности управляющих слов — команд);
однородности памяти (команды и данные хранятся в одной и той же памяти и внешне в памяти неразличимы. распознать их можно только по способу использования; это позволяет производить над командами те же операции, что и над числами, и, соответственно, открывает ряд возможностей.);
адресуемости памяти (структурно основная память состоит из пронумерованных ячеек, причем процессору в произвольный момент доступна любая ячейка).
