Potelkin
Новичок
Автор: Potelkin
Некоторые данные были взяты из методических указаний, принадлежащих Гомельскому государственному машиностроительному колледжу!
Начнем с того, что программирование подразумевает не только логику и математическое мышление, еще нужно развивать и визуальное мышление, представление "объектов" в уме, рисовать их и представлять. Начнем с логических операциях:
Соединители логических условий:
&& — И,
|| — ИЛИ.
! — НЕ
Пример использования в условии IF:
Данная программа в результате выполнения напечатает следующее:
b > a
a >= b OR b <= c
c = a * a
Условные операторы
Пора познакомиться и с операторами позволяющими создавать условия. С одним вы уже познакомились выше — это условие IF («ЕСЛИ») которое выполняет следующую после него единственную строку кода или блок кода, если условие в круглых скобках верно.
У условия с IF имеется еще альтернативная форма IF-ELSE (ЕСЛИ-ИНАЧЕ) Пример:
А вот еще один пример, только на этой раз IF-ELSE IF-ELSE:
Вот пример из мода:
Последний пример позволяет выполнить только дно из нескольких действий (один из блоков кода), а следующие после этого действия проверки игнорируются. Так, если b > a, то проверка на то, равно ли b == a производиться не будет.
Другой способ создать проверку условия — это использовать конструкцию SWITCH-CASE-DEFAULT. Ниже приведен пример (пример так же взят из мода):
Оператор 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 цикла:
Результат:
10 20 30 40 50 60 70 80 90 100
Цикл while принимает условие и выполняет блок кода до тех пор, пока условие верно. Мы обязаны каждый каждый раз увеличивать значение переменной a, которая фигурирует в условии, иначе мы получим бесконечный цикл.
Я решил примеры сделать немного по проще, так как что бы понять принцип работы, мне кажется будет проще на простых примерах!
Цикл DO…WHILE
Цикл do…while очень похож на цикл while, однако он является циклом с пост-условием. То есть условие выполнения блока кода проверяется после выполнения, а не до, что гарантирует то, что код выполнится минимум один раз. Ниже приведен пример:
По условиям while блок кода не должен выполнится, однако он выполнится один раз потому, что мы используем цикл do…while. Реализовать цикл do…while через while очень просто — достаточно выполнить функцию или содержимое блок кода перед использованием цикла, а затем использовать их в цикле.
Цикл FOR
Цикл for является продвинутой версией циклов. for сразу заботится об инициализации и инкременте счетчика. Пример:
Результат:
0 10 20 30 40 50 60 70 80 90 100
Как видите, мы сразу объявляем, что счетчик цикла должен увеличиваться после каждой итерации.
После знакомства с циклами и условными операторами давайте вернемся к упомянутому ранее break.
Оператор BREAK
Оператор break занимается прерыванием. В случае со switch мы используем его для кода каждой метки с той целью, чтобы следующие метки были проигнорированы, в противном случае switch проверит соответствие переданного ему значения всем меткам, точнее будет проверять пока не наткнется на break. Пример:
Результат:
d = 100
d = d
Еще break очень полезен в ситуациях, когда мы не знаем точно когда необходимо завершить работу цикла. В таком случае принято использовать концепцию «стоп слов» -значений, которые позволяют программе понять, что цикл необходимо завершить. Пример:
Оператор CONTINUE
Оператор continue похож на оператор break. Отличием continue от break является то, что если break останавливает выполнение кода (например цикла), то continue позволяет остановить только текущую итерацию и перейти к следующей. Перепишем пример выше с использованием continue:
Не забываем ставить "Спасибо"
Некоторые данные были взяты из методических указаний, принадлежащих Гомельскому государственному машиностроительному колледжу!
Начнем с того, что программирование подразумевает не только логику и математическое мышление, еще нужно развивать и визуальное мышление, представление "объектов" в уме, рисовать их и представлять. Начнем с логических операциях:
Соединители логических условий:
&& — И,
|| — ИЛИ.
! — НЕ
Пример использования в условии 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;
}
Вот пример из мода:
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 = "Администратор:"; }"
Другой способ создать проверку условия — это использовать конструкцию 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;
}
Цикл 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;
}
Цикл 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 похож на оператор 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;
}
Последнее редактирование:
