1) Иванова Г.С. Программирование на С++. /учебник издательство МГТУ 2002
2) Д.Либерти С++. Освой самостоятельно
3) Р. Уинер Язык Турбо Си Издательство СИ 2001
4) Интернет ресурсы
5) Трубачева С.И. Программирование на СИ учебное пособие
Язык СИ был создан в лаборатории Bell Labs компании AT&T (American telephone & telegraph) в 1972 Денисом Рид Чин. Планировался для замены ассемблера, чтобы иметь возможность создавать столь же эффективные и компактные программы и в тоже время не зависеть от конкретного типа процессора.
Си во многом похож на Паскаль, имеет дополнительные средства для прямой работы с памятью (указатели). Си является основным языком на котором написана множество системных программ и операционных систем. Богатые библиотеки функций обеспечивают доступ к системным программам операционных систем, к аппаратным ресурсам ПК.
С++ - объектно-ориентированное расширение языка СИ, созданное в 1980 году Бьярном Страуструпом. СИ++ имеет множество новых возможностей, позволяющих резко повысить производительность программистов, но создание проектов требует высокой квалификации.
Основные достоинства языка:
1) СИ «открывает» программисту доступ к внутренностям компьютера – ячейкам оперативной памяти, регистрам процессора, внешних устройств и т.д.
2) Блочная структура программы на СИ обеспечивает защиту данных, высокий уровень контроля за областями действия и видимости переменных (есть локальные - на протяжении действия функции, и глобальные – на протяжении действия всех программы).
3) СИ – мобильный язык, программы на СИ, написанные для конкретной ОС, для конкретного компьютера (аппаратной платформы Intel, AMD) можно перенести в другую ОС, на другую платформу с минимальными изменениями.
Для того, чтобы исходная программа на СИ (*.C; *.CPP). Была переведена в машинный код (*.EXE) она проходит три этапа:
1) препроцессирование
2) компиляция
3) сборку (линковку)
Задачи препроцессора входит подключение при необходимости внешних файлов (библиотеки), указываемых с помощью директивы include.
Компилятор транслирует (преобразует) исходный код в промежуточный код (в объектный код *.obj), содержащий преобразованный, оптимизированный машинный код при условии, что не встретились синтаксические и семантические ошибки.
Линковщик связывает между собой объектный файл с библиотеками, другими внешними файлами. В результате сборки получается файл с расширением *.EXE.
Загрузчик загружает (копирует) готовый к исполнению модуль в оперативную память.