63.Оператор goto. Использование goto. 85

64.Оператор exit(). Оператор atexit(). Сравнение циклов. 87

65.Массивы. Понятие массив. Массивы в С. Объявление массивов. Доступ к элементам массива. Размещение массивов в памяти. Проблема ввода. 90

66.Массивы. Инициализация массивов. Инициализация по умолчанию. Явная инициализация. Инициализация безразмерных массивов. 91

67.Массивы. Инициализация массивов и классы памяти. Вычисление размера массива (sizeof()). Выход индекса за пределы массива. 92

68. Массивы. Многомерные массивы. Инициализация двумерного массива. 93

69. Массивы. Массивы в качестве аргументов функций. Передача массивов функциям С. Передача массивов функциям C++. 95

70. Ввод и вывод строк. Строковые функции и символьные массивы. Динамическое выделение памяти. Функции gets(), puts(), fgets(), fputs() и sprintf(). Функции strcpy(), strcat(), strncmp() и strlen(). 99

71. Указатели. Определение переменных-указателей. Разыменование указателей. Объявление переменных-указателей. Простые операторы с указателями. Инициализация указателей. Неправильное использование операции определения адреса. 101

72. Указатели. Указатели на массивы. Указатели и многомерные массивы. Указатели на указатели. Указатели на строки. 101

73. Указатели. Арифметические операции с указателями. Арифметические операции с указателями и массивы. Операции с указателями. 105

74. Указатели. Применение к указателям оператора sizeof. Сложности при использовании операций ++ и --. Сравнение указателей. Переносимость указателей. Использование функции sizeof() с указателями в среде DOS. 109

75. Указатели. Указатели на функции. Динамическая память. Использование указателей типа void. 114

76. Указатели. Указатели и массивы. Функции, массивы и указатели. Использование указателей при работе с массивами. Строки (массивы типа char). 118

77. Указатели. Массивы указателей. Дополнительная информация об указателях на указатели. Массивы указателей на строки. 124

78. Указатели. Ссылочный тип в C++ (reference type). Адрес в качестве возвращаемого значения функции. Передача параметров по ссылке и по значению. Использование встроенного отладчика. Использование ссылочного типа. Использование указателей и ссылок с ключевым.. 126

79. Использование функций. Создание и использование простой функции. Прототипы функций. Вызов по значению и вызов по ссылке. Использование указателей для связи между функциями. 130

80. Использование функций. Рекурсия. Равноправность функций в языке Си. Параметры и аргументы функций. Формальные и фактические параметры. 139

81. Использование функций. Аргумент типа void. Символьные параметры. Целочисленные параметры. 155

82. Использование функций. Массивы в качестве параметров. Аргументы по умолчанию. Возвращение значения функцией: оператор return. 162

83. Использование функций. Типы функций. Функции типа void. Функции типа char. Функции типа int. 168

84. Использование функций. Аргументы функции main(). Строки. Целые числа. Числа с плавающей точкой. 174

85. Использование функций. Важные возможности C++. Встраивание (inline). Перегрузка (overloading). Многоточие (..). 183

86. Использование функций. Области видимости. Локальные и глобальные переменные Сложности в правилах области действия (scope rules). Неопределенные символы в программе на С. Использование переменной с файловой областью действия. 190

Глобальная переменная уступает локальной. 194

87. Использование функций. Приоритет переменных с файловой и локальной областями действия. Проблемы области действия в C++. Операция уточнения области действия в C++. 198

88. Использование функций. Математические функции Функции округления Компиляция программ, состоящих из двух или более функций. 205

 

 

1.Основные принципы алгоритмизации и программирования. Алгоритмы и программы. Данные. Понятие типа данных. Логические основы алгоритмизации.

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

Свойства алгоритмов.

Каждое указание алгоритма предписывает исполнителю выполнить одно конкретное законченное действие. Исполнитель не может перейти к выполнению следующей операции, не закончив полностью выполнения предыдущей. Предписания алгоритма надо выполнять последовательно одно за другим, в соответствии с указанным порядком их записи. Выполнение всех предписаний гарантирует правильное решение задачи.

достижению цели. Разделение выполнения решения задачи на отдельные операции (выполняемые исполнителем по определенным командам) — важное свойство алгоритмов, называемое дискретностью.

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

Еще одно важное требование, предъявляемое к алгоритмам, — результативность (или конечность) алгоритма. Оно означает, что исполнение алгоритма должно закончиться за конечное число шагов.

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

· записан на естественном языке (примеры записи алгоритма на естественном языке приведены при определении понятия алгоритма);

· изображен в виде блок-схемы;

· записан на алгоритмическом языке.

Базовые структуры алгоритмов — это определенный набор блоков и стандартных способов их соединения для выполнения типичных последовательностей действий. К основным структурам относятся следующие: линейные , разветвляющиеся , циклические .

Линейными называются алгоритмы, в которых действия осуществляются последовательно друг за другом.

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

Циклическим называется алгоритм, в котором некоторая часть операций (тело цикла — последовательность команд) выполняется многократно.

Данные — это любая информация, представленная в формализованном виде и пригодная для обработки алгоритмом.

Данные делятся на переменные и константы.

Переменные — это такие данные, значения которых могут изменяться в процессе выполнения алгоритма.

Константы — это данные, значения которых не меняются в процессе выполнения алгоритма.

Типы данных принято делить на простые (базовые) и структурированные.

К основным базовым типам относятся:

· целый (INTEGER) — определяет подмножество допустимых значений из множества целых чисел;

· вещественный (REAL,FLOAT) — определяет подмножество допустимых значений из множества вещественных чисел;

