+7 (499) 288-06-73

Скопировать

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

21.11.2022
#

Язык С существует уже 50 лет и до сих пор не теряет своей актуальности. Он применяется для создания операционных систем и прикладного программного обеспечения. Синтаксис Си лег в основу многих структурных и объектно ориентированных языков программирования следующих поколений - от C++ до Java и Python. Именно поэтому С - отличная база для изучения принципов разработки ПО.

Особенности языка C

  1. Сочетание высокоуровневых и низкоуровневых черт.
    Большинство команд на Си пишутся простым, человекопонятным языком. В то же время он может обрабатывать и команды низкого уровня, близкие к машинному языку.
  2. Применимость для любых платформ.
    Компилятор С можно поставить практически на любой процессор. Поэтому код на этом языке легко переносится между устройствами.
  3. Широкое распространение.
    Учитывая ответвления Си в виде C++ и С# можно утверждать, что С - самый популярный язык для разработки программного обеспечения. На нем пишутся операционные системы, корпоративные приложения и даже игры.
  4. Быстрота и гибкость.
    Сейчас программы на Си, несмотря на компилируемость, фактически не уступают в скорости программам, написанных на машинных языках высокого уровня.

История создания

Си - детище американского программиста Денниса Ритчи и его команды. Первая публичная версия языка была выпущена в 1972, но сама разработка началась несколькими годами ранее. Язык изначально не был заказан какой-либо компанией для определенных целей. Основным предназначением С на первоначальных этапах стало создание программного обеспечения для новой тогда операционной системы UNIX.

Первые официально задокументированные стандарты С вышли только в 80-х годах. Примерно в то же время Бьерн Страуструп начал работу над ответвлением Си, которое бы учитывало принципы объектно-ориентированного программирования. Новый язык был сначала назван “C с классами”, а позже был переименован в известный всем C++.

Где применяется C

По сути, Си применим во всех сферах, связанных с программированием. На нем можно создать ПО под любую известную ОС - Linux, Windows, MacOS и пр. Но из-за легкости создания компилятора С также часто используется для создания собственных операционок под новые устройства.

Отличия C, C++ и C#

#

Несмотря на общее название, рассматриваемые языки значительно отличаются. Роднит их в основном схожий синтаксис. Подходы к обработке данных у них разные.

Классический С предполагает процедурный процесс и лучше всего подходит для создания новых ОС или драйверов.

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

C# также поддерживает принципы ООП. Этот язык разработан компанией Microsoft и предназначен для работы с платформой .NET Framework.

Сейчас большинство пользовательских приложений пишутся на C++ или C#. Иногда эти языки становятся частью специализированных платформ. Например, на C# основывается известная среда для создания игр Unity, а на С++ базируется игровой движок Unreal Engine.

Основные понятия и функции

Разберем на примерах, как строятся базовые алгоритмы в СИ и как выглядит синтаксис языка.

Объявление переменных

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

  • int - целое число, занимающее 4 байта;
  • short int - целое число, занимающее 2 байта;
  • long int - целое число, занимающее 8 байт;
  • char - текстовая переменная;
  • float - дробное число, занимающее 4 байта;
  • double - дробное число, занимающее 8 байт;
  • int x [20] - целочисленный массив из 20 элементов;
  • struct {int x; char y;} str_name - структура, состоящая из целых чисел и текстовых символов.

Объявляется переменная просто:

int x = 10

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

float x, y, z;
x=2,5:
y=3,6.

Внешние файлы

Для корректной работы некоторых функций в программах на Си перед написанием основного кода необходимо вызвать подключение внешних библиотек. Сделать это можно через команду #include. Так, одна из самых популярных библиотек, отвечающая за ввод и вывод данных, вызывается строкой #include <stdio.h>.

Комментарии

Чтобы закомментировать строку, в начале и конце нужно поставить соответственно знаки /* и */. Компилятор не учитывает текст, размещенный внутри этих операторов. Комментарий имеет значение только для разработчика.

Ввод и вывод информации

Ввести пользовательские данные в программу можно через команду scanf. За вывод запрашиваемых данных на экран отвечает команда printf.

Рассмотрим самый базовый пример вывода строки на экран.

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

Здесь строка void main обозначает главную функцию, то есть формальное начало программы. Строка return 0 означает завершение функции.

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

Разберем также пример программы с вводом данных с клавиатуры.

#include <stdio.h>

int main()
{
  int x;

  printf( "Введите целое число: " );
  scanf("%d", &x );
  printf( "Ваше число  %d", x );
  return 0;
}
#

Символ %d означает, что с консоли должно быть принято целое число. Запись &x приказывает программе записать введенное число в переменную x, которая была заранее объявлена в начале программы.

Чтобы ввести и вывести на экран не число, а текст, нужно применить символьный массив char.

#include <stdio.h>

