
- •1. Основные понятия информатики
- •1.1. Понятие и задачи информатики
- •1.2. Системы счисления
- •1.2.1. Двоичная система счисления
- •1.2.2. Восьмеричная система счисления
- •1.2.3. Шестнадцатеричная система
- •1.3. Обобщенная структура и состав персонального компьютера
- •1.4. Организация вычислительных процессов при решении инженерных задач
- •1.5. Алгоритмы
- •1.5.1. Алгоритм: основные свойства и способы представления
- •1.5.2. Базовые элементы и структуры программирования
- •1.5.3. Представление линейных, разветвленных и циклических структур
- •2. ОБщие сведения об операционных системах
- •2.1. Общие сведения об операционных системах
- •2.1.1. Предпосылки создания и краткая история операционных систем ms-dos и Windows
- •2.1.1.1. Операционная система ms-dos
- •2.1.1.2. История создания операционной системы Windows
- •2.1.2. Основные отличия версий операционных систем
- •2.1.2.1. Операционная система Mac os
- •2.1.1.2. Операционная система Linux
- •2.1.1.3. Операционная система Windows
- •2.1.3. Основные команды операционной системы ms-dos
- •2.2. Основные элементы интерфейса операционной системы Windows
- •2.2.1. Элементы интерфейса ос Windows
- •2.2.2. Работа с файловыми системами операционной системы
- •3.2. Элементы языка с
- •3.2.1. Алфавит языка с (используемые символы)
- •3.2.2. Идентификаторы
- •3.2.3. Константы
- •3.2.4. Ключевые слова
- •3.2.5. Знаки операций
- •3.2.6. Комментарии
- •3.3. Лекция 6. Типы данных и их объявление
- •3.3.1. Основные типы данных
- •3.3.2. Объявление типов данных
- •3.4. Лекция 7. Указатели и массивы
- •3.4.1. Объявление указателей
- •3.4.2. Инициализация указателей
- •3.4.3. Составные указатели
- •3.4.4. Операции над указателями
- •3.4.5. Ссылки
- •3.5. Лекция 8. Массивы
- •3.5.1. Одномерные массивы
- •3.5.2. Многомерные массивы
- •3.5.3. Динамические массивы
- •3.5.3.1. Одномерные динамические массивы
- •3.5.3.2. Динамический многомерный массив
- •3.5.4. Символьные массивы (строки)
- •3.6. Лекция 9. Выражения и присваивания
- •3.6.1. Операции инкремента и декремента (увеличения и уменьшения на 1)
- •3.6.2. Операция определения размера типа
- •3.6.4. Операции деления ( / ) и нахождения остатка от деления ( % )
- •3.6.7. Поразрядные операции
- •3.6.8. Логические операции
- •3.6.9. Операции присваивания
- •3.6.10. Условная операция
- •3.6.11. Приоритеты выполнения операций
- •3.6.12. Преобразование типов
- •3.7. Лекция 10. Операторы
- •3.7.1. Операторы ветвления
- •3.7.1.1. Условный оператор if
- •If (выражение) [оператор_1]; [ else оператор_2 ; ]
- •3.7.1.2. Оператор switch
- •3.7.2. Операторы цикла
- •3.7.2.1. Цикл с предусловием (while)
- •3.7.2.2. Цикл с постусловием (do while)
- •3.7.2.3. Цикл с параметрами ( for )
- •3.7.3. Операторы передачи управления
- •3.7.3.1. Оператор безусловного перехода goto
- •3.7.3.2. Оператор прерывания break
- •3.7.3.3. Оператор пропуска continue
- •3.7.3.4. Оператор возврата из функции return
- •4. Модульное программирование
- •4.1. Лекция 11. Функции
- •4.1.1. Объявление функций
- •4.1.2. Определение функций
- •4.1.3. Вызов функций
- •4.1.4. Передача параметров в функцию
- •4.1.5. Передача массивов в функцию
- •В примере:
- •4.1.6. Функции с переменным числом параметров
- •4.1.7. Рекурсивные функции
- •4.1.8. Функция main()
- •4.1.9. Перегрузка функций
- •4.1.10. Шаблоны функций
- •4.2. Лекция 12. Директивы препроцессора
- •4.2.1. Директива #include
- •4.2.1. Директива # define
- •4.2.3. Директивы условной компиляции
- •4.2.4. Директивы #undef
- •4.3. Лекция 13. Пользовательские типы данных
- •4.3.1. Переименование типов
- •4.3.2. Перечисления
- •4.3.3. Структуры
- •4.3.4. Битовые поля
- •4.3.5. Объединения
- •5. Программирование графических изображений в языке с
- •5.1. Лекция 14. Программирование графических изображений
- •5.1.1. Графический режим видеоадаптера
- •5.1.2. Функции управления графическим окном
- •5.1.3. Управление цветом и стилем заполнения фигур
- •5.1.4. Рисование простейших графических фигур
- •5.1.5. Отображение текстовой информации в графическом режиме
- •5.1.7. Преобразование координат и анимационные эффекты
- •6.1.1.3. Функция gets()
- •6.1.1.4. Функция puts()
- •6.1.1.5. Функции printf() и scanf()
- •Потоковые объекты ввода/вывода (форматируемые):
- •6.1.2.1 Форматирование данных с помощью флагов и методов
- •6.2. Функции файлового ввода и вывода
- •6.2.1. Файловый ввод и вывод средствами с
- •6.3. Строки: операции с текстовыми файлами
- •6.3.1. Операции над строками
- •6.3.2. Методы и функции ввода и вывода строк
- •6.4. Лекция 18. Операции со структурами и бинарными файлами
- •6.5. Лекция 19. Списки: операции с динамическими структурами данных; организация списков и их обработка
- •6.5.1. Линейные списки
- •6.5.2. Стеки
- •6.5.3. Очередь
- •6.5.4. Бинарные деревья
1.5. Алгоритмы
1.5.1. Алгоритм: основные свойства и способы представления
Алгоритм — однозначная конечная последовательность точно определённых действий.
Все алгоритмы должны отвечать следующим требованиям:
Алгоритм должен быть применим для всех однотипных задач (массовость алго);
Алгоритм должен состоять из конечного числа действий, каждое из которых требует для выполнения конечного времени (конечность алгоритма);
По окончании выполнения алгоритма должен быть получен результат (результативность алгоритма);
Однозначность: любое действие алгоритма должно быть истолковано однозначно;
Правильность: любой алгоритм должен быть проверен на верность получения результата;
Эффективность: алгоритм должен обеспечивать решение задачи за минимальное время с минимальными затратами ресурсов ПК.
Существует несколько способов представления алгоритмов. Самые распространённые — это текстовое представление (в виде пошаговых, нумерованных текстовых инструкций), либо графическое (в виде структурных блок-схем алгоритмов).
Правила выполнения схем алгоритмов регламентируется Единой системой программной документации, а именно ГОСТ 19.701–90, который заменил сразу два ГОСТа: ГОСТ 19.002–80 и ГОСТ 19.003–80.
Этот ГОСТ действует до сих пор и разработан на основе международного стандарта ISO 5807–85.
1.5.2. Базовые элементы и структуры программирования
Рассмотрим основные элементы блок-схем алгоритмов, применяемых для описания программ.
1. Процесс. Блок отображает функцию обработки данных любого вида. Внешний вид блока представлен на рис. 1.7.
Рис. 1.7 — Элемент блок-схемы «процесс»
Размер a выбирается из ряда:
а = 10, 15, 20 мм.
Размер b = 1,5а.
При выполнении ручным способом допускается выбирать b = 2а.
При выполнении автоматизированным способом допускается округление b = 1,5а до значений, определяемых техническими возможностями используемых устройств.
2. Предопределённый процесс. Блок отображает процесс, состоящий из нескольких шагов, которые определены в другом месте (в подпрограмме, модуле и т.д.); внешний вид представлен на рис. 1.8.
Рис. 1.8 — Элемент блок-схемы «предопределенный процесс»
3. Данные. Блок отображает данные, носитель которых не определён (ввод-вывод).
Преобразует данные в форму, пригодную для обработки (ввод), или отображения (вывод). Внешний вид блока представлен на рис. 1.9.
Рис. 1.9 — Элемент блок-схемы «данные»
4. Решение. Блок отображает решение, либо функцию переключательного типа, имеющую один вход и ряд альтернативных выходов (выбор направления выполнения алгоритма).
Внешний вид блока решение представлен на рис. 1.10,а. Примеры применения блока решение изображены на рис. 1.10,б.
Рис. 1.10 — Элемент блок-схемы «решение», внешний вид (а),
примеры применения (б)
5. Граница цикла. Стандарт содержит два символа: начало и конец цикла.
Части блока содержат внутри себя условия инициализации, приращения, завершения и т.д. Части блока имеют один и тот же идентификатор. Внешний вид блока решение представлен на рис. 1.11,а. Примеры применения границы цикла изображены на рис. 1.11,б.
Рис. 1.11 — Элемент блок-схемы «граница цикла», внешний вид (а),
примеры применения (б)
6. Подготовка. Блок отображает модификацию команды или группы команд с целью воздействия на некоторую последующую функцию (установка переключателя, модификация индексного регистра, инициализация программы)
Другими словами, в элементе происходит выполнение операций, меняющих команды (или группы команд), изменяющих программу. Внешний вид блока представлен на рис. 1.12.
Рисунок 1.12 — Элемент блок-схемы «подготовка»
7. Линия — отображает поток данных или управления
При необходимости или повышения удобства читаемости могут быть добавлены стрелки-указатели (рис.1.13).
Рис. 1.13 — Элемент «линия»
Некоторые правила применения линий:
— пересечение линий, представленное на рис. 1.14, означает, что данные линии не имеют логической связи между собой;
— объединение линий — места объединения нескольких линий должны быть смещены друг относительно друга так, как показано на рис.1.15;
— линии должны подходить к символам слева или сверху, и исходить из элементов — либо справа, либо снизу. Линии должны быть направлены к центру символа.
Рис. 1.14 — Пример пересечения линий логически не связанных
Рис. 1.15 — Пример объединения линий
8. Пунктирная линия — отображает альтернативную связь, этот элемент также может быть использован для обведения аннотированного участка. Внешний вид представлен на рис. 1.16.
Рис. 1.16— Элемент «пунктирная линия»
9. Соединитель — отображает выход в часть схемы и вход из другой части. Используют соединители для разрыва линии и продолжения в другом месте.
Соответствующие друг другу соединители должны содержать одно и тоже уникальное обозначение (см. рис.1.17,б).
Рис. 1.17— Элемент «соединитель»: внешний вид (а),
примеры использования (б)
10. Терминатор — отображает выход во внешнюю среду или вход из внешней среды (начало или конец схемы, внешнее использование и источник или пункт назначения данных). Символ изображен на рис. 1.18.
Рис. 1.18— Символ «терминатор»
Внутри блока обычно используют следующие варианты надписей: начало, конец, перезапуск, вход, выход, ошибка, останов, и др.
11. Комментарий. Используют для добавления описательных комментариев, пояснительных записей в целях объяснения или добавления примечаний (см. рис.1.19).
Рис. 1.19 — «Комментарий»: внешний вид (а), пример использования (б)
12. Пропуск (троеточие). Используют для отображения пропуска одного, либо группы символов, в которых не определены ни тип, ни число символов.
Применяют в схемах, отображающих общие решения с неизвестным числом повторений, как показано на рис. 1.20,б.
Рис. 1.20— «Пропуск»: вид (а), пример использования (б)
13. Идентификатор символа — определяет символ для использования в справочных целях в других элементах документации (например, в листинге программы). Расположение идентификатора символа показано на рис. 1.21.
Рис. 1.21— Применение идентификатора символа
14. Описание символа — любая информация для улучшения понимания функции как части схемы, или специального применения символа с перекрёстной ссылкой. Расположение идентификатора символа показано на рис. 1.22.
Рис. 1.22— Применение описания к символу
15. Способы ввода-вывода — используются для символов, отображающих носители данных, для использования в качестве ссылки на документацию (см. рис. 1.23).
Рис. 1.23— Способы ввода-вывода: ввод (а), вывод (б)
16. Подробное представление — представление, которое обозначается символом с полосой.
Рис. 1.24 — Подробное представление: а — обозначение элемента с идентификатором и полосой; б — подробное представление
Символ может быть любым. Над линией помещают идентификатор, указывающий на подробное представление символа (см. рис. 1.24,а). Подробное представление начинается и заканчивается символом терминатора, содержащего ссылку с именем идентификатора в символе с полосой (см. рис. 1.24,б).