Coder Social home page Coder Social logo

c-help's Introduction

c-help

Дисклеймер: практически все необходимые алгоритмы уже кем-то придуманы и описаны, с помощью google и stackoverflow можно найти решение задач практически любой сложности и фактически это самый важный в разработке инструмент. Главное запомнить основный систаксис и функции языка.

1. Главная функция:

int main() {
    return 0;
}

Запуск программы всегда начинается с функции main(). return это функция возрата, в данном случае после завершения функции main() возращается нуль, туда без проблем можно поставить любое число, но в программировании принято возвращать что-то отличное от нуля только в случае возникнования ошибок, например код ошибки.

2. Переменные:

int a = 4;
float b = 5.0;
char c = 'g';

Объявление переменный (ее создание) начинается с типа данных, вроде int (целые числа), float (числа с плавающей запятой) или char (символы по таблице ANCII), далее ее название, и при необходимости значение.

Основная задача переменных хранить значения, которые можно использовать при вычислениях, выводе на экран или в функции return:

int main() {
    int a = 10;
    return a;
}

3. Комментарии:

Комментарии крайне полезная вещь при разработки программ, например с их помощью можно описать как работает сложный алгоритм. Компилятор их полностью игноирует, они нужны только для тех кто пишет код:

//Строчный комментарий, игноируется все что после двойного слэша
/* Многострочный комментарий, игноируется все что между слэшем со звездой, его необходимо всегда закрывавть */

4 Арифметические выражения:

Си поддерживает множество привычных арифметических операций от обычного сложения до деления с остатком. Основные операции:

int main() {
    int a = 19;
    int b = 11;
    int c = 7;
    
    int result;
    
    result = a + b; // сложение
    printf("Result sum: %d\n", result); //%d это обозначение формата целых чисел, необходимую букву можно найти в таблице по ссылке типы данных. \n переход на следующую строку. 
    
    result = a - b; // вычитание
    printf("Result sub: %d\n", result);
    
    result = a * b; // умножениее
    printf("Result mul: %d\n", result);
    
    result = a / b; // деление, важно чтобы получить дродь, необходимо использовать тип данных float или double, при int всегда результат округляется в меньшуу сторону т.е. при 9.99 получим 9
    printf("Result div: %d\n", result);
    float result2 = (float)a / (float)b; //(float) это преобразование типа, т.е. целочисленный тип преобразуется в тип с плавающей запятой далее происходит деление
    printf("Result div 2%f\n", result2); // не забываем поменять %d на %f
    
    result = a % b; // остаток от деления
    printf("Result mod: %d\n", result);
    
    //си так же не игноирует порядок действий, т.е. сначала будут вычисляться умножение и деление, тольео потом сложение и вычитаение.
    result = a + b * c;
    printf("Result: %d", result);
    
    return 0;
}

Результат кода:

Result sum: 30
Result sub: 8
Result mul: 209
Result div: 1
Result div 21.727273
Result mod: 8
Result: 96

5. Массивы:

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

// создание массива
int m[50];

// создание переменных
int m0;
int m1;
int m2;
int m3;
int m4;
int m5;
int m6;
...
int m47;
int m48;
int m49;

Кажный элемент массива имеет свой индекс, исчисление всегда начинается с нуля.

Далее с массивом можно работать как с обычными переменными, например:

int main() {
    int m[50];
    m[4] = 19;
    m[10] = 11;
    m[40] = 7;
    
    int result;
    
    result = m[4] + m[10];
    printf("Result sum: %d\n", result);
    result = m[10] - m[40];
    printf("Result sub: %d\n", result);
    
    return 0;
}

Результат:

Result sum: 30
Result sub: 4

Так же с массивы в отличии от переменных можно использовать в перечислениях с помощью цикла (пт 7).

6. Условия:

Условия принимают на вход выражения результат которых должен быть true (правда) или false (ложь). Например: 50 > 10? Больше (т.е. правда), следовательно условие верно:

int main() {
    if(50 > 10){
        printf("Правда");
    }
    return 0;
}

Результат:

Правда

Так же оператор if позволяет выполнять код в случаях, когда выражение ложно, с помощью конструкции else (иначе), заменим больше на меньше:

