Программирование
Профессиональная фотосъёмка свадеб и торжеств. Звоните 89202410213. При указании на данный сайт скидка на фотопечать 25%!!!

Статьи

  1. Программирование

  2. Анализ

  3. Кодирование

  4. BDS C

  5. Borland C++

  6. Специальные символы на html

  7. C++ Builder

Языки программирования

  1. HTML5

  2. JavaScript

  3. Язык Си

  4. C++
Каталог популярных сайтов

Си (англ. C) — стандартизированный процедурный язык программирования, разработанный в начале 1970-х годов сотрудниками Bell Labs Кеном Томпсоном и Деннисом Ритчи как развитие языка Би. Си был создан для использования в операционной системе UNIX. С тех пор он был портирован на многие другие операционные системы и стал одним из самых используемых языков программирования. Си ценят за его эффективность. Он является самым популярным языком для создания системного программного обеспечения. Его также часто используют для создания прикладных программ. Несмотря на то, что Си не разрабатывался для новичков, он активно используется для обучения программированию. В дальнейшем синтаксис языка Си стал основой для многих других языков.

Для языка Си характерны лаконичность, стандартный набор конструкций управления потоком выполнения, структур данных и обширный набор операций.

Особенности

Язык программирования Си отличается минимализмом. Авторы языка хотели, чтобы программы на нём легко компилировались с помощью однопроходного компилятора, чтобы каждой элементарной составляющей программы после компиляции соответствовало весьма небольшое число машинных команд, а использование базовых элементов языка не задействовало библиотеку времени выполнения. Однопроходный компилятор компилирует программу, не возвращаясь назад, к уже обработанному тексту. Поэтому использованию функции и переменных должно предшествовать их объявление. Код на Си можно легко писать на низком уровне абстракции, почти как на ассемблере. Иногда Си называют «универсальным ассемблером» или «ассемблером высокого уровня», что отражает различие языков ассемблера для разных платформ и единство стандарта Си, код которого может быть скомпилирован без изменений практически на любой модели компьютера. Си часто называют языком среднего уровня или даже низкого уровня, учитывая то, как близко он работает к реальным устройствам. Однако, в строгой классификации, он является языком высокого уровня.

Компиляторы Си разрабатываются сравнительно легко благодаря простоте языка и малому размеру стандартной библиотеки. Поэтому данный язык доступен на самых различных платформах (возможно, круг этих платформ шире, чем у любого другого существующего языка). К тому же, несмотря на свою низкоуровневую природу, язык позволяет создавать переносимые программы и поддерживает в этом программиста. Программы, соответствующие стандарту языка, могут компилироваться на самых различных компьютерах.

Си (как и ОС UNIX, с которой он долгое время был связан) создавался программистами и для программистов, круг которых был бы ненамного шире круга разработчиков языка. Несмотря на это, область использования языка значительно шире задач системного программирования.

Си создавался с одной важной целью: сделать более простым написание больших программ с минимумом ошибок по правилам процедурного программирования, не добавляя на итоговый код программ лишних накладных расходов для компилятора, как это всегда делают языки очень высокого уровня, такие как Бейсик. С этой стороны Си имеет следующие важные особенности:

  • простую языковую базу, из которой вынесены в библиотеки многие существенные возможности, вроде математических функций или функций управления файлами;
  • ориентацию на процедурное программирование, обеспечивающую удобство применения структурного стиля программирования;
  • систему типов, предохраняющую от бессмысленных операций;
  • использование препроцессора для, например, определения макросов и включения файлов с исходным кодом;
  • непосредственный доступ к памяти компьютера через использование указателей;
  • минимальное число ключевых слов;
  • передачу параметров в функцию по значению, а не по ссылке (при этом передача по ссылке эмулируется с помощью указателей);
  • указатели на функции и статические переменные;
  • области действия имён;
  • структуры и объединения — определяемые пользователем собирательные типы данных, которыми можно манипулировать как одним целым.

