- •В.Л.Бусько, а.Г.Корбит, т.М.Кривоносова
- •Основы алгоритмизации и программирования
- •Содержание
- •1. Введение
- •1.1. История создания эвм
- •1.2. Структура пэвм
- •1.3. Классификация языков программирования
- •1.4. Размещение данных и программ в памяти пэвм
- •1.6. Ошибки
- •1.7. Функциональная и модульная декомпозиции
- •1.5. Программные модули
- •1.8. Файловая система хранения информации
- •1.9. Операционная система
- •2. Основные понятия и определения
- •2.1. Этапы решения задач на эвм
- •2.2. Понятие алгоритма и способы его записи
- •2.3. Свойства алгоритмов
- •2.4. Способы описания алгоритмов
- •2.5. Графическое описание алгоритма
- •2.6. Основные символы схемы алгоритма
- •2.7. Пример простейшего линейного алгоритма
- •2.8. Немного истории
- •3. Синтаксис языка Cи
- •3.1. Алфавит языка
- •3.2. Лексемы
- •3.3. Идентификаторы и ключевые слова
- •3.4. Знаки операций
- •3.5. Литералы (константы)
- •3.6. Комментарии
- •4. Базовые типы объектов
- •4.1. Простейшая программа
- •4.2. Основные типы данных
- •4.3. Декларация (объявление) объектов
- •4.4. Данные целого типа (int)
- •4.5. Данные символьного типа (char)
- •4.6. Данные вещественного типа (float, double)
- •5. Константы в программах
- •5.1. Целочисленные константы
- •5.2. Константы вещественного типа
- •5.3. Символьные константы
- •5.4. Строковые константы
- •6. Обзор операций
- •6.1. Операции, выражения
- •6.2. Арифметические операции
- •6.3. Операции присваивания
- •6.4. Сокращенная запись операции присваивания
- •6.5. Преобразование типов операндов арифметических операций
- •6.6. Операция приведения типа
- •6.7. Операции сравнения
- •6.8. Логические операции
- •6.9. Побитовые логические операции. Операции над битами
- •6.10. Операция , (запятая)
- •7. Обзор базовых инструкций языка с
- •7.1. Стандартная библиотека языка Си
- •7.2. Стандартные математические функции
- •7.3. Функции вывода данных на дисплей
- •7.4. Функции ввода информации
- •7.5. Ввод - вывод потоками
- •7.6. Дополнительные функции в дальнейшем мы будем часто пользоваться стандартными библиотечными функциями. Рассмотрим некоторые из них.
- •8. Синтаксис операторов языка c
- •8.1. Условные операторы
- •8.2. Условная операция «? :»
- •8.3. Оператор выбора альтернатив (переключатель)
- •9. Составление циклических алгоритмов
- •9.1. Понятие цикла
- •9.2. Оператор с предусловием while
- •9.3. Оператор цикла с постусловием do - while
- •9.4. Оператор цикла с предусловием и коррекцией for
- •10. Операторы передачи управления
- •Рассмотрим их более подробно.
- •10.1. Оператор безусловного перехода goto
- •10.2. Оператор continue
- •10.3. Оператор break
- •10.4. Оператор return
- •11 . Указатели
- •11.1. Указатели
- •11.2. Операции над указателями (косвенная адресация)
- •11.3. Ссылка
- •12. Массивы
- •12.1. Понятие массива
- •12.2. Одномерные массивы
- •12.3. Многомерные массивы
- •12.4. Операция sizeof
- •12.5. Применение указателей
- •12.6. Указатели на указатели
- •12.7. Адресная функция
- •13. Работа с динамической памятью
- •13.1. Пример создания одномерного динамического массива:
- •13.2. Пример создания двуxмерного динамического массива:
- •14. Строки в языке Си
- •14.1. Русификация под Visual
- •15. Функции пользователя
- •15.1. Декларация функции
- •15.2. Вызов функции
- •15.3. Операция typedef
- •15.4. Указатели на функции
- •15.5. Параметры командной строки функции main
- •15.6. Функции с переменным числом параметров
- •16.1. Классы памяти объектов в языке c:
- •16.2. Автоматические переменные
- •16.3. Внешние переменные
- •16. Классы памяти и области действия объектов
- •16.4. Область действия переменных
- •17. Структуры, объединения, перечисления
- •17.1. Структуры
- •17.2. Декларация структурного типа данных
- •17.3. Создание структурных переменных
- •17.4. Вложенные структуры
- •17.5. Массивы структур
- •17.6. Размещение структурных переменных в памяти
- •17. 7. Объединения
- •17.8. Перечисления
- •18. Файлы в языке с
- •18.1. Открытие файла
- •18.2. Закрытие файла
- •18.3. Запись - чтение информации
- •Посимвольный ввод-вывод
- •Построчный ввод-вывод
- •Блоковый ввод-вывод
- •18.4. Текстовые файлы
- •18.5. Бинарные файлы
- •Список рекомендуемой литературы
- •Список используемой литературы
- •Стандартная часть таблицы символов (ascii)
- •Дополнительная часть таблицы символов
- •Операции языка Си
- •Приложение 3 Возможности препроцессора и его вызов
- •Директивы лексемного замещения идентификаторов
- •Директива отмены
- •Макрозамещение
- •Подключение файлов исходного текста
- •Условная компиляция
- •Изменение нумерации строк и идентификатора файла
- •Основы алгоритимзации и программирования
2.6. Основные символы схемы алгоритма
Символы ввода-вывода данных:
- данные ввода/вывода (носитель не определен);
- ручной ввод данных с устройства любого типа, например, с клавиатуры;
- отображение данных в удобочитаемой форме на устройстве, например, дисплее.
Символы процесса:
-
процесс
- отображение функции обработки данных,
т.е. операции приводящей к изменению
значения указанного объекта;
- предопределенный процесс - отображение группы операций, которые определены в другом месте, например, в подпрограмме;
- решение - отображение функции, имеющей один вход и ряд альтернативных выходов, их которых только один может быть активизирован после анализа условия: указанного внутри этого символа.
Граница цикла - отображение начала и конца цикла,
или, наоборот, - условие завершения указывают в нижней границе.
Символы линий - отображают поток данных или управления. Линии - горизонтальные или вертикальные, имеющие только прямой угол перегиба. Стрелки - указатели направления не ставятся, если управление идет сверху-вниз или слева-направо.
Специальные символы
С
оединитель
-
используется при обрыве линии и
продолжении ее в другом месте (необходимо
присвоить название).
Т
ерминатор
- вход из внешней среды или выход во
внешнюю среду (начало или конец схемы
программы).
Коментарий.
2.7. Пример простейшего линейного алгоритма
Наиболее
часто в практике программирования
требуется организовать расчет некоторого
арифметического выражения при различных
исходных данных. Например, такого:
при x>0 - вещественное, m - целое.
Разработка алгоритма обычно начинается с составления схемы. Продумывается оптимальная последовательность вычислений, при которой, например, отсутствуют повторения. При написании алгоритма рекомендуется переменным присваивать те же имена, которые фигурируют в заданном арифметическом выражении, либо иллюстрируют их смысл.
Для того чтобы не было "длинных" операторов, исходное выражение полезно разбить на ряд более простых. В нашей задаче предлагается схема вычислений, представленная на рис. 3.
Она
содержит ввод и вывод исходных данных,
линейный вычислительный процесс, вывод
полученного результата. Заметим, что
выражение
вычисляется только один раз. Введя
дополнительные переменные a,b,c,
мы разбили сложное выражение на ряд
более простых выражений.
2.8. Немного истории
Алгоритмический язык С был разработан в 1972 г. сотрудником фирмы AT&T Bell Laboratory Денисом Ритчи на базе языка В (автор К.Томпсон), который в свою очередь основывался на языке системного программирования BCPL. Первая версия языка была опубликована в книге авторов Д.Ритчи и Б.Кернигана и получила название стандарт K&R. Минимальная стандартная реализация, поддерживаемая любым компилятором, содержала всего 27 ключевых слов. Началось успешное развитие языка и чтобы избежать путаницы Американский институт стандартизации (American National Standart Institute) ввел в 1983 г. общий стандарт языка – ANSI стандарт.
Язык продолжает развиваться и в 1985 г. появляется язык С++, который в основном сохраняет все черты обычного С, но дополнен новыми существенными возможностями, которые позволили реализовать объектно-ориентированный стиль программирования.
Язык С отражает возможности современных компьютеров. Программы на С отличаются компактностью и быстротой исполнения. Структура С побуждает программиста использовать в своей работе нисходящее программирование, структурное программирование, пошаговую разработку модулей.
Области применения языка C - системное программирование и прикладные задачи с жесткими требованиями по скорости и памяти.