int main() {
    if(50 < 10){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    return 0;
}

Результат:

Ложь

В си всего 6 операторов сравнения:

Оператор Описание
< Первый операнд меньше второго
> Первый операнд больше второго
<= Первый операнд меньше или равен второму
>= Первый операнд больше или равен второму
== Первый операнд равен второму
!= Первый операнд не равен второму

Пример:

int main() {
    int a = 40;
    int b = 50;
    
    printf("Условие 1 - ");
    if(a > b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    printf("\nУсловие 2 - ");
    if(a < b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    printf("\nУсловие 3 - ");
    if(a >= b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    printf("\nУсловие 4 - ");
    if(a <= b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    printf("\nУсловие 5 - ");
    if(a == b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    printf("\nУсловие 6 - ");
    if(a != b){
        printf("Правда");
    } else {
        printf("Ложь");
    }
    
    return 0;
}

Результат:

Условие 1 - Ложь
Условие 2 - Правда
Условие 3 - Ложь
Условие 4 - Правда
Условие 5 - Ложь
Условие 6 - Правда

Помимо оператов сравнения, if поддерживает операторы И(&&) и ИЛИ(||), важно не забывать ставить скобки, так же как с арифметическими операторами тут есть ранги, компилятор сначала вычисляет И потом ИЛИ. Пример:

int main() {
    int a = 40;
    int b = 50;
    int c = 40;
    int d = 20;
    
    // a больше b и при этом a равен c или половина c равна d
    if ((a > b && a == c) || c/2 == d) {
        /*
            a > b - ложь
            a == c - правда
            между словиями стоит И, оператор И требует правды от всех условий, следовательно в первой скобке ложь
            половина c == d - правда
            между скобкой и c/2 == d оператор ИЛИ, он требует правды хотя бы от одного условия, следовательно общий результат правда
        */
    
        printf("Правда\n");
    } else {
        printf("Ложь\n");
    }
    if ((a < b || a == c) && c/2 != d) {
        printf("Правда\n");
    } else {
        /*
            a < b - правда
            a == c - правда, следовательно результат первой скобки правда
            с/2 != d - ложь, между скобкой и вторым условием И, следовательно общий результат ложь
        */
    
        printf("Ложь\n");
    }
    return 0;
}

Результат:

Правда
Ложь

7. Ввод с клавиатуры:

Тут все просто, ввод с клавиатуры получается с помощью функции scanf, так же как с printf, необходимо указать тип данных (по ссылке в пт 2) и !!!адрес переменной (про адреса углубляться не буду, простыми словами у каждой переменной есть свой адрес в оперативной памяти (аналогия, наш адрес места жительства), функции scanf указывается этот адрес после ввода чего-то в консоль, то что ввели кладется в переменную по указанному адресу) главное запомнить что для передачи адреса необходимо добавить & перед переменной.

int main() {
    int a;
    scanf("%d", &a);
    printf("%d", a);
    
    return 0;
}

Результат:

4 // ввел 4, функция положила это значение в переменную a, далее print вывел это значениче
4

8. Инкрементация, декрементация

Дословно увеличивать, уменьшать, достаточно запомнить простой синтаксис, он будет встречаться часто:

int main() {
    int a = 40;
    printf("%d\n", a);
    a++; // увеличить на единицу
    printf("%d\n", a);
    a+=5; // увеличить на 5
    printf("%d\n", a);
    a--; // уменьшить на единицу
    printf("%d\n", a);
    a-=3; // та же логика
    printf("%d\n", a);
    
    return 0;
}

Результат:

40
41
46
45
42

9. Циклы:

Основная задача циклов это повторение однотивных действий, если программа сложнее Hello world, там 100% будут циклы. В си есть циклы типа while, do-while, for.

While

Это самый простой цикл, будет выполнять код пока условие верно.

int main() {
    int a = 0;
    while(a < 5) { // будет выполнять строки внутри себя пока a меньше 5, как только a будет равна 5 цикл завершится, если изначально присвоить a=5 цикл даже не начнется.
        a++;
        printf("%d\n", a);
    }
    
    return 0;
}

Результат:

1
2
3
4
5

Do-While

Тоже самое, только сначала выполняется код, а потом проверка:

int main() {
    int a = 0;
    do {
        a++;
        printf("%d\n", a);
    } while(a<5); // Не забываем точку зяпятой после while, в данном случае она нужна. Если сначала зададим a=5, цикл выполнит код, потом сделает проверку и завершится, результатом будет 6.
    
    return 0;
}

Результат:

1
2
3
4
5

For

Самый сложный с точки зрения структуры, ее необходимо запомнить: for('объявление переменной': 'условие выхода': 'инкрементатор')

int main() {
    for(int a; a<5; a++){ //создаем переменную a, пока a<5 цикл будет выполняться, a увеличивается на 1 каждую итерацию (интерация это один проход цикла)
        printf("%d", a);
    }
    return 0;
}

Результат:

01234

for самый удобный цикл для итерации массивов:

int main() {
    int array_lenght = 5;
    
    int m[array_lenght];
    m[0] = 5;
    m[1] = 3;
    m[2] = 6;
    m[3] = 99;
    m[4] = 12;
    
    for(int a=0; a<array_lenght; a++){
        printf("%d\n", m[a]);
    }
    
    return 0;
}

Результат:

5
3
6
99
12

c-help's People

Contributors

rejedai avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.