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

Описание: Уроки по скриптингу
Модератор: SJplayer

Miranda F
Автор темы, Старшина
Старшина
Аватара
Miranda F
Автор темы, Старшина
Старшина
Сообщения: 143
Зарегистрирован: 5 июля 2013
С нами: 10 лет 8 месяцев

#1 Miranda » 3 июня 2014, 15:55

Изображение


Автор: Potelkin

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

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

Код: Выделить всё

#include <stdio.h>
 
int main(void) {
    
int a 5=1025100result;
     if (
a)
        
printf("b > a\n");
     if (
>= || <= c)
        
printf("a >= b OR b <= c\n");
     if (
== && (a) == 0) {
        
printf("c = a * a\n");
    }
    return 
0;
}   


Данная программа в результате выполнения напечатает следующее:
b > a
a >= b OR b <= c
c = a * a


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

Пример:

Код: Выделить всё

#include <stdio.h>
int main(void) {
    
int a 5=1025100result;
     if (
a) {
        
printf("b > a\n");
    } else {
        
printf("b < a\n");
    }
     return 
0;
}   


А вот еще один пример, только на этой раз IF-ELSE IF-ELSE:

Код: Выделить всё

 "    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. Ниже приведен пример (пример так же взят из мода):

Код: Выделить всё

    switch(PlayerInfo[playerid][pLevel])
    {
    case 
2..4:
        {
            
SetPlayerPos(playerid,1202.4523,-1760.3716,13.5865);
            
SetPlayerFacingAngle(playerid92.374);
            
SetPlayerInterior(playerid,0);
            return 
1;
        }
    case 
5..7:
        {
            
SetPlayerPos(playerid,-1965.3966,137.4904,27.6875);
            
SetPlayerFacingAngle(playerid92.374);
            
SetPlayerInterior(playerid,0);
            return 
1;
        }
    case 
8..100:
        {
            
SetPlayerPos(playerid,2840.8250,1290.4175,11.3906);
            
SetPlayerFacingAngle(playerid92.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 цикла:

Код: Выделить всё

#include <stdio.h>
int main(void) {
    
int a 51025100result;
     while (
<= d) {
        if (
10 == 0)
            
printf("%d "a);
         
+= 5;
    }
    
printf("\n");
    return 
0;
}   


Результат:
10 20 30 40 50 60 70 80 90 100

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

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

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

Код: Выделить всё

#include <stdio.h>
int main(void) {
    
int a 51025100result;
     do {
        
printf("%d "a);
    } while (
>= d);
     
printf("\n");
     return 
0;
}  


По условиям while блок кода не должен выполнится, однако он выполнится один раз потому, что мы используем цикл do…while. Реализовать цикл do…while через while очень просто — достаточно выполнить функцию или содержимое блок кода перед использованием цикла, а затем использовать их в цикле.

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

Код: Выделить всё

#include <stdio.h>
 
int main(void) {
    
int a 51025100result;
     for(
int i 0<= d+= 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.
Пример:

Код: Выделить всё

#include <stdio.h>
int main(void) {
    
int a 51025100result;
    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 очень полезен в ситуациях, когда мы не знаем точно когда необходимо завершить работу цикла. В таком случае принято использовать концепцию «стоп слов» -значений, которые позволяют программе понять, что цикл необходимо завершить.
Пример:

Код: Выделить всё

#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:

Код: Выделить всё

#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;
}   
Изображение


  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Уроки»

Кто сейчас на форуме (по активности за 5 минут)

Сейчас этот раздел просматривают: 9 гостей