+7 495 800–10–018 800 100–00–11
Программирование на языке C
Поделиться:

Программирование на языке C

Содержание

    Описание языка

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

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

    Структура

    Перечислим основные структурные элементы языка.

    Данные.

    1. Алфавит языка C включает 8-битные символы ASCII, среди которых мы выделяем буквы (AB ... Z, ab ... z) и цифры (0 1 ... 9). Символы с кодами 32-126 используются для написания текста программы, а символы 0-31 и выше 126 могут появляться только как элементы структур данных.
    2. Идентификаторы — Строки алфавита C, начинающиеся с буквы и содержащие впоследствии буквы или цифры, называются идентификаторами. По умолчанию компилятор анализирует первые 32 символа идентификатора, различая буквы верхнего и нижнего регистра. Идентификаторы используются для именования элементов, создаваемых разработчиком.
    3. Ключевые слова — в C некоторые идентификаторы зарезервированы. Это так называемые ключевые слова, которые нельзя использовать для именования элементов программы.
    4. Комментарии — текст между символами / * и * / и между парой символов // и концом строки не анализируется компилятором и используется для комментариев к программе.

    Основные типы данных

    Чтобы писать более функциональные программы - нужно знать переменные.

    Переменные

    Переменная — это программная конструкция с тремя основными атрибутами (символическим именем, местом хранения и значением), что позволяет ссылаться на значение или место хранения по имени в исходном коде.

    • Имя используется для идентификации переменной и поэтому часто упоминается как идентификатор.
    • Место хранения обычно находится в памяти компьютера и определяется адресом и длиной данных.
    • Значение — это содержимое места хранения.

    Переменная обычно также имеет четвертый атрибут: тип, определяющий тип данных, хранящихся в переменной. Место хранения — это выделенная область памяти, размер которой зависит от типа данных. Чтобы использовать переменные в программе, они должны быть сначала объявлены. Объявление переменной — резервирование в памяти определенного размера (в зависимости от типа данных и реализации C) и определенного имени. Ниже показана стандартная форма объявления:

    тип_список переменных

    Здесь тип должен быть корректным типом данных С, а список переменных может содержать одно или более имен идентификаторов, разделенных запятыми. Ниже показаны некоторые виды объявлений:

    1. int i, j, l;
    2. short int si;
    3. unsigned int ui;
    4. double balance, profit, loss.

    Помните, что в С имя переменной ничего не делает со своим типом.

    Каждая переменная объявляется согласно следующему правилу. Сначала мы вводим тип данных, затем уникальное имя, за исключением зарезервированных ключевых слов. Переменные одного типа также можно объявить, разделив их знаком запятой (,). Например, int a, x, y;

    Переменные можно инициализировать при объявлении, указав значение переменной или выражение.

    Например,

    int a = 1024;
    double b (1,6180339887);
    char c $;
    double d = b + a.

    Знак = является оператором присваивания, т.е. переменная слева присваивает значение (выражение) справа. Второй тип инициализации переменной заключается в использовании круглых скобок (), например, double b (.1.6180339887). Третий метод инициализации — использование фигурных скобок {}, например char c $.

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

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

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

    alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t, char32_t, class, Compl, const, constexpr, const_cast, continue, decltype, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, или or_eq, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq

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

    C — это язык программирования с учетом регистра. Это означает, что переменная, записанная в верхнем регистре, отличается от переменной с тем же именем, записанной в нижнем регистре. Например, РЕЗУЛЬТАТ — это не то же самое, что Результат или результат. Это три разные переменные.

    Чтобы отобразить значение переменной x на экране, достаточно использовать инструкцию:

    cout << x.

    Значения переменных хранятся в памяти компьютера как последовательность нулей и единиц. Нашей программе не нужно знать точное место в памяти, где хранятся переменные (используя указатели, мы точно знаем, где наша переменная находится в памяти). Программа обращается к имени переменной, и этого достаточно. Программа должна знать, какие данные хранятся в переменной. Это не то же самое, что хранить целые числа, символы или большие (действительные) числа с плавающей запятой. Эти переменные интерпретируются по-разному и могут занимать разный объем памяти.

    Базовые типы данных — это базовые типы, непосредственно реализованные в C. Они делятся на:

    • Типы символов — могут представлять собой один символ «A», «z». Самый простой символьный тип — это char, которому для хранения данных требуется от 1 байт до 8 бит.
    • Целочисленные типы — могут содержать целочисленные значения, такие как 23, 2048. Целочисленные типы существуют в разных размерах и могут быть знаковыми и беззнаковыми, в зависимости от того, поддерживают ли они отрицательные значения или нет.
    • Типы с плавающей запятой — представляют реальные значения, такие как, например, 1.618033, 3.141592, с разной точностью в зависимости от одного из трех выбранных типов с плавающей запятой.
    • Тип bool — этот тип может представлять только два состояния: истинное или ложное.

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

    const [constant_type] constantname = value.

    Примеры:

    const float pi = 3,1415;

    const double gold_number = 1.6180339887;

    const int увеличение = 198.

    Константа является постоянной (неизменной) на протяжении всего времени существования программы.

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

    Мы уже знаем понятие переменных и констант и можем работать с ними, используя операторы, которые имеют следующий вид: Оператор присваивания (=). Например, x = 10.

    Переменной x присваивается значение 10. Оператор присваивания работает справа налево, т.е. переменной слева присваивается значение или выражение справа. Пример: х = у;

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

    Пример кода: у = 2 + (х = 5 ).

    В этом операторе переменной y присваивается значение выражения 2 + (x = 5). Здесь мы сталкиваемся с другим оператором присваивания x = 5. Приведенный выше оператор эквивалентен записи:

    x = 5 ;
    у = 2 + х.

    Значением переменной y является число 7.

    Арифметические операторы (+, -, *, /,%)

    Основные операторы:

    • "+" - добавление
    • "-" - вычитание
    • "*" - умножение
    • "/" - разделение
    • "%" - по модулю

    Операции сложения, вычитания, умножения и деления соответствуют математическим операциям. Однако последний оператор % возвращает остаток от деления, например,
    x = 16%3 возвращает 1, потому что 16/3 = 5 с остатком 1.

    Операторы комплексного присваивания (+ =, - =, * =, / =,% =, >> =, << =, & =, ^ =, | =)

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

    у + = х; у = у + х;

    х - = 5; х = х - 5;

    у * = 3; у = у * 3;
    х / = 12; х = х / 12;

    Операторы увеличения и уменьшения

    Некоторые операторы можно записать короче с помощью оператора ++ (приращение) или - (декремент). Это эквивалентно записи + = 1 или - = 1.

    Примеры кода:

    ++ x;

    х + = 1;
    х = х + 1.

    Вышеупомянутые операторы эквивалентны, и каждый из них увеличивает значение переменной x на 1.

    Обратите внимание! Особенностью этих операторов является то, что они могут иметь префикс (++ x) или постфикс (x ++). Однако эти две записи имеют разное значение.

    Пример:

    х = 3;
    у = ++ х;
    // x = 4, y = 4 х = 3;
    у = х ++;
    // x = 4, y = 3

    Операторы сравнения (== ,! =,>, <,> =, <=)

    Два выражения можно сравнивать друг с другом с помощью операторов сравнения

    "==" - равное
    "знак равно" - разное
    "<" - меньше чем
    ">" - больше чем
    "<=" - меньше или равно
    "> =" - больше или равно

    Примеры:

    (7 == 5) — ложное выражение
    (5 > 4) — правдивое выражение
    (3 != 2) — правдивое выражение
    (6 >= 6) — правдивое выражение
    (5 < 5) — ложное выражение

    Конечно, сравнивать можно не только числовые значения, но также выражения и переменные. Предположим, что a = 2, b = 3, c = 6:

    (A == 5) — ложное выражение, потому что не равно 5;
    (A * B> = C) — истинное выражение, потому что выражение (2 * 3> = 6) верно;
    (B + 4> A * C) — ложное выражение, потому что (3 + 4> 2 * 6) является арифметически неверным;
    ((B = 2) == а) — реальное выражение.

    Оператор присваивания (=) отличается от оператора сравнения (==).

    Логические операторы (!, &&, ||)

    Оператор ! означает отрицание. Он имеет только один операнд справа, и меняет значение выражения с истинного на ложное и наоборот.

    ! (5 == 5) — ложное выражение, потому что выражение справа верно;
    ! (6 <= 4) — реальное выражение, потому что выражение (6 <= 4) является ложным;
    ! истина — ложное выражение;
    ! false — верное выражение.

    При использовании логических операторов C выполняет только необходимые операции, игнорируя остальные. Например, ((5 == 5) || (3 > 6))

    Компилятор C проверяет значение выражения (5 == 5), и ему больше не нужно проверять значение следующего выражения, поскольку первое выражение истинно.

    "&&" - Если выражение слева ложно, все ложно (тогда выражение справа не проверяется)
    "||" - Если выражение слева истинно, то истинно все (тогда выражение справа не проверяется)

    Рассмотрим следующий пример:

    if ((i <10) && (++ i <n))

    Мы видим, что операнд справа (++ i <n) увеличивает значение переменной i, но при условие, что значение слева является истинным. В противном случае операнд справа никогда не будет выполнен.

    Какие операции возможны?

    Дизайн языка предполагает, что никакая особенность языка C, новая для языка C, не может отрицательно повлиять на скорость работы программы или потребность в оперативной памяти. В результате хорошо написанная программа на C обычно работает так же быстро, как ее аналог на C. Более того, благодаря возможности использования общих алгоритмов, во многих случаях C намного быстрее, чем C (например, при сортировке). Язык C из-за его обширного синтаксиса и строгих требований к производительности кода является большой проблемой для авторов компиляторов. До сегодняшнего дня (2020 г.) ни один популярный компилятор не был полностью совместим с применимым языковым стандартом, хотя возможные несоответствия касались только второстепенных функций языка (например, реализации ключевого слова export).

    Преимущества использования

    1. Он очень популярен, что дает большую поддержку. Решения многих проблем программирования предоставляются в библиотеках или могут быть найдены на онлайн-форумах.
    2. Это мощный и универсальный инструмент, который можно использовать во многих областях, связанных с программированием, включая программирование низкого уровня.
    3. Он портативный.
    4. Существуют компиляторы C, предназначенные для самых популярных операционных систем.
    5. Это язык, скомпилированный в машинный код, поэтому он часто работает быстрее, чем языки, интерпретируемые или скомпилированные в промежуточный код.
    6. Многие языки программирования основаны на C (например, Java), поэтому знание C облегчит понимание этих языков.
    7. Доступно множество открытых библиотек.

    C — это мультипарадигмальный язык. Это означает, что он может одновременно использовать различные стили программирования, включая процедурное, объектно-ориентированное и универсальное программирование, а также программирование на уровне ассемблера. C предполагает статическую проверку типов; в нем также есть элементы проверки динамического типа.

    Оставить заявку на обучение

    Или позвоните по телефонам
    +7 495 800–10–018 800 100–00–11
    Позвонить

    Подобрать программу и поступить

    Вы действительно хотите прервать оформление заявки на консультацию?

    Если у вас возникли вопросы, перейдите в WhatsApp, и задайте вопрос специалисту приемной комиссии:

    Перейти в мессенджер
    Университет Синергия
    Университет Университет Синергия
    г. Москва, просп. Ленинградский, д. 80 корп.Е, Ж, Г
    +7 495 800–10–018 800 100–00–11
    Общая:
    Приёмная комиссия ежедневно с 11:00 до 19:00
    DMCA.com Protection Status