ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.06.2021
Просмотров: 1668
Скачиваний: 3

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ МЕНЕДЖМЕНТА»
М.В. КОНОНОВА
АЛГОРИТМИЗАЦИЯ И
ПРОГРАММИРОВНИЯ
Конспект лекции
Оренбург
2014

Содержание
1.Алгоритм и программа .................................................................... 3
2. Базовые средства языка СИ++ ....................................................... 8
3. Ввод и вывод данных .................................................................... 17
4. Основные операторы языка Си++» ............................................. 19
6.2.2 Формирование псевдо динамических массивов ................... 32
9. Указатели и массивы ................................................................... 44
10. Символьная информация и строки ............................................ 47
11. Функции в Си++ .......................................................................... 51
13. Подставляемые (inline) функции .............................................. 61
14. Функции с переменным числом параметров ........................... 62
15. Перегрузка функций ................................................................... 64
16. Шаблоны функций ...................................................................... 66
17. Указатель на функцию ................................................................ 68
18. Ссылки на функцию .................................................................... 70
19. Типы данных, определяемые пользователем ........................... 71
20. Битовые поля ............................................................................... 74
21. Объединения ................................................................................ 75
22. Динамические структуры данных ............................................. 76
23. Ввод-вывод в С ............................................................................ 83

3
Введение
В первом семестре рассматриваются основные конструкции языка Си и базовая
технология программирования (структурное программирование).
Структурное программирование – это технология создания программ,
позволяющая путем соблюдения определенных правил уменьшить время разработки и
количество ошибок, а также облегчить возможность модификации программы.
1. Алгоритм и программа
Алгоритм – точное предписание, определяющий вычислительный процесс,
идущий от изменяемых начальных данных к конечному результату, т. е. это рецепт
достижения какой-либо цели.
Совокупность средств и правил для представления алгоритма в виде пригодном
для выполнения вычислительной машиной называется языком программирования,
алгоритм, записанный на этом языке, называется программой.
Сначала всегда разрабатывается алгоритм действий, а потом он записывается на
одном из языков программирования. Текст программы обрабатывается специальными
служебными программами – трансляторами. Языки программирования – это
искусственные языки. От естественных языков они отличаются ограниченным числом
«слов» и очень строгими правилами записи команд (операторов). Совокупность этих
требований образует синтаксис языка программирования, а смысл каждой конструкции
– его семантику.
1.2.
Свойства алгоритма
1.
Массовость: алгоритм должен применяться не к одной задаче, а к целому
классу подобных задач (алгоритм для решения квадратного уравнения должен
решать не одно уравнение, а все квадратные уравнения).
2.
Результативность: алгоритм должен приводить к получению результата за
конкретное число шагов ( при делении 1 на 3 получается периодическая дробь
0,3333(3), для достижения конечного результата надо оговорить точность
получения этой дроби, например, до 4 знака после запятой).
3.
Определенность (детерминированность) – каждое действие алгоритма
должно быть понятно его исполнителю (инструкция к бытовому прибору на
японском языке для человека не владеющего японским языком не является
алгоритмом, т .к не обладает свойством детерминированности).
4.
Дискретность – процесс должен быть описан с помощью неделимых
операций, выполняемых на каждом шаге (т. е. шаги нельзя разделить на более
мелкие шаги).
Алгоритмы можно представить в следующих формах:
1)
словесное описание алгоритма.
2)
графическое описание алгоритма.
3)
с помощью алгоритмического языка программирования
1.2. Компиляторы и интерпретаторы
С помощью языка программирования создается текст, описывающий ранее
составленный алгоритм. Чтобы получить работающую программу, надо этот текст
перевести в последовательность команд процессора, что выполняется при помощи
специальных программ, которые называются трансляторами. Трансляторы бывают
двух видов: компиляторы и интерпретаторы. Компилятор транслирует текст исходного
данные
результат
алгоритм

