
- •Введение
- •1Основы программирования Тема 1.1. Введение в программирование
- •1.1.1Основные понятия программирования
- •1.1.2Первая программа
- •1.1.3Комментарии
- •1.1.4Переменные и типы данных
- •1.1.5Ключевые слова и идентификаторы
- •1.1.6Вывод информации на экран
- •1.1.7Ввод информации с клавиатуры
- •1.1.8Вывод русских букв
- •1.1.9Простые вычисления
- •1.1.10Контрольные вопросы
- •Тема 1.2. Математические вычисления
- •1.2.1Операции и выражения
- •1.2.2Оператор присваивания
- •1.2.3Приоритет операций
- •1.2.4Смешанные выражения и преобразование типов
- •1.2.5Явное преобразование типов
- •1.2.6Функции и их аргументы
- •1.2.7Математические функции
- •1.2.8Контрольные вопросы
- •Тема 1.3. Условный оператор if-else
- •1.3.1Примеры использования условных операторов
- •1.3.2Конструкция if-else
- •1.3.3Оператор ?: и сокращенная запись для if-else
- •1.3.4Логические операторы и выражения
- •1.3.5Использование оператора if без ветки else
- •1.3.6Лесенка if-else-if
- •1.3.7Контрольные вопросы
- •Тема 1.4. Условный оператор switch-case
- •1.4.1Синтаксис оператора switch-case
- •1.4.2Исключение операторов break из switch
- •1.4.3Реализация простого консольного меню
- •1.4.4Контрольные вопросы
- •Тема 1.5. Символы и строки
- •1.5.1Объявление и вывод строк
- •1.5.2Кавычки и апострофы
- •1.5.3Ввод русских символов
- •1.5.4Контрольные вопросы
- •2Циклы и массивы Тема 2.1. Цикл на базе if и goto
- •2.1.1Синтаксис оператора goto
- •2.1.2Использование оператора goto при реализации меню
- •2.1.3Оператор goto и игра «Угадай число!»
- •2.1.4Реализация цикла на базе if и goto
- •2.1.5Контрольные вопросы
- •Тема 2.2. Циклы while и do-while
- •2.2.1Назначение циклов и базовые понятия
- •2.2.2Цикл while
- •2.2.3Условие, вложенное в цикл
- •2.2.4Обработка данных в цикле
- •2.2.5Неизвестное число итераций
- •2.2.6Цикл do-while
- •2.2.7Перевод числа в другую систему счисления
- •2.2.8Бесконечный цикл while
- •2.2.9Контрольные вопросы
- •Тема 2.3. Цикл for
- •2.3.1Предпосылки к созданию цикла for
- •2.3.2Синтаксис цикла for
- •2.3.3Вариации цикла for
- •2.3.4Оператор break
- •2.3.5Бесконечный цикл for
- •2.3.6Контрольные вопросы
- •Тема 2.4. Массивы
- •2.4.1Зачем нужны массивы?
- •2.4.2Объявление массива
- •2.4.3Работа с массивом заранее неизвестного размера
- •2.4.4Сравнение и присваивание массивов
- •2.4.5Вычисление суммы элементов массива
- •2.4.6Подсчет количества элементов с нужным свойством
- •2.4.7Поиск элемента в массиве
- •2.4.8Нахождение максимального элемента в массиве
- •2.4.9Контрольные вопросы
- •Тема 2.5. Обработка строк
- •2.5.1Подготовка к работе
- •2.5.2Поиск символа в строке
- •2.5.3Вывод символов с определенным свойством
- •2.5.4Контрольные вопросы
- •3Процедуры и функции Тема 3.1. Процедуры
- •3.1.1Подпрограммы, функции, процедуры
- •3.1.2Создание и вызов процедуры
- •3.1.3Пример создания процедуры
- •3.1.4Пример вызова процедуры
- •3.1.5Распространенная ошибка
- •3.1.6Процедуры с аргументами
- •3.1.7Название процедуры
- •3.1.8Формальные и фактические аргументы
- •3.1.9Тело процедуры
- •3.1.10Создание нескольких процедур
- •3.1.11Создание заголовочного файла
- •3.1.12Контрольные вопросы
- •Тема 3.2. Функции
- •3.2.1Возвращаемое значение
- •3.2.2Определение и вызов функции
- •3.2.3Название функции
- •3.2.4Формальные и фактические аргументы
- •3.2.5Тело функции
- •3.2.6Оператор return
- •3.2.7Глобальные и локальные переменные
- •3.2.8Прототипы функций
- •3.2.9Контрольные вопросы
- •Тема 3.3. Рекурсивные функции
- •3.3.1Понятие рекурсивной функции
- •3.3.2Рекурсивные процедуры
- •3.3.3Рекурсивные функции, принимающие более одного аргумента
- •3.3.4Контрольные вопросы
- •Тема 3.4. Логические функции
- •3.4.1Примеры громоздких логических конструкций
- •3.4.2Создание и вызов логической функции
- •3.4.3Сравнивать с true не обязательно
- •3.4.4Вызов логических функций внутри циклов
- •3.4.5Контрольные вопросы
- •Тема 3.5. Прикладной программный интерфейс (api)
- •3.5.1 Простой вложенный цикл
- •3.5.2Вынесение вложенного цикла в функцию
- •3.5.3Зависимость вложенных циклов
- •3.5.4 Два цикла, вложенные в третий
- •3.5.5Понятие api
- •3.5.6Вложенные циклы и вывод цифр
- •3.5.7Контрольные вопросы
- •4Простые структуры данных Тема 4.1. Матрицы
- •4.1.1Основные понятия
- •4.1.2Объявление матрицы
- •4.1.3Инициализация матрицы
- •4.1.4Вывод матрицы на экран
- •4.1.5Вывод ровных столбцов матрицы
- •4.1.6Заполнение матрицы в автоматическом режиме
- •4.1.7Работа с матрицей заранее не известного размера
- •4.1.8Заполнение матрицы случайными числами
- •4.1.9Заполнение матрицы с условием
- •4.1.10Обработка матрицы
- •4.1.11Обработка строк и столбцов
- •4.1.12Комбинированная обработка матрицы
- •4.1.13Контрольные вопросы
- •Тема 4.2. Массивы строк
- •4.2.1Объявление и инициализация массива строк
- •4.2.2Присвоение элементов массива строк
- •4.2.3Вывод и ввод массива строк
- •4.2.4Обращение к отдельным символам массива строк
- •4.2.5Сортировка массива строк
- •4.2.6Пример работы с массивом строк
- •4.2.7Контрольные вопросы
- •Тема 4.3. Файлы
- •4.3.1Запись информации в файл
- •4.3.2Чтение информации из файла
- •4.3.3Распространенная ошибка
- •4.3.4Контрольные вопросы
- •Тема 4.4. Структуры
- •4.4.1Причины использования структур
- •4.4.2Объявление структуры
- •4.4.3Обращение к полям структуры и оператор «точка»
- •4.4.4Ввод и вывод содержимого структуры
- •4.4.5Вложенные структуры
- •4.4.6Массив структур
- •4.4.7Вывод массива структур в виде таблицы
- •4.4.8Сортировка массива структур
- •4.4.9Передача структур в качестве аргументов функций
- •4.4.10Возврат структуры в качестве значения функции
- •4.4.11Контрольные вопросы
- •Тема 4.5. Реализация динамических структур данных на основе массива
- •4.5.1Пометка элементов
- •4.5.2Пометка элементов с оберткой
- •4.5.3Реализация стека на основе массива
- •4.5.4Реализация очереди на основе массива
- •4.5.5Реализация списка на основе массива
- •4.5.6Контрольные вопросы
- •Глоссарий
- •Литература
- •Основное (обязательное) обеспечение
- •Дополнительное обеспечение
Министерство образования и науки Российской Федерации
Новосибирский государственный университет
экономики и управления «НИНХ»
А. И. Пестунов
Языки программирования
Учебное пособие
Новосибирск
2014
Издается в соответствии с планом УМР НГУЭУ
Рецензенты:
М. А. Монарев – канд. физ.-мат. наук;
С. Н. Терещенко – канд. техн. наук;
Пестунов, А. И.
Языки программирования : учеб. пособие / А.И. Пестунов ; Новосиб. гос. ун-т экономики и управления. – Новосибирск, 2014. – 167 с.
Учебное пособие состоит из 20 тем, позволяющих студентам изучить фундаментальные средства языков программирования, такие как ввод и вывод, условные операторы, циклы, массивы, строки, процедуры и функции, рекурсия, матрицы. Представлены также темы, посвященные реализации простых динамических структур данных (стек, очередь, список) на основе массива.
Настоящее учебное пособие предназначено для студентов направления подготовки 090900 «Информационная безопасность», изучающих дисциплину «Языки программирования».
Знания, полученные при работе с пособием, могут быть использованы далее при изучении дисциплин «Технологии и методы программирования», «Разработка проблемно-ориентированных программных приложений», «Математические модели и методы в задачах информационной безопасности», «Криптографические методы защиты информации».
Введение 4
1 Основы программирования 6
Тема 1.1. Введение в программирование 6
Тема 1.2. Математические вычисления 14
Тема 1.3. Условный оператор if-else 21
Тема 1.4. Условный оператор switch-case 27
Тема 1.5. Символы и строки 32
2 Циклы и массивы 36
Тема 2.1. Цикл на базе if и goto 36
Тема 2.2. Циклы while и do-while 43
Тема 2.3. Цикл for 54
Тема 2.4. Массивы 60
Тема 2.5. Обработка строк 70
3 Процедуры и функции 75
Тема 3.1. Процедуры 75
Тема 3.2. Функции 85
Тема 3.3. Рекурсивные функции 91
Тема 3.4. Логические функции 98
Тема 3.5. Прикладной программный интерфейс (API) 103
4 Простые структуры данных 113
Тема 4.1. Матрицы 113
Тема 4.2. Массивы строк 127
Тема 4.3. Файлы 136
Тема 4.4. Структуры 140
Тема 4.5. Реализация динамических структур данных на основе массива 151
Глоссарий 163
Литература 166
Введение
Информационная безопасность – это междисциплинарная проблема, решение которой опирается на целый спектр знаний и технологий. Основным фактором, определяющим рост актуальности данной проблемы, является высокий темп развития информационных технологий и их повсеместное внедрение. По этой причине особенно важную роль в системах защиты информации играют средства программно-аппаратной защиты, включающие в себя программные приложения, реализующие надежные сетевые протоколы и криптографические алгоритмы, методы обнаружения вторжений и поиска вредоносного кода, обеспечивающие аутентификацию и разграничение прав пользователей, анализ защищенности сетей и межсетевое экранирование и т. д.
В настоящее время существует множество языков программирования, что объясняется их направленность на разные специфические задачи. В этих условиях особую важность приобретает не столько хорошее знание всех этих языков (поскольку достичь этого вряд ли возможно), а твердое понимание фундаментальных принципов и концепций программирования, таких как структурное программирование, алгоритмы и анализ сложности, объектно-ориентированное программирование, шаблоны проектирования и пр.
В задачи дисциплины «Языки программирования» входит ознакомление студентов с теоретическими основами программирования, изучение основ алгоритмизации, средств описания данных и действий языков программирования, овладение навыками составления и отладки программ для ЭВМ.
Предлагаемое учебное пособие охватывает темы, изучение которых позволит студентам познакомиться с базовыми неустаревающими средствами и инструментами структурного программирования, такими как ввод и вывод, условные операторы, циклы, массивы, строки, процедуры и функции, рекурсия, матрицы. Рассмотрены также реализации простых динамических структур данных (стек, очередь, список) на основе массива.
При изложении материала сделан упор на изучение приемов создания практически важных программ, которые затем могут быть применены при реализации приложений, ориентированных именно на защиту информации, поэтому теоретические сведения даются в максимально сжатом виде.
После изучения данного курса студенты будут готовы к освоению материала, связанного с объектно-ориентированным и системным программированием, к изучению фундаментальных алгоритмов и структур данных, к реализации криптографических и вычислительных алгоритмов, к разработке параллельных программ. Успешное освоение материала данного курса позволит в дальнейшем не только углубиться в изучение C++, но и приступить к изучению других современных языков программирования, таких как Java, C#, PHP, JavaScript и др.
1Основы программирования Тема 1.1. Введение в программирование
1.1.1Основные понятия программирования
Перед тем, как приступить непосредственно к программированию, кратко рассмотрим некоторые связанные с ним базовые понятия. Компиляция – это процесс преобразования файла с программным кодом в исполняемый файл; компиляцию осуществляет компилятор.
При компиляции производится проверка синтаксических ошибок – ошибок, заключающихся в нарушении правил языка программирования; при обнаружении синтаксической ошибки компилятор указывает на строку кода с ошибкой и описывает эту ошибку. В последних версиях популярных сред разработки диагностика синтаксических ошибок происходит «на лету»: как только программист допускает синтаксическую ошибку, редактор подчеркивает ее аналогично тому, как это делает текстовый редактор Microsoft Word.
Другим видом ошибок являются алгоритмические ошибки, заключающиеся в том, что программа запускается, но выполняется не так, как ожидалось; такие ошибки программисты часто называют багами (англ. bug – жук, вирус, микроб). Процесс исправления ошибок называется отладкой.