- •Федеральное агентство по образованию
- •Краткая история языка с
- •Особенности и основные понятия языка Си
- •Структура программы
- •Типы данных
- •Классификация типов данных
- •Вещественные
- •Логический
- •Диапазоны представления данных
- •Объявление переменных
- •Константы в языке Си
- •Операции языка Си. Приоритет операций
- •Операция присваивания
- •Арифметические операции
- •Операции отношения
- •Логические операции
- •Поразрядные операции
- •Операцияsizeof
- •Операция выбора по условию
- •Операция запятая
- •Приведение типов Неявное преобразование типов
- •Явное преобразование типов
- •Основные средства ввода-вывода на Си Понятие потока
- •Стандартные потоки
- •Функции потокового ввода-вывода
- •Функции ввода
- •Ввод символов
- •Ввод строк
- •Форматированный ввод
- •Операторы языка Си
- •Оператор if
- •Оператор switch
- •Оператор while
- •Оператор do while
- •Оператор for
- •Оператор break
- •Оператор continue
- •Функции вывода на экран
- •Вывод символов
- •Функция вывода строк puts()
- •Форматированный вывод
- •Указатели в языке Си
- •Адресная арифметика
- •Массивы
- •Функции в языке с
- •Прототипы функций
- •Указатели типа void
- •Функции, возвращающие указатели
- •Встраиваемые функции
- •Рекурсивные функции
- •Функции с переменным числом аргументов
- •Аргументы функции main()
- •Область действия и область видимости
- •Локальные переменные
- •Локальные переменные в функции Main()
- •Глобальные переменные
- •Классы памяти
- •Указатели на указатели
- •Указатели и многомерные массивы
- •Массивы указателей
- •Указатели на функции
- •Операции над строками символов Определение длины строки
- •Копирование строк
- •Поиск в строках
- •Преобразования символов в строках
- •Другие функции для работы со строками
- •Преобразования строк в числа
- •Преобразования чисел в строки
- •Функции анализа символов
- •Распределение памяти
- •Манипулирование блоками памяти
- •Типы, определяемые пользователем
- •Перечислимый тип
- •Структуры
- •Сложные структуры
- •Битовые поля в структурах
- •Объединения
- •Работа с файлами Связь между потоками и файлами
- •Типы дисковых файлов
- •Открытие файла
- •Запись и чтение данных
- •Форматированный ввод-вывод Форматированный вывод
- •Int fprintf (file *fp, char *fmt, ...);
- •Форматированный ввод
- •Символьный ввод
- •Символьный вывод
- •Блочный ввод-вывод
- •Закрытие файла
- •Директивы препроцессора
- •Директива #include
- •Директива #define
- •Директивы условной компиляции
- •Директива #undef
- •Предопределенные макросы
- •69 Лекции по курсу «Языки программирования» Часть III
Краткая история языка с
Язык С был создан Деннисом Ричи (Dennis Ritchie) в лабораториях Bell Telephone Laboratories в 1972 г. Этот язык создавался для конкретной задачи — разработки операционной системы UNIX (которая сейчас используется на множестве компьютеров). С самого начала язык С преследовал весьма практическую цель— помочь программистам, очень занятым людям, быстро писать программы.
Язык С оказался таким гибким и мощным, что быстро вышел за пределы лабораторий Bell. Им стали пользоваться повсюду для разработки самых разных программ. Однако вскоре различные организации стали применять свои собственные версии языка, и различия между этими версиями, пусть и небольшие, доставляли программистам немало неудобств. В ответ на возникновение этой проблемы Американский Национальный Институт Стандартов (American National Standards Institute— ANSI) сформировал в 1983 году комитет для создания стандарта языка С. Именно этот стандарт известен как стандарт ANSI языка С. Практически во всех современных компиляторах С предусмотрена возможность ограничить синтаксис программы этим стандартом.
Язык С изменяется очень редко. Самое недавнее изменение произошло в 1999 г., когда был принят стандарт ANSI C-99. Этот стандарт закрепил в языке несколько новых возможностей. Более ранние компиляторы не поддерживают этого новейшего стандарта.
Язык называется так, потому что его непосредственный предшественник назывался В. Язык В был разработан Кеном Томпсоном (Ken Thompson) из лабораторий Bell. А почему тот первый язык назывался В — это уж вы догадайтесь сами.
В современном мире компьютерного программирования существует широкий выбор языков высокого уровня, например, С, Perl, BASIC, Java, C#. Все они превосходны и подходят для решения практически любых задач программирования. Однако есть ряд причин, по которым многие специалисты компьютерной индустрии ставят С на первое место.
С — язык мощный и гибкий. Единственное ограничение возможностей программирования на нем — это пределы вашей собственной фантазии. Сам язык почти никаких ограничений не накладывает. С используется при разработке таких программных продуктов, как операционные системы, текстовые редакторы, графические приложения, программы делопроизводства и даже компиляторы других языков.
С — популярный язык, который предпочитают многие профессиональные программисты. Следствие этого — наличие большого количества разнообразных компиляторов С и полезных дополнений к ним.
С — хорошо переносимый язык. Переносимый означает, что программу на С, написанную для одной компьютерной системы (например, для IBM PC), можно скомпилировать и запустить в другой среде (скажем, на DEC VAX) без особых или даже без всяких изменений. Кроме того, программу для операционной системы Microsoft Windows можно перенести на компьютер под управлением Linux почти без доработки. Переносимости способствует стандарт ANSI, который устанавливает требования к компиляторам С.
Словарь С очень краток — в нем всего несколько фиксированных терминов, которые называются ключевыми словами. Они служат основой для функциональных возможностей языка. Может показаться, что язык с большим количеством ключевых слов (еще называемых служебными словами) был бы более мощным. Но это не так. Всякий, кто берется за программирование на С, вскоре обнаруживает, что с его помощью можно решить практически любую задачу.
С — модульный язык. Программу на С можно (и нужно) писать в виде набора отдельных подпрограмм-модулей, которые называются функциями. Такие функции можно затем использовать в других программах и в других целях. С помощью корректной передачи данных в функции можно добиться эффективной и экономной работы программы.
Может возникнуть вопрос, в чем разница между С и C++, и не следует ли изучать C++ вместо С. C++ является расширением С. Это означает, что в C++ содержится все, что есть в С, а также дополнительные средства для объектно-ориентированного программирования. При переходе к C++ оказывается, что все изученное про С по-прежнему справедливо и для его расширения, C++. Таким образом, изучение С не только дает знание одного из мощнейших и популярнейших современных языков программирования, но и подготавливает к изучению объектно-ориентированного программирования.
Си лежит также в основе таких мощных языков объектно-ориентированного программирования Java и С#.