· логический (BOOLEAN) — множество допустимых значений — истина и ложь;

· символьный (CHAR) — цифры, буквы, знаки препинания и пр.

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

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

Логические основы алгоритмизации.

Важной составляющей алгоритмов являются логические условия. Вычисление значений логических условий происходит в соответствии с аксиомами алгебры логики. Алгебра логики используется при построении основных узлов ЭВМ — шифратора, дешифратора, сумматора. Высказывания принято обозначать большими буквами латинского алфавита: А, В, С ... X, Y и т.д. Если высказывание С истинно, то пишут С = 1 (С = t, true), а если оно ложно, то С = 0 (С = f, false).

Для образования новых высказываний наиболее часто используются логические операции, выражаемые словами «не», «и», «или».

Конъюнкция (логическое умножение). Соединение двух (или нескольких) высказываний в одно с помощью союза И (OR) называется операцией, логического умножения, или конъюнкцией.

Объединение двух (или нескольких) высказываний с помощью союза ИЛИ (OR) называется операцией логического сложения, или дизъюнкцией. Эту операцию обозначают знаками « | , v» или знаком сложения «+». Сложное высказывание A v В истинно, если истинно хотя бы одно из входящих в него высказываний.

Присоединение частицы НЕ (NOT) к данному высказыванию называется операцией отрицания (инверсии). Она обозначается Ă (или A)и читается не А. Если высказывание А истинно, то В ложно, и наоборот.

2.Основные принципы алгоритмизации и программирования. Языки программирования: эволюция, классификация. Системы программирования. Файлы данных.

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

Вычислительная машина (система), независимо от типа и поколения, состоит из двух основных типов устройств:

· центральное устройство (ЦУ), включающее в себя центральный процессор (ЦП) и оперативную память (ОП);

· периферийные (внешние) устройства (ВУ).


Классификация ЯП. Изучение ЯП часто начинают с их классификации. Определяющие факторы классификации обычно жестко не фиксируются..

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

Системы программирования классифицируются по признакам, приведенным в таблице.

Следует отметить, что:

· отличительной особенностью многоязыковых систем является то, что отдельные части (секции, модули или сегменты) программы могут быть подготовлены на различных языках и объединены во время или перед выполнением в единый модуль;

· в открытую систему можно ввести новый входной язык с транслятором, не требуя изменений в системе;

· в интерпретирующей системе осуществляется покомандная расшифровка и выполнение инструкций входного языка (в среде данной системы программирования); в компилирующей — подготовка результирующего модуля, который может выполняться на ЭВМ практически независимо от среды.

Файлы данных.

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

Могут быть рассмотрены следующие типы файлов:

по типу записей:

· файлы с записями фиксированной длины;

· файлы с записями переменной или неопределенной длины;

· файлы, образующие байтовый или битовый поток;

по способу выборки информации:

· файлы последовательного доступа;

· файлы прямого доступа.

Файлы последовательного доступа. Рассмотрим вначале файлы последовательного доступа. Для таких файлов характерны операции последовательного чтения и записи в конец файла

Файлы прямого доступа. Для файлов прямого доступа характерны операции чтения и записи по произвольному адресу.

3.Основные принципы алгоритмизации и программирования. Объектно-ориентированный подход к программированию. Разработка программного обеспечения (ПО).

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

Структурный подход базируется на двух основополагающих принципах:

· использование процедурного стиля программирования;

· последовательная декомпозиция алгоритма решения задачи сверху вниз.

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

1. Развитие языков и методов программирования не успевало за все более растущими потребностями в прикладных программах. Единственным реальным способом снизить временные затраты на разработку был метод многократного использования разработанного программного обеспечения, т.е. проектирование новой программной системы на базе разработанных и отлаженных ранее модулей, которые выступают в роли своеобразных «кирпичиков», ложащихся в Фундамент новой разработки.

2. Ускорение разработки программного обеспечения требовало решения проблемы упрощения их сопровождения и модификации.

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

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

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

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

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

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

Принцип функциональной избыточности. Этот принцип учитывает возможность проведения одной и той же работы (функции) различными средствами. Особенно важен учет этого принципа при разработке пользовательского интерфейса для выдачи данных из-за психологических различий в восприятии информации.

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

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

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

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

· принцип развития, который предусматривает в ПО возможность его наращивания и совершенствования компонентов и связей между ними;

· принцип комплексности, который заключается в том, что ПО обеспечивает связность обработки информации, как отдельных элементов, так и для всего объема данных в целом на всех стадиях обработки;

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

· принцип совместимости, который состоит в том, что язык, символы, коды и средства обеспечения ПО согласованы, обеспечивают совместное функционирование всех его подсистем и сохраняют открытой структуру системы в целом;

· принцип инвариантности, который предопределяет, что подсистемы и компоненты ПО инвариантны к обрабатываемой информации, т.е. являются универсальными или типовыми.

4.Пакет компиляторов Visual C++. Рекомендуемое оборудование. Минимальные требования к аппаратному и программному обеспечению. Рекомендуемое аппаратное и программное обеспечение.

Пакет Microsoft Visual C++ включает в себя средства для построения программ для Windows. Кроме этого, ваш код может быть адаптирован для таких аппаратных платформ, как Apple Macintosh и машин с RISC-процессорами. В пакете C++ имеются все необходимые заголовочные файлы, библиотеки, редакторы окон диалога и ресурсов, необходимые для создания действительно надежного приложения Windows. Microsoft также включила непосредственно в среду разработки редакторы ресурсов для пиктограмм, растровых изображений, курсоров, меню и окон диалога.