Доступ к готовым решениям

Переход в группу "Пользователь"

300.00 ₽
Одноразовый платёж
Быстрый переход в группу "Пользователи", без надобности написания постов и ожидания.

Покупка дает возможность:
Быть полноправным участником форума
Нормальное копирование кода
Создавать темы
Скачивать файлы
Доступ к архиву Pawno-Info

Урок Основные этапы изучения программирования

Статус
В этой теме нельзя размещать новые ответы.

Potelkin

Новичок
Автор: Potelkin
Некоторые данные были взяты из методических указаний, принадлежащих Гомельскому государственному машиностроительному колледжу!
Начнем с того, что программирование подразумевает не только логику и математическое мышление, еще нужно развивать и визуальное мышление, представление "объектов" в уме, рисовать их и представлять. Начнем с логических операциях:
Соединители логических условий:
&& — И,
|| — ИЛИ.
! — НЕ

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

PHP:
#include <stdio.h>
 int main(void) {
    int a = 5, b =10, c = 25, d = 100, result;
     if (b > a)
        printf("b > a\n");
     if (a >= b || b <= c)
        printf("a >= b OR b <= c\n");
     if (a == c / a && (c % a) == 0) {
        printf("c = a * a\n");
    }
    return 0;
}
Данная программа в результате выполнения напечатает следующее:
b > a
a >= b OR b <= c
c = a * a


Условные операторы
Пора познакомиться и с операторами позволяющими создавать условия. С одним вы уже познакомились выше — это условие IF («ЕСЛИ») которое выполняет следующую после него единственную строку кода или блок кода, если условие в круглых скобках верно.
У условия с IF имеется еще альтернативная форма IF-ELSE (ЕСЛИ-ИНАЧЕ) Пример:

PHP:
#include <stdio.h>
int main(void) {
    int a = 5, b =10, c = 25, d = 100, result;
     if (b > a) {
        printf("b > a\n");
    } else {
        printf("b < a\n");
    }
     return 0;
}
А вот еще один пример, только на этой раз IF-ELSE IF-ELSE:
Вот пример из мода:

PHP:
 "	if(PlayerInfo[playerid][pAdmin] == 6) { arank = "{EF0A16}Revelation Developer 6lvl"; }
			else if(PlayerInfo[playerid][pAdmin] == 5) { arank = "{137F11}Главный администратор 5lvl"; }
			else if(PlayerInfo[playerid][pAdmin] == 4) { arank = "{790D67}Администратор сервера 4lvl"; }
			else if(PlayerInfo[playerid][pAdmin] == 3) { arank = "{790D67}Администратор сервера 3lvl"; }
			else if(PlayerInfo[playerid][pAdmin] == 2) { arank = "{2E68B9}Модератор 2lvl"; }
			else if(PlayerInfo[playerid][pAdmin] == 1) { arank = "{2E68B9}Модератор 1lvl"; }
			else { arank = "Администратор:"; }"
Последний пример позволяет выполнить только дно из нескольких действий (один из блоков кода), а следующие после этого действия проверки игнорируются. Так, если b > a, то проверка на то, равно ли b == a производиться не будет.

Другой способ создать проверку условия — это использовать конструкцию SWITCH-CASE-DEFAULT. Ниже приведен пример (пример так же взят из мода):

PHP:
	switch(PlayerInfo[playerid][pLevel])
	{
	case 2..4:
		{
			SetPlayerPos(playerid,1202.4523,-1760.3716,13.5865);
			SetPlayerFacingAngle(playerid, 92.374);
			SetPlayerInterior(playerid,0);
			return 1;
		}
	case 5..7:
		{
			SetPlayerPos(playerid,-1965.3966,137.4904,27.6875);
			SetPlayerFacingAngle(playerid, 92.374);
			SetPlayerInterior(playerid,0);
			return 1;
		}
	case 8..100:
		{
			SetPlayerPos(playerid,2840.8250,1290.4175,11.3906);
			SetPlayerFacingAngle(playerid, 92.374);
			SetPlayerInterior(playerid,0);
			return 1;
		}
	}
	return 1;
}
Оператор switch принимает в качестве аргумента какое-либо значение, значение которой необходимо проверить. case 2..4:, case 5..7:, case 8..100: case 100: default: — являются метками, которые используются в операторе switch и goto для перемещения по коду. Конкретно метки case и default используются в switch, оператор ищет их и проверяет их соответствие значению переменного аргумента. В нашем случае значению 100 переменной d соответствует метка case 100:. Когда найдена соответствующая метка, программа выполняет ассоциируемый с нею код, то есть будет выполнена функция printf() и оператор break. Если ни одна метка не будет соответствовать значению аргумента, то будет выполнен код метки default:. Метка default: не обязательна, вы можете ее не использовать в тех случаях, когда она будет лишней.

