
Язык программирования C был разработан в середине 1970-х годов, но до сих пор считается матерью всех языков программирования. Он поддерживает несколько функций, а также достаточно мощный, чтобы напрямую взаимодействовать с аппаратными модулями и ядром. В этом учебнике по программированию на C рассматриваются,
- Краткая история языка программирования C
- Типы данных и переменные
- Первая программа на С
- Циклы в программировании на C
- Условные операторы в программировании на C
- Структуры данных в программировании на C
- Струны
- Функции
- Структура и союз
- Важные вопросы интервью
Краткая история языка программирования C

C разработан Деннисом Ритчи в 1972 году в Bell Laboratories (США). Это универсальный, структурированный, машинно-независимый, простой и гибкий язык программирования. В основном он разрабатывался как язык системного программирования для написания операционной системы.
Особенности языка программирования C
- Язык высокого уровня
C обеспечивает сильную абстракцию в случае своих библиотек и встроенных функций, которые делают его независимым от машины. Его возможностей достаточно для разработки системных приложений, таких как ядро, драйвер и т. д.
- Структурированный язык
Язык C поддерживает структурированное программирование, включающее использование функций. Функции уменьшают сложность кода и полностью допускают повторное использование.
- Богатая библиотека
В отличие от своих предшественников, язык C включает несколько встроенных арифметических и логических функций, а также множество встроенных библиотек, которые делают разработку быстрее и удобнее.
- Расширяемый
Язык C является языком высокого уровня и также открыт для обновлений. Таким образом, этот язык программирования считается расширяемым, как и любой другой язык высокого уровня.

- Рекурсия
Язык C поддерживает функцию возврата, которая включает рекурсию. В процессе рекурсии функция вызывается внутри другой функции несколько раз.
- Указатели
C позволяет пользователям напрямую взаимодействовать с памятью с помощью указателей. Мы используем указатели в памяти, структуре, функциях, массивах, стеке и многом другом.
- Быстрее
C Language поставляется с минимальным количеством библиотек и встроенных функций, что сокращает время компиляции и выполнения и снижает нагрузку на систему.
- Управление памятью
C обеспечивает лучшее в своем классе управление памятью. Он может динамически выделять и освобождать память. функции malloc(), calloc(), realloc() используются для динамического выделения памяти, а функция free() используется для освобождения используемой памяти в любой момент времени. .
Типы данных и переменные
Типы данных в C в целом подразделяются на четыре категории следующим образом.

Основные типы данных
Базовые типы данных считаются наиболее фундаментальными и основными типами данных, которые может предложить C. Типы данных, которые относятся к базовым типам данных, следующие.