4
модуля в машинный код, который называется объектным модулем за один
непрерывный процесс. При этом сначала он просматривает исходный текст программы
в поисках синтаксических ошибок. Интерпретатор выполняет исходный модуль
программы в режиме оператор за оператором, по ходу работы, переводя каждый
оператор на машинный язык.
1.3.
Языки программирования
Разные типы процессоров имеют разный набор команд. Если язык
программирования ориентирован на конкретный тип процессора и учитывает его
особенности, то он называется языком программирования низкого уровня. Языком
самого низкого уровня является язык ассемблера, который просто представляет
каждую команду машинного кода в виде специальных символьных обозначений,
которые называются мнемониками. С помощью языков низкого уровня создаются
очень эффективные и компактные программы, т .к разработчик получает доступ ко
всем возможностям процессора. Т .к. наборы инструкций для разных моделей
процессоров тоже разные, то каждой модели процессора соответствует свой язык
ассемблера, и написанная на нем программа может быть использована только в этой
среде. Подобные языки применяют для написания небольших системных приложений,
драйверов устройств и т. п..
Языки программирования высокого уровня не учитывают особенности
конкретных компьютерных архитектур, поэтому создаваемые программы на уровне
исходных текстов легко переносятся на другие платформы, если для них созданы
соответствующие трансляторы. Разработка программ на языках высокого уровня
гораздо проще, чем на машинных языках.
Языками высокого уровня являются:
1.
Фортран – первый компилируемый язык, созданный в 50-е годы 20 века.
В нем были реализован ряд важнейших понятий программирования. Для этого
языка было создано огромное количество библиотек, начиная от статистических
комплексов и заканчивая управлением спутниками, поэтому он продолжает
использоваться во многих организациях.
2.
Кобол – компилируемый язык для экономических расчетов и решения
бизнес-задач, разработанный в начале 60-х годов. В Коболе были реализованы
очень мощные средства работы с большими объемами данных, хранящихся на
внешних носителях.
3.
Паскаль – создан в конце 70-х годов швейцарским математиком
Никлаусом Виртом специально для обучению программированию. Он позволяет
выработать алгоритмическое мышление, строить короткую, хорошо читаемую
программу, демонстрировать основные приемы алгоритмизации, он также хорошо
подходит для реализации крупных проектов.
4.
Бейсик – создавался в 60-х годах также для обучения
программированию. Для него имеются и компиляторы и интерпретаторы, является
одним из самых популярных языков программирования.
5.
Си – был создан в 70- е годы первоначально не рассматривался как
массовый язык программирования. Он планировался для замены ассемблера, чтобы
иметь возможность создавать такие же эффективные и короткие программы, но не
зависеть от конкретного процессора. Он во многом похож на Паскаль и имеет
дополнительные возможности для работы с памятью. На нем написано много
прикладных и системных программ, а также операционная система Unix.
6.
Си++ - объектно-ориентированное расширение языка Си, созданное
Бьярном Страуструпом в 1980г.

5
7.
Java – язык, который был создан компанией Sun в начале 90-х годов на
основе Си++. Он призван упростить разработку приложений на СИ++ путем
исключения из него низкоуровневых возможностей. Главная особенность языка –
это то, что он компилируется не в машинный код, а в платформно-независимый
байт-код (каждая команда занимает один байт). Этот код может выполняться с
помощью интерпретатора – виртуальной Java-машины (JVM).
2.Структура программы на Си++
Программа на языке Си имеет следующую структуру:
#директивы препроцессора
. . . . . . . . .
#директивы препроцессора
функция а ( )
операторы
функция в ( )
операторы
void main ( ) //функция, с которой начинается выполнение программы
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Директивы препроцессора - управляют преобразованием текста
программы до ее компиляции. Исходная программа, подготовленная на СИ в виде
текстового файла, проходит 3 этапа обработки:
1)
препроцессорное преобразование текста ;
2)
компиляция;
3)
компоновка (редактирование связей или сборка).
После этих трех этапов формируется исполняемый код программы.
Задача
препроцессора - преобразование текста программы до ее компиляции. Правила
препроцессорной обработки определяет программист с помощью директив
препроцессора. Директива начинается с #. Например,
Исходный
текст (cpp)
Включаемые
файлы (h)
препроцессор
Полный текст
программы
компилятор
Объектный
код (obj)
Стандартные
библиотеки (lib)
Компоновщик
Исполняемый
код (exe)