Обзор языка программирования с
Разработан в 1972 году Д.Ритчи в фирме Bell Laboratories. Его предшественниками явились язык BCPL (Ричардсон, Кембридже, Англия) и язык В (1970 год, Томпсон) для ранней версии ОС UNIX для компьютера РDP 11.
У языка В не было типов данных, его единственным объектом было машинное слово. Для получения доступа к машинным словам использовались переменные, содержащие указатели. Язык Си устранил эти недостатки. Сохранились указатели, но появились и более сложные структуры данных: массивы, структуры.
Си - современный язык. Его структура позволяет программно использовать нисходящее проектирование, структурное программирование и пошаговую разработку модулей.
Си - мобильный язык. Легко переносится на другие типы машин с небольшими изменениями.
Си - эффективный язык. Программы на Си компактны и быстродействующие.
Си - мощный и гибкий язык. Большая часть UNIX написана на Си, компиляторы и интерпретаторы Fortran, Pascal, Basic, Лисп, Лого. Используются для решения физических, технических проблем, производства мультфильмов.
Си - удобный язык. Сняты многие ограничения.
С++ - язык программирования, используемый в задачах от системного программирования до проблем искусственного интеллекта. Разработал С++ сотрудник Bell Lab’s в 1983 году Брайен Страуструп.
В 1989 году фирма Borland создала Turbo C++ 1.0. А в 90г. фирам Borland C++ 2.0. Появилась возможность программировать в среде Windows. Borland C++ 3.0 имеет библиотеку классов Objekt Windows. Язык Turbo Pascal 6.0 заимствовал часть идей из С++.
В 1991 году в Москве, на выставке программных продуктов 80% программ было написаны на Си и Pascal.
Си - олицетворяет гибкость и богатство возможностей, часто в ущерб безопасности и простоте, надёжность, в ущерб универсальности и изяществу Паскаль.
Borland С++ является интегрированной средой программирования имеющей текстовый редактор, компилятор, редактор связей, отладчик, мощные средства настройки среды.
Си - это язык "компилирующего" типа.
Компилятор - это системная программа, которая преобразует "язык высокого уровня" в язык компьютера - машинный язык. Компиляторы удобны при разработке больших программ, многократного использования.
Дальнейшим продолжением развития Си++ и объектно-ориентированного стиля программирования явилась разработка среды программирования Borland C++ Builder, позволяющая быстро создавать программы, работающие в среде Windows 95, 98.
ЭТАПЫ СОЗДАНИЯ ПРОГРАММЫ
1) Программа готовится с помощью любого текстового редактора и запоминается в исходном файле с расширением *.С, *.СРР.
2) Преобразуется компилятором в объектный файл *.obj.
3) Вместе с другими объектными файлами преобразуется в исполняемый файл программой, называемой загрузчиком или редактором связей *.EXE.
Этот файл уже может быть исполнен компьютером.
СТРУКТУРА ПРОГРАММЫ НА ЯЗЫКЕ СИ
Программа на языке Си определяется как совокупность одного или нескольких модулей. Модулем является самостоятельно компилируемый файл. Модуль содержит один или несколько функций. Функция состоит из операторов языка Си. Рис.1.
Рис.1 Структура программы на языке Си.
Внутренняя структура программы
Исполняемая программа на Си состоит из 4 частей: область команд, область статических данных, область динамических данных, область стека. см. Рис.2.
1. Область команд содержит машинные команды;
2. Стек используется для временного хранения данных и адресов возврата при вызовах подпрограмм;
3. Область статических данных для хранения переменных программы;
4. Область динамических данных для размещения дополнительных данных, которые появляются в процессе работы программы.
Пример программы на СИ
заголовок
# include < stdio.h > //включение файла
void main (void) /*пример*/- имя функции и комментарии
{
тело функции
int num;
num = 1;
printf("пример программы"); // вывод на экран
printf("на Си");
} // конец тела функции
Программа Си всегда имеет функцию main(). С нее начинается выполнение программы.
Рис.2. Внутренняя структура программы на Си.
БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА СИ
1. Комментарии – используются для документирования программы.
§ // - далее все игнорируется до конца строки.
§ /* Текст */ - в любом месте программы
§ /* Строка 1 - для комментария любой длины
строка 2
строка 3
*/
2. Идентификатор - это имя, которое присваивается какому-либо объекту (переменной). Используются строчные и прописные английские буквы, цифры и знак подчёркивания. Строчные и прописные буквы различаются. Начинаются с буквы или знака подчеркивания. Длина не ограничена.
В современном программировании часто используется для создания идентификаторов Венгерская нотация. Например: WordParametrFormat или Word_Parametr_Format.
3. Служебные слова – это слова, с которыми в языке жестко сопоставлены определённые смысловые значения и которые не могут быть использованы для других целей. Это имена операторов, команды препроцессора и так далее.
ДАННЫЕ В ПРОГРАММЕ НА СИ
Каждая программа оперирует в программе с данными. Они присутствуют в программе в виде переменных и констант.
Данные, которые могут изменяться или которым может присваиваться значения во время выполнения программы, называются переменными.
Данные, которым устанавливаются определенные значения и они сохраняют свои значения на всем протяжении работы программы, называются константами.
Константы
Константы - это фиксированные значения. Значение, будучи установлено, больше не меняется.
Типы констант:
a) Целые и длинные целые. Записываются в десятичной, восьмеричной и шестнадцатеричной системе счисления.
Десятичная система:
Размер:Диапазон чисел:
16 битов ± 32768 знаковое
0 – 65535u беззнаковое - (unsigned)
32 бита ± 2147483648l знаковое длинное – (long)
0 – 4294967295ul беззнаковое длинное - (unsigned long )
Пример: 12, 12567, 24u, 135l, 4567ul
Восьмеричная система:
Если число начинается с цифры 0, оно интерпретируется как восьмиричное число
16 битов 0 ¸ 077777
0100000 ¸ 0177777u
32 бита 0200000 ¸ 01777777777l
020000000000 ¸ 037777777777ul
Пример: 0674
Шестнадцатеричная система:
Если число начинается с символа 0х, то оно интерпретируется как шестнадцатиричное
16 битов 0x0000 ¸ 0x7FFF
0x8000 ¸ 0xEFFFu
32 бита 0x10000 ¸ 0x7FFFFFFFl
0x80000000 ¸ 0xFFFFFFFFul
Пример: 0х3D4
b) Вещественные константы. Это числа с плавающей точкой. Значение имеет дробную часть. По умолчанию все вещественные константы имеют тип двойной точности double. Занимают в памяти 8 байт. Диапазон значений ± 1 e ±308.
Принудительно можно задать формат одинарной точности. Число будет занимать 4 байта. (5.75 f)
А также расширенной точности – 10 байт. (3.14L)
Знак + можно не писать. Разрешается опускать либо десятичную точку, либо экспоненциальную часть, но не одновременно (.2; 4е16). Можно не писать дробную либо целую часть, но не одновременно (100.; .8е-5)
c) Символьные константы. Это набор символов, используемых в ЭВМ.
Делятся на 2 группы: печатные и непечатные (управляющие коды). Символьная константа включает в себя только 1 символ, который необходимо заключить в апострофы и занимает 1 байт памяти.
Любой символ имеет своё двойное представление в таблице ASCII
Символ 'А' 'a' ' ' '\n'
Его код 65 97 32 10
Как целый тип данных 'A'=01018, 010000012, 4116, 6510.
Управляющие коды начинаются с символа \ и тоже заключаются в апострофы. Наиболее распространенные управляющие коды:
\n – переход на новую строку
\t – табуляция (сдвиг курсора на некоторое фиксированное значение)
\b – шаг назад (сдвиг на одну позицию назад)
\r – возврат каретки (возврат к началу строки)
\f – подача бланка (протяжка бумаги на 1 страницу)
\\ - слеш
\’ - апостроф
\” - кавычки
Последние три знака могут выступать символьными константами, а также применяться в функции вывода на экран printf() , поэтому применение их в качестве символов может привести к ошибке. Например, если мы хотим вывести строку «Символ \ называется слеш», то оператор должен выглядеть так:
рrintf( «Символ \\ называется слеш»
d) Строковые константы - содержат последовательность из 1 и более символов,
заключённых в " ". Расходуется по 1 байту на любой символ + 1байт на так называемый ноль-символ - признак конца строки. Ноль-символ – не цифра ноль, он означает, что количество символов в строке (N) должно быть на 1 байт больше (N+1), чтобы обозначать конец строки.