Цикл WHILE
Для более понятно примера решил из мода не брать так как там очень сложно представить, вот более простой примерчик:
while является самым простым циклом, с его помощью можно заменить любой другой, правда их в Си всего 3 штуки. Пример while цикла:

PHP:
#include <stdio.h>
int main(void) {
    int a = 5, b = 10, c = 25, d = 100, result;
     while (a <= d) {
        if (a % 10 == 0)
            printf("%d ", a);
         a += 5;
    }
    printf("\n");
    return 0;
}
Результат:
10 20 30 40 50 60 70 80 90 100

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

Я решил примеры сделать немного по проще, так как что бы понять принцип работы, мне кажется будет проще на простых примерах!

Цикл DO…WHILE
Цикл do…while очень похож на цикл while, однако он является циклом с пост-условием. То есть условие выполнения блока кода проверяется после выполнения, а не до, что гарантирует то, что код выполнится минимум один раз. Ниже приведен пример:

PHP:
#include <stdio.h>
int main(void) {
    int a = 5, b = 10, c = 25, d = 100, result;
     do {
        printf("%d ", a);
    } while (a >= d);
     printf("\n");
     return 0;
}
По условиям while блок кода не должен выполнится, однако он выполнится один раз потому, что мы используем цикл do…while. Реализовать цикл do…while через while очень просто — достаточно выполнить функцию или содержимое блок кода перед использованием цикла, а затем использовать их в цикле.

Цикл FOR
Цикл for является продвинутой версией циклов. for сразу заботится об инициализации и инкременте счетчика. Пример:

PHP:
#include <stdio.h>
 int main(void) {
    int a = 5, b = 10, c = 25, d = 100, result;
     for(int i = 0; i <= d; i += 10) {
        printf("%d ", i);
    }
     printf("\n");
     return 0;
}
Результат:
0 10 20 30 40 50 60 70 80 90 100
Как видите, мы сразу объявляем, что счетчик цикла должен увеличиваться после каждой итерации.
После знакомства с циклами и условными операторами давайте вернемся к упомянутому ранее break.

Оператор BREAK

Оператор break занимается прерыванием. В случае со switch мы используем его для кода каждой метки с той целью, чтобы следующие метки были проигнорированы, в противном случае switch проверит соответствие переданного ему значения всем меткам, точнее будет проверять пока не наткнется на break. Пример:
PHP:
#include <stdio.h>
int main(void) {
    int a = 5, b = 10, c = 25, d = 100, result;
    switch (d) {
        case 5:
            printf("d = 5\n");
        case 10: case 25:
            printf("d = 10 or 25\n");
        case 100:
            printf("d = 100\n");
        default:
            printf("d = d\n");
    }
     return 0;
}
Результат:
d = 100
d = d
Еще break очень полезен в ситуациях, когда мы не знаем точно когда необходимо завершить работу цикла. В таком случае принято использовать концепцию «стоп слов» -значений, которые позволяют программе понять, что цикл необходимо завершить. Пример:

PHP:
#include <stdio.h>
#include <string.h>
 int main(void) {
    char str[100];
    while (1) {
        printf("Введите слово: ");
        scanf("%s", str);
        printf("\n");
 
        if (strcmp(str, "exit") != 0) {
            printf(">> %s\n", str);
        } else {
            printf("bye!\n");
            break;
        }
    }
     return 0;
}
Оператор CONTINUE
Оператор continue похож на оператор break. Отличием continue от break является то, что если break останавливает выполнение кода (например цикла), то continue позволяет остановить только текущую итерацию и перейти к следующей. Перепишем пример выше с использованием continue:

PHP:
#include <stdio.h>
#include <string.h>
int main(void) {
    char str[100];
     while (1) {
        printf("Введите слово: ");
        scanf("%s", str);
        printf("\n");
         if (strcmp(str, "exit") != 0) {
            printf(">> %s\n", str);
        } else {
            continue;
            /* выполнено не будет */
            printf("bye!\n");
        }
    }
     return 0;
}
Не забываем ставить "Спасибо"
 
Последнее редактирование:
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу