- •Введение
- •Достоинства и недостатки языка c
- •Типы данных в с
- •Модификаторы
- •Константы
- •Арифметические операции
- •Логические операции
- •Оператор присваивания
- •Организация множественных выражений
- •Комбинированные операции
- •Локальные и глобальные объекты
- •Модификатор extern
- •Статические и динамические объекты
- •Регистровые переменные
- •Описание неизменяемых объектов
- •Указатели
- •Явное преобразование типа
- •Оператор if
- •Операторы циклов Оператор while
- •Оператор do ... While
- •Оператор for
- •Оператор switch (переключатель)
- •Операторы передачи управления
- •Прототипы функций
- •Передача данных в функцию
- •Структуры и определения типов пользователя
- •Битовые поля
- •Объединения
- •Псевдофункция sizeof
- •Основные директивы препроцессора
- •Основные директивы условной компиляции
- •Дополнительные данные по Turbo-c
- •Организация памяти на машинах класса pc. Виды указателей
- •Работа с указателями на функцию
- •Основные регистры общего назначения процессора
- •Модели памяти
- •Использование стека
- •Организация прерываний в программе. Модификатор volatile
- •Порядок передачи данных в функцию. Модификатор pascal
- •Передача данных в программу. Функция main
- •Разбор типовых ошибок и недочетов при программировании
- •Некоторые функции библиотеки Turbo-c
- •Функции работы с оперативной памятью эвм
- •Функции работы с клавиатурой
- •Работа с дисплеем в символьном режиме
- •Работа с дисплеем в графическом режиме
- •Функции работы с дисками
- •Функции работы с временными интервалами и звуком
- •Функции преобразования данных
- •Функции работы со строками
- •Математические функции
- •Функции работы с файлами и каталогами
- •Функции работы со временем и датой
- •Функции процессов
- •Функции работы с портами машины
- •Интерфейс с дос
- •Задачи на практические занятия
- •Литература
- •Оглавление
Введение
Язык C (произносится “си”) [1,2] – это универсальный язык программирования, для которого характерны экономичность выражения, современный поток управления и структуры данных, богатый набор операторов. Язык C не является ни языком “очень высокого уровня”, ни “большим” языком, и не предназначается для некоторой специальной области применения, но отсутствие ограничений и общность языка делают его более удобным и эффективным для многих задач, чем языки, предположительно более мощные.
Язык C, первоначально предназначавшийся для написания операционной системы UNIX на ЭВМ DEC PDP-11, был разработан и реализован на этой системе Деннисом Ричи в 1972 году. Операционная система, компилятор с языка C и по существу все прикладные программы системы UNIX (включая почти все программное обеспечение) переписаны на C (в 1973 году). Окончательная версия языка была сформирована в 1977 году. Коммерческие компиляторы с языка C существуют также на практически всех других ЭВМ. Язык C, однако, не связан с какими-либо определенными аппаратными средствами или системами, и на нем легко писать программы, которые можно пропускать без изменений на любой ЭВМ, имеющей C-компилятор. В 1978 и 1988 годах разработчики языка Керниган и Ричи выпустили книги по языку С, а в 1990 и 1999 годах были приняты международные стандарты языка, что является несомненным его достоинством в отличие, например, от языка Pascal, для которого не существует международных стандартов.
Так как C относительно мал, он не требует много места для своего описания и может быть быстро выучен, программы на C оказываются достаточно эффективными, так что не возникает побуждения писать вместо этого программы на языке ассемблера.
Хотя C соответствует возможностям многих ЭВМ, он не зависит от какой-либо конкретной архитектуры машины и в силу этого без особых усилий позволяет писать “переносимые” программы, т.е. программы, которые можно пропускать без изменений на различных аппаратных средствах. В языке C объектами основных типов данных являются символы, целые числа нескольких размеров и числа с плавающей точкой. Кроме того, имеется иерархия производных типов данных, создаваемых указателями, массивами, структурами, объединениями и функциями.
Язык C включает основные конструкции потока управления, требуемые для хорошо структурированных программ: группирование операторов, принятие решений (if), циклы с проверкой завершения в начале (while, for) или в конце (do...while) и выбор одного из множества возможных вариантов (switch).
В языке C имеются указатели и возможность адресной арифметики. Аргументы передаются функциям посредством копирования значения аргумента, и вызванная функция не может изменить фактический аргумент в вызывающей программе. Если желательно добиться “вызова по ссылке”, можно неявно передать указатель, и функция сможет изменить объект, на который этот указатель указывает. Имена массивов передаются указанием начала массивов, так что аргументы типа массивов эффективно вызываются по ссылке.
К любой функции можно обращаться рекурсивно, и ее локальные переменные обычно “автоматические”, т.е. cоздаются заново при каждом обращении. Описание одной функции не может содержаться внутри другой, но переменные могут описываться в соответствии с обычной блочной структурой. Функции в C-программе могут транслироваться отдельно. Переменные по отношению к функции могут быть внутренними, внешними, но известными только в пределах одного исходного файла, или полностью глобальными. Внутренние переменные могут быть автоматическими или статическими. Встроенных функций (например, ввода-вывода) С не имеет.
Операторы, составляющие функцию, заключаются в фигурные скобки {}. Обращение к функции осуществляется указанием ее имени, за которым следует заключенный в круглые скобки список аргументов. Круглые скобки должны присутствовать и в том случае, когда функция не имеет аргументов. Начинается выполнение задачи с функции, которая имеет имя main. Вызов функции main недопустим.
Все вышенаписанное говорит о том, что данный язык должен быть популярным. В настоящее время язык программирования C является наиболее распостраненным при проектировании приложений, написания системных программ и игр. Широко распостранены компиляторы с языка С фирм Borland Int., Microsoft и Watcom. Существуют стандарты на язык C. Дальнейшее развитие этот язык получил при появлении объектно-ориентированной его модификации C++ [3]. На базе этого языка создаются пакеты проектирования такие, как, например, C++Builder [4]. Здесь будет рассмотрена модификация языка С Turbo-C фирмы Borland Int. Данное учебное пособие ни в коем случае не претендует на полное и подробное описание конструкций языка С, но в нем даны практически все ключевые слова и приведен ряд оригинальных примеров, в которых объяснено действие большинства операторов С. Также дано описание части библиотечных функций С [5], достаточных для начала самостоятельной работы. Приведены также варианты задач на практические занятия.
Данное учебное пособие предназначено для студентов специальностей и направлений 553000 “Системный анализ и управление”, 220200 “Автоматизированные системы обработки информации и управления”, а также других специальностей при изучении курса “Информатика” и “Алгоритмические языки и программирование”. Это учебное пособие будет полезно всем, изучающим язык программирования C, а также программирующим на этом языке как справочное руководство.