void main()
{
char name[21];
/* символьный массив с определенным количеством знаков */
  printf( "Введите ваше имя: " );
  scanf( "%s", name );
  printf( "Здравствуйте, %s", name );
  return 0;
}
#

Оператор “Если”

Чтобы программа проверила какое-либо условие и в зависимости от его исполнения или неисполнения совершила конкретные действия, необходимо использовать оператор if.

Рассмотрим пример.

#include <stdio.h>

void main() {
    int x;
    int y = 21;
    printf("Введите ваш номер: ");
    scanf("%d", &x);
    if (x>y) {
        printf("Ваш номер выше y");
    /*если условие не соблюдается, выводим другое сообщение*/
    } else {
        printf("Ваш номер ниже y");
    }
 return 0;
}
#

Здесь мы сравниваем введенное с клавиатуры число с заранее заданным значением и выводим на экран определенную надпись, в зависимости от результатов сравнения.

Оператор множественного выбора

Оператор switch применяется, если нам нужно выбрать больше, чем из двух вариантов.

Допустим, у нас есть пять маршрутов из точки А в точку Б, каждый из которых занимает разное время в пути. Выведем на экран время поездки в минутах в зависимости от номера маршрута.

#include <stdio.h>
 
int main() {
    int number;
 
    printf("Введите номер маршрута ");
    scanf("%d", &number);
  
  switch (number) {
    case 1:
        printf("25 мин");
        break;
    case 2:
        printf("28 мин");
        break;
    case 3:
        printf("30 мин");
        break;
    case 4:
        printf("35 мин");
        break;
    case 5:
        printf("37 мин");
        break;
    default:
        printf("Номер не найден");
    }
}
#

Команда break останавливает проверку при соответствии введенных данных заданному условию. Команда default срабатывает, если введенное значение не подходит ни к одному из условий.

Цикл For

Оператор For включает в себя три условия:

  • изначальное значение переменной;
  • значения, при которых цикл продолжает выполняться;
  • способ обновления переменной.

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

Для примера напишем короткую программу, которая выводит на экран в обратном порядке числа от 1 до 10.

#include <stdio.h>

int main()
{
  int y;

  for ( y = 10; y > 0; y-=1){
    printf( "%d\n", y );
  }
}

Пока y больше нуля, от изначального значения 10 на каждом шагу цикла отнимается единица.

Циклы While и Do while

Оператор while схож с For. Он проверяет заданное условие и выполняет указанное действие над переменной, пока условие верно.

#include <stdio.h>

int main()
{
  int y;
  while (y <= 10){
    printf("%d\n",y*y);
    y++;
  }
  return 0;
}
#

Оператор Do while сначала выполняет действие, а потом проверяет условие

#include <stdio.h>

int main()
{
  int y;
y = 0;
do {
    printf("%d\n", y);
   y++;
} while(y < 15);
 return 0;
}
#

Функции

Функции делают код компактнее и рациональнее. С их помощью можно вызывать конкретные команды, не прописывая их каждый раз повторно. Main(), по сути, также является функцией, в которой просто прописывается основная программа.

Напишем простейший пример из двух функций, вычисляющих сумму и произведение заданных пользователем чисел.

#include <stdio.h>

int add ( int x, int y )
{
  return x+y;
}
int mpl ( int x, int y )
{
  return x *y;
}
int main()
{
  int a;
  int b;

  printf( "Введите два числа:  " );
  scanf( "%d", &a );
  scanf( "%d", &b );
  printf( "Сумма  введенных чисел составляет %d\n" , add( a,  b));
  printf( "Произведение введенных чисел составляет %d\n" ,mpl( a,  b));
return 0;
}
#

Как видно из примера, функции, используемые в основной программе, могут быть прописаны до объявления main().

У каждой функции обязательно должны быть:

  • название;
  • тип используемых переменных;
  • аргументы;
  • тело, в котором прописываются действия и алгоритмы.

Функции можно использовать внутри других функций - главное, вовремя их инициализировать.

Заключение

Язык С - основа для многих операционных систем и прикладных программ. На его синтаксисе базируется целое семейство C - подобных языков. Знание основных операторов и алгоритмов Си помогает осваивать различные инструменты программирования - от C++ до Swift и Ruby.

За счет легкой адаптируемости и высокой скорости обработки данных С часто применяется на аппаратных устройствах, на которых невозможно поставить популярные “тяжелые” операционные системы.

Разработка игр и мобильных приложений
Разработка игр и мобильных приложений info@app-android.ru
Остаповский проезд, д. 5
Москва
Москва 109316
Phone: +7 (499) 380-78-79
Разработка игр и мобильных приложений
info@app-android.ru
Остаповский проезд, д. 5
Москва, Москва, 109316 Россия
+7 (499) 288-06-73
Разработка игр и мобильных приложений