C Tutorial
C is a general-purpose programming language, developed in 1972, and still quite popular.
C is very powerful; it has been used to develop operating systems, databases, applications, etc.
Examples in Each Chapter
Our «Try it Yourself» editor makes it easy to learn C. You can edit code and view the result in your browser:
Example
Click on the "Try it Yourself" button to see how it works.
We recommend reading this tutorial, in the sequence listed in the left menu.
C Exercises
C Quiz
Learn by taking a quiz! The quiz will give you a signal of how much you know about C.
My Learning
Track your progress with the free «My Learning» program here at W3Schools.
Log in to your account, and start earning points!
This is an optional feature. You can study W3Schools without using My Learning.
Learn by Examples
Learn by examples! This tutorial supplements all explanations with clarifying examples.
Уроки Сі
Сам по себе язык программирования Си многие считают устаревшим языком программирования. Несмотря на это, язык плотно и уже очень долго находиться в списке как один из наиболее популярных языков программирования в мире. И скажем сразу, язык из этого списка в ближайшее время никуда не уйдет.
Си язык программирования используется многими компаниями уже более 30 лет подряд. Си язык быстрее по скорости выполнения нежели все его конкуренты. На сегодняшний день ему конкуренцию составляет язык Golang, но язык программирования Си все равно быстрее даже его современного аналога. Такое происходит из-за процесса выполнения кода. Он выполняется практически на уровне процессора.
Сегодня язык Си используют не многие компании в качестве главного языка для создания какого-либо проекта. Это обусловлено тем, что существуют такие языки программирования, как: С++ , Java , C# и тому подобные, которые выполнять роль нужного языка куда лучше чем Си.
Язык Си реально стар, ведь появился еще в 1972 году. Как понимаете, разрабатывался он с учётом компьютеров того времени, а они были как современный калькулятор по функционалу. Если бы не постоянная поддержка языка, то язык давным давно бы умер и все бы о нём забыли. За счёт того что он постоянно развивается, то даже сейчас он не утратил сил и на нём вполне можно разрабатывать. Язык низкоуровневый, а значит имеет хороший отклик и быстрое выполнение.
Что интересно, то на основе языка Си создано огромное множество других языков. Существует термин: «Си-подобные языки программирования ». Этим определением обозначают языки программирования, что построены на базе Си языка. Это такие, как: C++, C#, D, Java, Objective C, PHP, Perl, Scala и еще сотни других.
Кстати, книг на темы: « с для чайников », « основы с », «С и с нуля » выпущено больше, нежели аналогичных книг по другим языкам вместе взято.
Так почему же язык всё равно популярен?
Язык был и будет популярным, ведь на его основе на сегодняшний день построено огромное множество проектов, которые требуют постоянной поддержки и соответсвенно специалистов. Кроме того, язык является хорошим языком и написав программу на нём вы получаете достаточно быструю в плане выполнения программу. Ну и конечно же, язык Си для многих является словно родителем других языков и многие, включая университеты, предпочитают начинать путь изучения именно с этого языка.
Это не глупо, ведь язык действительно повлиял на очень многие современные языки программирования и его принципы можно встретить практически во всех сегодняшних новомодных языках.
В общем, язык стоит изучить хотя бы по той причине, что он даёт базовое фундаментальное понимание принципов работы компьютера и языков программирования. В дальнейшем если вы захотите перейти на С++ , C# , Java или даже Python , вы всё равно найдёте очень много схожего и изучение следующего языка вам явно будет даваться проще. Поэтому если вы еще не решились изучать или нет Си, но при этом ещё с программированием не сталкивались, то наш вам совет — учите Си и данный курс вам как раз предоставит всё необходимое чтобы его изучить.
Эти знания вам ни раз пригодятся, а главное как гордо можно будет заявить: «Я начинал изучение еще с языка Си», — красота.
Установка необходимого
Для работы с языком потребуется установить среду разработки, в которой мы сможем писать код и выполнять его. Программ, которые подходят под эти нужды очень много, выделим несколько из них:
- Visual Studio ;
- Code::Blocks ;
- Xcode (только ПК Мак);
- Онлайн компилятор (представлен ниже на этой странице).
План курса
За курс мы познакомимся с языком программирования Си. Мы изучим язык Си с нуля для новичков. Вами будет изучен базовый синтаксис языка, а также некоторые сложные конструкции, по типу: структур данных, работы с файлами, работы с функциями и многое другое.
Программирование на c для начинающих изучается во многих университетах, поэтому в курсе будет много тонкостей связанных с основами Си.
К концу курса у вас будет достаточно знаний, чтобы создавать консольные проекты на языке Си.
Видеокурс для изучения языка Си с нуля
Язык Си был разработан в 70-е годы XX века Деннисом Ритчи, сотрудником исследовательского центра Bell Labs. Язык отличается несложным синтаксисом, возможностью писать код на низком уровне абстракции, а также компактным размером стандартной библиотеки. Поэтому на нём до сих пор пишут программы для микроконтроллеров, драйвера устройств, промышленное ПО и многое другое.
Чтобы вы смогли изучить Си с нуля, мы нашли интересный видеокурс на русском языке, подробно объясняющий основные конструкции и другие элементы языка. Автор видеоуроков в качестве рабочей среды использует ОС Ubuntu, компилятор GCC и редакторы кода Sublime Text и Visual Studio Code. Каждый видеоурок длится в среднем 25−30 минут, в течение которых подробно разбирается каждая тема. Курс ориентирован на тех, кто никогда не сталкивался с программированием.
Содержание курса
Автор приводит историю языка, объясняет некоторые базовые понятия и создаёт простейшую программу на Си.
В данном видео рассказывается о типах переменных (short, int, char, float, double, long, long long) и методах их создания.
В видеоролике говорится о том, как ввести и вывести через терминал значения переменных с помощью функций scanf() и printf() .
Escape-последовательности представляют собой сочетания символов, начинающиеся с косой черты и представляющие собой цифру или букву, например \n , \t . Автор рассказывает, какие escape-последовательности существуют, за что они отвечают и как используются в программе.
Видео посвящено разбору различных арифметических операций, принятых в языке.
В Си можно использовать составное присваивание значений, например, с помощью += , -= , *= и /= . В видео подробно разбираются эти конструкции, а также показывается их использование на примерах программ.
Автор рассказывает о том, чем отличаются глобальные и локальные переменные, а также знакомит с ключевыми словами extern и static .
В видео объясняется, как привести переменные к другим типам данных, например int к float .
Из видео вы узнаете, что такое массив, как его создать на языке Си и как выполнять действия с его элементами. Рассматривается только одномерный массив.
В видеоролике объясняется работа с многомерными массивами на примере двумерного.
В 11-м уроке автор рассказывает о том, что такое константа и как объявить её в коде.
Автор знакомит с ключевым словом enum и рассказывает, как с его помощью создавать собственные типы данных с помощью последовательностей констант.
Вы узнаете, какие существуют команды для препроцессора (компонента компилятора, подготавливающего код к компиляции), для чего нужна каждая из них и как применять команды на практике.
В видео рассказывается о сравнении значений переменных с помощью == , != , > , < , >= , <= .
В данном видеоуроке рассматриваются логические операции И && , ИЛИ || и НЕ ! .
Вы познакомитесь с тернарной операцией, которая представляет собой краткую запись if. else , например (a > b) ? a : b .
В 17-м уроке рассматривается конструкция if. else , позволяющая запустить определённый код в зависимости от того, выполнено требуемое условие или нет.
В видео рассмотрен оператор switch. case , с помощью которого в зависимости от поданного ключа можно выполнить нужный код.
Автор рассказывает о цикле for , позволяющем выполнить код внутри цикла при необходимых условиях требуемое количество раз.
Цикл while часто используется для перебора элементов и может повторяться сколько угодно раз. Цикл do. while отличается от while блоком do , код в котором вне зависимости от условия выполнится хотя бы один раз.
Вы изучите работу с оператором выхода из цикла break , перехода на следующую итерацию цикла continue , а также оператором перехода на определённое место в коде goto .
Здесь даётся введение в функции. Чтобы облегчить понимание, в видео рассматриваются функции без передачи параметров и аргументов. Также вы узнаете, что такое прототип функции.
В видеоуроке рассматривается передача аргументов в функции, а также возврат значений из функций.
В видео рассказывается о рекурсии — вызове функции из самой себя.
Вы узнаете, как с помощью команды терминала diff сравнить два файла с исходным кодом.
Вы научитесь разделять свою программу на несколько файлов с исходным кодом и использовать заголовочные файлы с расширением .h.
В видеоуроке всё внимание уделяется указателям — переменным, содержащим ссылку на другую переменную.
С помощью указателей можно напрямую изменять элементы в памяти. Поэтому с их помощью расширяются возможности функций.
Тема урока — создание и использование массивов указателей.
В этом видео автор рассказывает о вводе/выводе строк через терминал с использованием функций printf() , scanf() , fprintf() , fscanf() , gets() , puts() , fgets() , fputs() .
В видеоуроке разбираются функции объединения строк strcat() и strncat() .
Здесь уделяется внимание функции поиска в строке strstr() и функции сравнения строк strcmp() .
В видео рассматривается функция перевода из строки в число atoi() и функции перевода из числа в строку sprintf() и itoa() .
Автор объясняет, что такое структуры, а также как их создавать и объявлять.
В видеоуроке рассматривается использование указателей в структурах и объясняется, почему в структурах лучше оперировать указателями, чем массивами.
Здесь рассказывается о том, что такое указатели на структуры, на что они действительно указывают, а также объясняется, для чего нужен оператор -> .
В данном видеоуроке рассматривается чтение из файла, запись в файл и создание файла на языке Си. В видео демонстрируются кроссплатформенные методы работы с файлами, однако действия с файлами можно проводить и с помощью системных функций Linux.
Вы познакомитесь с функцией чтения из файла fread() и функцией записи в файл fwrite() .
Если при работе с файлами возникают ошибки, их можно обработать с помощью функций perror() и strerror() .
В видео автор разбирает создание псевдослучайных чисел с помощью функций srand(time(NULL)) и rand() и изменение границ множества случайных чисел.
В данном видеоуроке рассматривается использование быстрой сортировки qsort() (Quick Sort), уже встроенной в язык.
В последнем видео курса вы изучите несколько базовых функций системной библиотеки WinAPI, с помощью которых вы сможете реализовать MessageBox.
Дополнительные материалы
Чтобы быстро вникнуть в синтаксис языка, вы можете посмотреть часовое видео, в котором объясняются основы языка. В частности, в нём рассказывается о переменных, условных операторах, структурах, типах данных, арифметических операциях, функциях, циклах и многом другом.
Если видеоуроки не подходят для вас, вы можете ознакомиться с подборкой книг по языку Си и найти для себя подходящую. После изучения основ языка Си вы можете заглянуть в наш раздел с материалами по Си и смежным темам.