Язык С - Язык программирования, разработанный, как инструмент для программистов практиков в 1972 году на основе языка B. Представляет собой процедурный язык(как и Паскаль). На нем до сих пор пишутся unix-подобные ОС. Общая характеристика: Включает элементы как выского уровня(структуры данных и операторы структурного программирования, большой набор операций, указатели и функции) так и низкого(аппаратные типы данных, логические операции с битами, сдвиги, работа с адресами); Имеет эффективный, экономный и переносимый компилятор; Развитые библиотеки(как стандартная, так и дополнительные)
1976 г. – перенос Unix на Interdata 8/32 (затем и на другие платформы)
1978 г. – первая книга
1987 г. – стандарт ANSI C
1999 г. – текущий стандарт ISO 9899:1999
Язык С++ является самостоятельным языком программирования, разработанным на основе С. Особенностью языка С++ является включение в язык объектно-ориентированного подхода и введение дополнительных упрощающих синтаксических конструкций. На этот язык существует ANSI стандарт, позволяющий без проблем использовать и компилировать программы, написанные на этом языке при помощи разных компиляторов. Еще преимущества: Эффективность генерируемого кода, универсальность(возможность гибкой реализации требуемых алгоритмов), удобство(структурированность без лишних рамок).Недостатки: Уровнем “ниже”, чем Паскаль, неудобен для чтения, слабое структурирование(неупорядоченая программа)
1998 г. – стандарт ISO 14882:1998
2003 г. – стандарт ISO 14882:2003
2005 г. – стандарт C++/CLI
2011 г. – текущий стандарт C++11
Структура языка:
#Директивы процессора
….
#Директивы процессора
функции()
операторы
void main() //с нее начинается программа
операторы
описания
присваивания
функция
пустой оператор
составной
выбора
циклов
перехода
Алфавит языка включает в себя: Прописные и строчные латинские буквы и знак подчеркивания; арабские цифры; спец.знаки; пробельные символы. Коментарии помещяются между /* и */, или с втрочке после //.
Лексемы: Индентификаторы - имена объектов С-программ. Ключевые слова - это слова, которые имеют спец. назначения для компилятора. Их нельзя использовать в качестве индентификаторов.Знаки операций - один или несколько символов, определяющих действие над операндами(бывают унарные/бинарные/тернарный). Константы - это неизменяемые величины(компилятор выделяет их как лексемы и относит к нужному типу). Разделители - скобки, точка, запятая, пробельные символы.
Особенности компиляции:
Задача препроцессора – преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора.
Директивы(С примерами): #define ZERO 0.0 - замена ZERO на 0.0 (Или создание макросов). Так же используется для “склеивания слов” с помощью ## между ними(#define MACRO(x,y) x##y.
#undef ZERO- директива отмены define
#include <iostream.h>- директива добавления библиотек.(В данном случае iostream)
Каждая библиотечная функция С имеет соответствующее описание в одном из заголовочных файлов. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла.
#pragma — действие, зависящее от конкретной реализации компилятора. Это не совсем директива препроцессора в прямом смысле термина.Директива argused должна стоять перед функцией. Она используется для устранения предупреждений, если аргумент функции, перед которой стоит #pragma, не используется в теле функции. Директива exit определяет одну или несколько функций, вызываемых при завершении программы. Директива startup определяет одну или несколько функций, вызываемых при запуске программы.
#error - директива позволяет выдать сообщение с ошибкой.
33.