Вот некоторые особенности других языков программирования, которых не имеет Си:

  • автоматическое управление памятью;
  • поддержка объектно-ориентированного программирования (при этом первые версии C++ генерировали код программы на языке Си);
  • замыкание;
  • вложенные функции (существуют компиляторы языка Си реализующие эту функцию, например компилятор GNU);
  • полиморфизм функций и операторов;
  • встроенная поддержка многозадачности и сети;
  • функции высшего порядка;
  • карринг.

После появления язык Си был хорошо принят, потому что он позволял быстро создавать компиляторы для новых платформ, а также позволял программистам довольно точно представлять, как выполняются их программы. Благодаря этому программы, написанные на Си, эффективнее написанных на многих других языках. Как правило, лишь оптимизированный вручную код на ассемблере может работать ещё быстрее, потому что он даёт полный контроль над машиной, однако развитие современных компиляторов вместе с усложнением современных процессоров сократило этот разрыв.

Одним из последствий высокой эффективности и переносимости Си стало то, что многие компиляторы, интерпретаторы и библиотеки других языков высокого уровня часто выполнены на языке Си.

Ключевые слова

В С89 есть 32 ключевых слова:

auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while

C99 добавляет пять новых:

_Bool
inline
_Complex
_Imaginary
restrict

Программа «Hello, World!»

Эта простая программа, появившаяся в первом издании книги «Язык программирования Си» Кернигана и Ритчи, обычно является первой программой большинства учебников Си. Она печатает сообщение «Hello, World!» на стандартном устройстве вывода (которым, как правило, является монитор (дисплей), но может быть и файл, какое-либо устройство или область в памяти, в зависимости от того, как отражается стандартное устройство вывода на данной платформе).

 main() {  printf("Hello, World!\n");  }

Несмотря на то, что на большинстве современных компиляторов эта программа может быть скомпилирована, она порождает несколько предупреждений на компиляторах стандарта ANSI C. Кроме того, этот код не будет компилироваться, если компилятор следует стандарту C99, так как в этом случае тип int больше не подразумевается для случаев, когда тип в результате функции не указан (а оформление функции main вообще описано отдельно). Эти сообщения можно убрать, если внести в эту программу несколько небольших изменений:

#include <stdio.h>
int main(void)
{
    printf("Hello, World!\n");
    return 0;
}

В первой строке программы расположена директива препроцессора #include, встретив которую, компилятор заменяет её на полный текст файла, на который она ссылается. В данном случае эта строка будет заменена стандартным заголовочным файлом stdio.h. Угловые скобки указывают компилятору искать файл stdio.h в каталоге стандартных заголовочных файлов.

Следующая строка является объявлением функции с именем main. Эта функция в программе Си является особенной, так как выполняется первой из написанных программистом при запуске программы. Слово int говорит, что функция main возвращает целое число. Фигурные скобки после функции main обозначают её определение.

Следующая строка «вызывает» функцию printf. Включаемый заголовочный файл stdio.h содержит информацию, описывающую то, как нужно вызывать эту функцию. В данном примере этой функции передаётся единственный аргумент, содержащий текстовую строку «Hello, World!\n». Последовательность \n транслируется в символ «новая строка», который при отображении соответственно обозначает разрыв строки. Функция printf возвращает значение типа int, которое возвращает число напечатанных символов (в этом примере возвращаемое значение игнорируется).

Выражение return заставляет программу прекратить выполнение функции (main в этом случае), возвращая вызвавшей функции значение, указанное после ключевого слова return (здесь 0). Так как текущая функция — это main, то вызывающим является код, который и запустил программу. Последняя фигурная скобка обозначает конец определения функции main. По стандарту C99, return 0 в main не обязательно (отсутствие return в main означает return 0;).

1 - 2 - 3 - 4


E-mail: programmirovanie@yandex.ru;
Руслан 2012 =)
Hosted by uCoz