Язык программирования 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. Статические переменные сохраняют объявленное значение на протяжении всего выполнения программы и не будут изменяться между несколькими вызовами функций.

//Пример

void Edureka()
{
int Local_variable =10;//
static int Static_variable =10;
Local_variable=Local_variable+1;
Static_variable =Static_variable+1;
printf("%d,%d",x,y);
}

Автоматические переменные

Автоматические переменные могут быть объявлены с помощью ключевого слова auto. По умолчанию все переменные, объявленные на языке C, являются автоматическими переменными.

//Пример

void main()
{
    int Local_variable=10;  //(automatic default)
    auto int auto=20;   //(automatic variable)
};

Внешние переменные

Внешние переменные объявляются с помощью ключевого слова extern. Мы можем совместно использовать переменную в нескольких исходных файлах C, используя внешнюю переменную.

//Пример

extern external=10;

Давайте выполним нашу первую программу на C.

Первая программа

В этом учебнике по программированию на C мы поймем основную структуру программы на C. Любая базовая программа на C состоит из следующих разделов.

  • Директивы препроцессора

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

  • Функции

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

  • Переменные

Переменная определяется как имя, объявленное для хранения значений в программе C. Каждая переменная, используемая в C, имеет определенный тип данных, который определяет размер и разметку памяти переменной.

  • Утверждения и выражения

Операторы — это не что иное, как инструкции, которые мы предоставляем компьютеру для компиляции, а выражения, с другой стороны, считаются математическими или логическими операторами, которые приводят к результирующее значение.

  • Комментарии

Комментарии — это сообщения, написанные разработчиком в коде для облегчения понимания логики кода, используемого при программировании. Комментарии не будут компилироваться компилятором. комментарии пишутся внутри // или /* */.

Давайте теперь выполним нашу первую программу Hello World.

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

// Вывод

Hello World

Циклы в программировании на C

Циклы в C определяются как операторы программирования, предназначенные для выполнения определенного сегмента кода определенное количество раз или до тех пор, пока не будет выполнено определенное заданное условие. В языке C доступны в основном операторы с тремя циклами.

Цикл For

Цикл for в программировании на C – это оператор потока управления, который позволяет выполнять определенный сегмент кода за конечное число итераций. Цикл for имеет три аргумента, а именно переменную инициализации, переменную счетчика и переменную увеличения/уменьшения.

Блок-схема цикла for выглядит следующим образом:

//Пример

#include<stdio.h>
int main()
{
int i;
for (i=1; i<=5; i++)
{
printf("%dn", i);
}
return 0;
}

//Вывод

Пока цикл

Цикл While в программировании на языке C — это оператор потока управления, который многократно выполняется до тех пор, пока не будет выполнено заданное логическое условие. Цикл while можно рассматривать как повторяющийся оператор If.

Блок-схема цикла for выглядит следующим образом:

//Пример

#include<stdio.h>
int main()
{
int count=1;
while (count<= 5)
{
printf("%d ", count);
count++;
}
return 0;
}

//Вывод

12345

Цикл Do-While

Цикл Do While в программировании на C считается условным оператором, полностью похожим на обычный цикл While. Единственное отличие состоит в том, что в цикле Do While логическое/условное выражение помещается в конец цикла. Это приводит к тому, что цикл Do While выполняется хотя бы один раз.

Блок-схема цикла for выглядит следующим образом:

//Пример

#include<stdio.h>
int main()
{
int j=0;
do
{
printf("Value of the variable j is: %dn", j);
j++;
}while (j<=5);
return 0;
}

//Вывод

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>
int main()
{
int number=0;
printf("Enter a number:");
scanf("%d",&number);
if(number%2==0){
printf("your number is %d and it is an even number",number);
}
return 0;
}

//Вывод

Enter a number:4
your number is 4 and it is an even number

иначе-если

Условный оператор Else If в языке C используется для выполнения одного оператора из двух. Условный оператор выполняет сегмент кода, если он истинен и действителен. Ниже представлена блок-схема условия иначе, если.

//Пример

#include<stdio.h>
int main()
{
int number=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);
}
return 0;
}

//Вывод

Enter a number:5
your number is 5 and it is an odd number

строка "иначе если"

Лестница Else if в языке C представляет собой набор последовательных операторов Else-If, которые используются для выполнения одного истинного и действительного оператора из набора заданных операторов. Ниже приведена блок-схема условия иначе, если лестница.

#include<stdio.h>
int main()
{
int number=0;
printf("enter a number:");
scanf("%d",&number);
if(number==10)
{
printf("your inputted number is equals to 10");
}
else if(number==50)
{
printf("your inputted number is equal to 50");
}
else if(number==100)
{
printf("your inputted number is equal to 100");
}
else
{
printf("your inputted number is not equal to 10, 50 or 100");
}
return 0;
}

//Вывод

enter a number:5
your inputted number is not equal to 10, 50 or 100

Вложенный, если

Вложенный оператор If в языке C — это условный оператор, в котором один оператор Else-If встроен в другой оператор If. Ниже приведена блок-схема условия вложенного если.

//Пример

#include<stdio.h>
int main()
{
int v1, 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");
}
return 0;
}

//Вывод:

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>
int main( )
{
int len;
char text[10]="Edureka" ;
length = strlen(array) ;
printf ( "string length is = %d n" , length ) ;
return 0;
}

//Вывод

string length is = 7

Функции

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

Два типа функций:

  • Библиотечные функции
  • Пользовательские функции

Преимущества функций

  • Повторного написания одного и того же кода в программе можно избежать.
  • Функции могут вызываться любое количество раз в программе.
  • Легко отслеживать программу C, когда она разделена на несколько функций.
  • Возможность повторного использования — главное достижение функций C.

Правила, которым необходимо следовать при использовании функций:

  • Объявление функции

Функция должна быть объявлена как Global и иметь имя функции, параметры функции и тип возвращаемого значения. функции должны быть четко определены.

  • Вызов функции

При вызове функции из любой точки программы следует следить за тем, чтобы тип данных в списке аргументов и количество элементов в списке аргументов совпадали.

  • Определение функции

После того, как функция объявлена, важно, чтобы функция включала объявленные параметры, сегмент кода и возвращаемое значение.

  • Четыре аспекта использования функций в программировании на C
  • Функция без аргументов и без возвращаемого значения
  • Функция без аргументов и с возвращаемым значением
  • Функция с аргументами и без возвращаемого значения
  • Функция с аргументами и с возвращаемым значением

Структура и союз

Структура

Структура — это определяемый пользователем тип данных, доступный в C, который позволяет объединять элементы данных разных типов вместе. Структуры используются для представления записи. struct – это ключевое слово, используемое для объявления структур.

//Пример

#include<stdio.h>
struct Distance
{
int feet;
float inch;
} dist1, dist2, sum;
int main()
{
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);
return 0;
}

//Вывод

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
{
int Id;
char Name[25];
int Age;
long Salary;
};
void main()
{
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.

1. Базовая структура программы на языке Си

2. Ряд Фибоначчи в C

3. Как скомпилировать программу на C в командной строке

4. Учебник по программированию на C

Первоначально опубликовано на https://www.edureka.co 29 августа 2019 г.