Производные типы данных
Производный тип формируется с использованием комбинации одного или нескольких базовых типов. Это типы объектов, функции которых предопределены в библиотеках C.
Типы данных перечисления
Перечислимые типы данных используются для объявления интегральных констант на языке программирования C, чтобы имена интегральных констант было легко запомнить и поддерживать. Ключевое слово enum используется для объявления перечисляемых типов данных.
пример: enum plug{on = 1, off = 0};
Пустые типы данных
Тип данных void — это пустой тип данных, который используется в качестве возвращаемого типа для функций, которые не возвращают значения в C.
пример:
Переменные в C
Переменная определяется как зарезервированное пространство памяти, в котором хранится значение определенного типа данных. Значение переменной не является постоянным, вместо этого оно допускает изменения. В основном C поддерживает пять типов переменных.
- локальная переменная
- глобальная переменная
- статическая переменная
- автоматическая переменная
- внешняя переменная
Локальные переменные
Любая переменная, объявленная внутри блока кода или функции и имеющая область действия, ограниченную этим конкретным блоком кода или функцией, называется локальной переменной.
//Пример
void Edureka()
{
int Local_variable=10;
}
Глобальные переменные
Любая переменная, которая объявлена вне блока кода или функции и распространяется на всю программу и позволяет любой функции изменять свое значение, называется глобальной переменной.
//Пример
int Global_variable=10;
void Edureka()
{
int Local_variable=20; }
Статические переменные
Любая переменная, объявленная с использованием ключевого слова static, называется a. Статические переменные сохраняют объявленное значение на протяжении всего выполнения программы и не будут изменяться между несколькими вызовами функций.
//Пример
voidEdureka() { intLocal_variable =10;// staticintStatic_variable =10; Local_variable=Local_variable+1; Static_variable =Static_variable+1; printf("%d,%d",x,y); }
Автоматические переменные
Автоматические переменные могут быть объявлены с помощью ключевого слова auto. По умолчанию все переменные, объявленные на языке C, являются автоматическими переменными.
//Пример
voidmain() { intLocal_variable=10; //(automatic default) auto intauto=20; //(automatic variable) };
Внешние переменные
Внешние переменные объявляются с помощью ключевого слова extern. Мы можем совместно использовать переменную в нескольких исходных файлах C, используя внешнюю переменную.
//Пример
extern external=10;
Давайте выполним нашу первую программу на C.
Первая программа
В этом учебнике по программированию на C мы поймем основную структуру программы на C. Любая базовая программа на C состоит из следующих разделов.

- Директивы препроцессора
Директивы препроцессора объявляются в начале каждой программы на C специальным символом #. Они определяются как предопределенные функции или Макропрограммы, которые вызываются и компилируются компилятором C в процессе компиляции.
- Функции
Функции в программе C определяются как подпрограмма основной программы. Функции обеспечивают повторное использование кода и снижают сложность кода.
- Переменные
Переменная определяется как имя, объявленное для хранения значений в программе C. Каждая переменная, используемая в C, имеет определенный тип данных, который определяет размер и разметку памяти переменной.
- Утверждения и выражения
Операторы — это не что иное, как инструкции, которые мы предоставляем компьютеру для компиляции, а выражения, с другой стороны, считаются математическими или логическими операторами, которые приводят к результирующее значение.
- Комментарии
Комментарии — это сообщения, написанные разработчиком в коде для облегчения понимания логики кода, используемого при программировании. Комментарии не будут компилироваться компилятором. комментарии пишутся внутри // или /* */.
Давайте теперь выполним нашу первую программу Hello World.
#include<stdio.h> intmain(){ printf("Hello World"); return0; }
// Вывод
Hello World
Циклы в программировании на C
Циклы в C определяются как операторы программирования, предназначенные для выполнения определенного сегмента кода определенное количество раз или до тех пор, пока не будет выполнено определенное заданное условие. В языке C доступны в основном операторы с тремя циклами.
Цикл For
Цикл for в программировании на C – это оператор потока управления, который позволяет выполнять определенный сегмент кода за конечное число итераций. Цикл for имеет три аргумента, а именно переменную инициализации, переменную счетчика и переменную увеличения/уменьшения.

Блок-схема цикла for выглядит следующим образом:
//Пример
#include<stdio.h> intmain() { inti; for(i=1; i<=5; i++) { printf("%dn", i); } return0; }
//Вывод
Пока цикл
Цикл While в программировании на языке C — это оператор потока управления, который многократно выполняется до тех пор, пока не будет выполнено заданное логическое условие. Цикл while можно рассматривать как повторяющийся оператор If.
Блок-схема цикла for выглядит следующим образом:

//Пример
#include<stdio.h> intmain() { intcount=1; while(count<= 5) { printf("%d ", count); count++; } return0; }
//Вывод
12345
Цикл Do-While
Цикл Do While в программировании на C считается условным оператором, полностью похожим на обычный цикл While. Единственное отличие состоит в том, что в цикле Do While логическое/условное выражение помещается в конец цикла. Это приводит к тому, что цикл Do While выполняется хотя бы один раз.
Блок-схема цикла for выглядит следующим образом:

//Пример
#include<stdio.h> intmain() { intj=0; do { printf("Value of the variable j is: %dn", j); j++; }while(j<=5); return0; }
//Вывод
Value of the variable j is: 0
Value of the variable j is: 1
Value of the variable j is: 2
Value of the variable j is: 3
Value of the variable j is: 4
Value of the variable j is: 5
Условные операторы в программировании на C
Условные операторы на языке C могут быть определены как операторы программирования, которые предназначены для определения потока выполнения операторов программы по заданному математическому или логическому условию. Ниже приведены важные условные операторы в этом руководстве по программированию на C.
if
Инструкция If в языке C — это условная инструкция программирования, которая выполняет сегмент кода по условию, если оно истинно и допустимо. Ниже представлена блок-схема условия if.

//Пример
#include<stdio.h> intmain() { intnumber=0; printf("Enter a number:"); scanf("%d",&number); if(number%2==0){ printf("your number is %d and it is an even number",number); } return0; }
//Вывод
Enter a number:4
your number is 4 and it is an even number
иначе-если
Условный оператор Else If в языке C используется для выполнения одного оператора из двух. Условный оператор выполняет сегмент кода, если он истинен и действителен. Ниже представлена блок-схема условия иначе, если.

//Пример
#include<stdio.h> intmain() { intnumber=0; printf("enter a number:"); scanf("%d",&number); if(number%2==0) { printf("your number is %d and it is an even number",number); } else { printf("your number is %d and it is an odd number",number); } return0; }
//Вывод
Enter a number:5
your number is 5 and it is an odd number
строка "иначе если"
Лестница Else if в языке C представляет собой набор последовательных операторов Else-If, которые используются для выполнения одного истинного и действительного оператора из набора заданных операторов. Ниже приведена блок-схема условия иначе, если лестница.

#include<stdio.h> intmain() { intnumber=0; printf("enter a number:"); scanf("%d",&number); if(number==10) { printf("your inputted number is equals to 10"); } elseif(number==50) { printf("your inputted number is equal to 50"); } elseif(number==100) { printf("your inputted number is equal to 100"); } else { printf("your inputted number is not equal to 10, 50 or 100"); } return0; }
//Вывод
enter a number:5
your inputted number is not equal to 10, 50 or 100
Вложенный, если
Вложенный оператор If в языке C — это условный оператор, в котором один оператор Else-If встроен в другой оператор If. Ниже приведена блок-схема условия вложенного если.

//Пример
#include<stdio.h> intmain() { intv1, v2; printf("Enter the value of First variable :"); scanf("%d",&v1); printf("Enter the value of Second variable :"); scanf("%d",&v2); if(v1 != v2) { printf("First variable is not equal to Second variablen"); if(v1<v2) { printf("First variable is not equal to Second variablen"); } else { printf("Second variable is greater than First variablen"); } } else { printf("First variable is equal to Second variablen"); } return0; }
//Вывод:
Enter the value of First variable :12
Enter the value of Second variable :21
First variable is not equal to Second variable
Second variable is greater than First variable
Структуры данных в программировании на C
Структура данных может быть определена как набор значений данных, взаимосвязей между ними и функций, применяемых к данным. Они широко классифицируются следующим образом.
- Примитивные структуры данных / встроенные структуры данных
- Абстрактные структуры данных / определяемые пользователем структуры данных

Массивы
массив определяется как набор элементов данных аналогичного типа, хранящихся в смежных областях памяти. Массив — это простейшая структура данных, в которой к каждому элементу данных можно получить произвольный доступ, используя его порядковый номер.
Существует три различных типа массивов, а именно:
- Одномерный массив
- Двумерный массив
- Многомерный массив
Одномерный массив
Одномерный массив можно определить как массив с одной строкой и несколькими столбцами. Доступ к элементам в массиве 1D осуществляется с использованием их порядковых номеров.

int arrayone[10];
Двумерный массив
Двумерный массив может быть определен как массив массивов. Массив 2D организован как матрицы, которые можно представить как набор строк и столбцов. Доступ к элементам массива осуществляется по их координатам пересечения.

int arraytwo[10][5];
Многомерный массив
Многомерный массив может быть определен как массив массивов. Трехмерный массив организован как трехмерная матрица, которую можно представить как набор нескольких строк и столбцов. Доступ к элементам массива осуществляется с использованием их трехмерных координат пересечения.
int arraythree[10][10][10];
Связанные списки
Связанные списки представляют собой линейные структуры данных, аналогичные массивам, но с той лишь разницей, что элементы не сохраняются в последовательных ячейках памяти, вместо этого они хранятся в случайных адресах и связаны с помощью указателей.
- Односвязные списки
- Двусвязные списки
- Круговые связанные списки
Односвязный список
Односвязный список является альтернативой одномерному массиву. Элементы в односвязном списке хранятся в последовательном формате, но в разных местах памяти, которые взаимосвязаны друг с другом через указатели. Односвязные списки можно перемещать только в одном направлении.

Двухсвязный список
Двухсвязный список является альтернативой двумерному массиву. Элементы двусвязного списка хранятся в последовательном формате, но в разных местах памяти, которые взаимосвязаны друг с другом через указатели. Двусвязные списки можно просматривать в обоих направлениях.

Круговой связанный список
Циклический связанный список аналогичен односвязному списку. Но единственная разница в том, что указатель хвоста кругового связанного списка указывает обратно на голову.

Файлы
Основные методы работы с файлами в C предоставляют основные функции, которые пользователь может выполнять с файлами в системе.

- "r" — ищет файл. Если файл успешно открыт, fopen() загружает его в память и устанавливает указатель, который указывает на первый символ в нем. Если файл не может быть открыт, fopen() возвращает NULL.
- «w» — ищет файл. Если файл существует, его содержимое перезаписывается. Если файл не существует, создается новый файл. Возвращает NULL, если не удается открыть файл.
- "a" — ищет файл. Если файл успешно открыт, функция open() загружает его в память и устанавливает указатель, указывающий на последний символ в нем. Если файл не существует, создается новый файл. Возвращает NULL, если не удается открыть файл.
- "r+" — ищет файл. Он успешно открыт. open() загружает его в память и устанавливает указатель, указывающий на первый символ в нем. Возвращает NULL, если не удается открыть файл.
- «w+» — поиск файла. Если файл существует, его содержимое перезаписывается. Если файл не существует, создается новый файл. Возвращает NULL, если не удается открыть файл.
- "+" — ищет файл. Если файл успешно открыт, fopen() загружает его в память и устанавливает указатель, указывающий на последний символ в нем. Если файл не существует, создается новый файл. Возвращает NULL, если не удается открыть файл.
Стек
Стек — это линейная структура данных, которая следует определенному порядку выполнения операций. Порядок может быть LIFO (последним пришел, первым ушел) или FILO (первый пришел последним).

Очередь
Очередь – это линейная структура, которая следует определенному порядку выполнения операций. Порядок – «первым пришел – первым обслужен» (FIFO). Кроме того, C включает циклическую очередь.

График
Граф определяется как структура данных, представленная в графическом формате с использованием узлов и ребер. Есть три типа графиков, а именно.
- Неориентированные графы

- Направленные графики

- Направленные взвешенные графики

Граф на языке C обычно представляется в двух форматах следующим образом:
Например:

- Матрица смежности

- Список смежности

Струны
Строка определяется как одномерный массив символов, оканчивающийся нулевым символом. Массив символов или строка используются для хранения текста, такого как слова или предложения. Каждый символ в массиве занимает один байт памяти, а последний символ всегда должен быть равен 0.
Два типа строк:
- массив символов
- строковый литерал
Строковые функции, доступные на языке C, следующие:

//Пример
#include<stdio.h> #include<string.h> intmain( ) { intlen; chartext[10]="Edureka"; length = strlen(array) ; printf ( "string length is = %d n", length ) ; return0; }
//Вывод
string length is = 7
Функции
Функция может быть определена как часть основной программы, заключенная в цветочные скобки. Функции могут вызываться основной программой для реализации ее функциональности. Эта процедура обеспечивает повторное использование кода и модульность.
Два типа функций:
- Библиотечные функции
- Пользовательские функции
Преимущества функций
- Повторного написания одного и того же кода в программе можно избежать.
- Функции могут вызываться любое количество раз в программе.
- Легко отслеживать программу C, когда она разделена на несколько функций.
- Возможность повторного использования — главное достижение функций C.
Правила, которым необходимо следовать при использовании функций:
- Объявление функции
Функция должна быть объявлена как Global и иметь имя функции, параметры функции и тип возвращаемого значения. функции должны быть четко определены.
- Вызов функции
При вызове функции из любой точки программы следует следить за тем, чтобы тип данных в списке аргументов и количество элементов в списке аргументов совпадали.
- Определение функции
После того, как функция объявлена, важно, чтобы функция включала объявленные параметры, сегмент кода и возвращаемое значение.
- Четыре аспекта использования функций в программировании на C
- Функция без аргументов и без возвращаемого значения
- Функция без аргументов и с возвращаемым значением
- Функция с аргументами и без возвращаемого значения
- Функция с аргументами и с возвращаемым значением
Структура и союз
Структура
Структура — это определяемый пользователем тип данных, доступный в C, который позволяет объединять элементы данных разных типов вместе. Структуры используются для представления записи. struct – это ключевое слово, используемое для объявления структур.
//Пример
#include<stdio.h> struct Distance { intfeet; floatinch; } dist1, dist2, sum;intmain() { printf("1st distancen"); printf("Enter feet: "); scanf("%d",&dist1.feet); printf("Enter inch: "); scanf("%f",&dist1.inch); printf("2nd distancen"); printf("Enter feet: "); scanf("%d",&dist2.feet); printf("Enter inch: "); scanf("%f",&dist2.inch); sum.feet = dist1.feet + dist2.feet; sum.inch = dist1.inch + dist2.inch; while(sum.inch!= 12) { ++sum.feet; sum.inch = sum.inch - 12; } printf("Sum of distances = %d'-%.1f\"", sum.feet, sum.inch); return0; }
//Вывод
1st distance
Enter feet: 12
Enter inch: 7.9
2nd distance
Enter feet: 2
Enter inch: 9.8
Sum of distances = 15'-5.7"
Союз
объединение — это специальный тип данных, доступный в C, который позволяет хранить данные разных типов в одной и той же ячейке памяти. union – это ключевое слово, используемое для объявления союза.
//Пример
#include<stdio.h> union Employee { intId; charName[25]; intAge; longSalary; }; voidmain() { union Employee E; printf("nEnter Employee Id : "); scanf("%d",&E.Id); printf("nEnter Employee Name : "); scanf("%s",&E.Name); printf("nEnter Employee Age : "); scanf("%d",&E.Age); printf("nEnter Employee Salary : "); scanf("%ld",&E.Salary); printf("nnEmployee Id : %d",E.Id); printf("nEmployee Name : %s",E.Name); printf("nEmployee Age : %d",E.Age); printf("nEmployee Salary : %ld",E.Salary); }
//Вывод
Enter Employee Id : 102191
Enter Employee Name : Karan
Enter Employee Age : 29
Enter Employee Salary : 45000
Разница между структурой и объединением

На этом мы подошли к концу этой статьи «Учебник по программированию на C». Надеюсь, вы поняли важность структур данных, синтаксиса, функциональности и операций, выполняемых с их использованием.
Это все о базовой структуре программы C. Если вы хотите прочитать больше статей о самых популярных на рынке технологиях, таких как искусственный интеллект, DevOps, этический взлом, вы можете обратиться к официальному сайту Edureka.
Первоначально опубликовано на https://www.edureka.co 29 августа 2019 г.