Co nowego?
  • logo_cipsoft
    Nowe serwery zostały otwarte 19 Lut 2025:
    Noctalia (Open PvP) Ignitera (Open PvP) us_logo Xybra (Open PvP)

-Łatwy C++ po mojemu - cz??? trzecia

Grimekk

memsoria.pl
Dołączył
Październik 9, 2011
Posty
609
Liczba reakcji
55
Wst?p​
Siemano. W ko?cu zebra?em si? do napisania trzeciej cz??ci poradnika. Du?o os?b na PW prosi?o mnie o jej jak najszybsze wydanie, przepraszam najmocniej, ?e wysz?a ona dopiero po paru dniach ale ostatnio by?em bardzo zaj?ty. Chc? te? Was poinformowa?, ?e od tej lekcji moje tutoriale b?d? nieco kr?tsze, tak abym je m?g? wypuszcza? cz??ciej. W ka?dym razie, dzi? zajmiemy si? warunkami.

Instrukcje warunkowe​
Zacznijmy mo?e od samej teorii, pomo?e nam to niezmiernie w praktyce. Profesjonalne programy zawieraj? tak zwane "instrukcje warunkowe" kt?re okre?laj? co ma si? sta? je?eli jakie? zapytanie zostanie spe?nione.
Dla przyk?adu: je?li b?d? mia? wystarczaj?co du?o pieni?dzy to kupi? sobie nowy samoch?d. W przeciwnym wypadku samochodu nie kupi?.
Komputer jako maszyna nie mo?e si? pos?ugiwa? intuicj?. Trzeba dok?adnie okre?li? co si? stanie w danej sytuacji. Do tego w?a?nie s?u?y instrukcja warunkowa if. W programie, jej zapis wygl?da nast?puj?co:
PHP:
if ( b?d? mia? kas? )
If stawia warunek na posiadanie pieni?dzy. P??niej umieszczamy to, co ma si? sta? je?li warunek zostanie spe?niony.
PHP:
if ( b?d? mia? kas? )
kupi? nowy samoch?d
Czasem jednak?e zdarzaj? si? sytuacj? w kt?rych po spe?nieniu warunku b?dziemy chcieli wykona? dwie operacje. Na przyk?ad:
PHP:
if ( b?d? mia? kas? )
{
kupi? nowy samoch?d
znajd? ?on?
}
Jak wida?, gdy operacji jest wi?cej ni? jedna - trzeba doda? klamry. W normalnym kodzie kt?ry mo?e zosta? wpisany do kompilatora wygl?da?oby to w ten spos?b:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int kasa;

    cout << "Ile masz pieniedzy?" << endl;
    cin >> kasa;
    if ( kasa <= 3000 )
        {
        cout << "Nie bedziesz mial zony." << endl;
        cout << "... i nowego auta ;/" << endl;
        }
    return 0;
}
A wynik:
14wytch.png

Najpierw program spyta? nas o wpisanie warto?ci zmiennej. P??niej j? pobra? i wykona? por?wnanie (mniejsze lub r?wne). Warunek zosta? spe?niony wi?c wy?wietli? zawarto?? w klamrach (cout << nie bedziesz mial zony, itp).

Oczywi?cie umieszczanie if'a w if'ach jest mo?liwe. Wida? to na przyk?adzie poni?ej:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int kasa;

    cout << "Ile masz pieniedzy?" << endl;
    cin >> kasa;
    if ( kasa <= 3000 )
        {
        cout << "Nie bedziesz mial zony." << endl;
        cout << "... i nowego auta ;/" << endl;
        if ( kasa <= 2700 )
            {
            cout << "ani psa..." << endl;
            if ( kasa <= 2500 )
                {
                cout << "ani kota..." << endl;
                if ( kasa <= 2000 )
                    {
                    cout << "ogolnie to jestes zerem ;)" << endl;
                    }
                }
            }
        }
    return 0;
Wynik:
2zqtv03.png

Proces kt?ry przebiega jest raczej wyja?niony w kodzie - nazywamy to zagnie?d?aniem warunk?w.

Kolejn? instrukcj? warunkow? kt?r? Wam przedstawi? jest else, czyli - t?umacz?c na polski - "w przeciwnym wypadku", lub "co si? stanie je?li if nie zostanie spe?niony". Else jest bardzo wa?nym warunkiem, okre?la on bowiem co si? stanie je?li mamy do czynienia z u?ytkownikiem kt?ry nie chce dzia?a? wedle woli programu. Jego zastosowanie w programie wida? poni?ej:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int kasa;

    cout << "Ile masz pieniedzy?" << endl;
    cin >> kasa;
    if ( kasa <= 3000 )
        cout << "Nie bedziesz mial zony." << endl;
    else
        cout << "Bedziesz milionerem!" << endl;

    return 0;
}
Wynik:
ra9rb7.png

Mo?na zauwa?y?, ?e poda?em liczb? mniejsz? ni? 3000. Warunek zatem zosta? spe?niony wi?c program wy?wietli? wiadomo?? kt?rej nie zaoferowa? nam else.
Warto te? wspomnie?, ?e else wymaga w?asnych nawias?w kwadratowych, tak jak tu:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int kasa;

    cout << "Ile masz pieniedzy?" << endl;
    cin >> kasa;
    if ( kasa <= 3000 )
        {
        cout << "Nie bedziesz mial zony." << endl;
        cout << "i padniesz na smoku w tibii!" << endl;
        }
    else
        {
        cout << "Bedziesz milionerem!" << endl;
        cout << "Twoja zona bedzie miala duzy biust!" << endl;
        }
    return 0;
}
Wynik:
33xbio7.png

Poda?em liczb? wi?ksz? ni? 3000 wi?c warunek nie zosta? spe?niony i wys?a? pierwsze dwie wiadomo?ci. Bana?.

If'y z else'm mo?na te? zagnie?d?a?. Na przyk?ad tak!:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int kasa;

    cout << "Ile masz pieniedzy?" << endl;
    cin >> kasa;
    if ( kasa <= 3000 )
        {
        cout << "Nie bedziesz mial zony." << endl;
        cout << "i padniesz na smoku w tibii!" << endl;
        if ( kasa <= 2500 )
            {
            cout << "przegrales zycie!" << endl;
            cout << "nie skonczysz tibii!" << endl;
            }
        }
        else
            {
            cout << "Bedziesz milionerem!" << endl;
            cout << "Twoja zona bedzie miala duzy biust!" << endl;
            }
    return 0;
}
Wynik:
5da4bp.png

Z racji i? oba if'y zosta?y spe?nione, obie instrukcj? zosta?y wy?wietlone na ekranie.


Koniec
Dzisiaj kr?tko i na temat, powinno tak by? cz??ciej. Tutoriale wtedy s? bardziej dopracowane i trzymaj? si? kalendarza. Pozdrawiam.
 

Shirako

Senior User
Dołączył
Listopad 16, 2010
Posty
575
Liczba reakcji
59
Odp: C++ po mojemu - cz??? trzecia

Mo?na zauwa?y?, ?e poda?em liczb? mniejsz? ni? 3000. Warunek zatem nie zosta? spe?niony wi?c program wy?wietli? wiadomo?? kt?r? zaoferowa? nam else, nie if.
Na odwr?t. Warunek zosta? spe?niony i wykona? si? if.

Troch? og?lnikowo napisane, ale i tak da si? z tego wyci?gn?? wi?kszo?? potrzebnych informacji.
 

Dantez

Moim sekretem jest ciasto
Dołączył
Maj 22, 2008
Posty
1206
Liczba reakcji
202
Odp: C++ po mojemu - cz??? trzecia

?eby uj?? to w jeden temat brakuje elseif. To co obecnie jest, jest w porz?dku.

(Przy elseif warto wspomnie? o r??nicy w por?wnaniu do Lua)
 

Tayan

Advanced User
Dołączył
Październik 20, 2012
Posty
243
Liczba reakcji
12
Odp: C++ po mojemu - cz??? trzecia

Przej?y?cie i nawet fajnie. Co do prac domowych, powiniene? dawa? ich wi?cej, niech si? trudz?, zapewne wi?kszo?? spisze z neta ^.- . My?l?, ?e powiniene? zrobi? turotial w, kt?rym zrobi?by? s?ownik, i opis ka?dego s?owa w C++. ( s??w podstawowych)

Nie wiem mo?e np. ( Nie pami?tam bo dawno nie pisa?em kod?w )

int main () --
{
int kasa; --

cout << "Ile masz pieniedzy?" << endl;
cin >> kasa;
if ( kasa <= 3000 )

int - Zmienna czy jako? tak, kt?ra okre?la liczby od 0-4700+ co? w tym stylu by?o, nie pami?tam ;p.
int main() - Funkcja odpowiadaj?ca za ca?y kod.
int kasa; - tutaj mo?esz wpisa? dowoln? zmienn? ( nie pami?tam jak si? to nazywa ) mo?e by? np. kasa/samochody/laski/okno wszystko.. mo?e by? ich kilka, ale odpowiednio trzeba je umie?ci?. Bez nich kod anirusz, chyba ?e tworzysz helloworldy :D
cout << - wyt?umacz? na ch?opski rozum, ustawiasz tu o co nas ma komputer pyta? informowa? itp, dlatego jest cout << strumie? jest wys?any do nas
cin >> - cin to tak jakby w silniku tibii w skryptach lua s?owo Cid czyli u?ytkownik, kt?ry co? wysy?a, dlatego strumie? jest >>

Wi?c je?eli komputer ( cout ) nas pyta ( czyli wysy?a do nas strumie? << ) o to ile mamy pieni?dzy to co robi u?ytkownik ( cin ) ? Odpowiada, czyli odpowiadaj?c u?ywa zmiennej.

Tak jak m?wi?em int to warto?? (no nie wiem jak na to si? m?wi), kt?ra przedstawia liczby od 0-4700+, a u?ywa si? int, poniewa? zajmuje prawie najmniej bajt?w.

Czyli tak jak m?wi?em int Kasa/Samochody; lub co? w tym stylu to jest nasza zmienna. Za???my, ?e komputer pyta nas ile mamy palc?w, a wi?c potrzebna b?dzie nam do tego zmienna int Palce;
czyli to b?dzie wygl?da?o tak:
cout << "ile masz palc?w?" << endl; ( pyta komputer )
cin >> Palce; ( odpowiadasz liczb? )

Dobra bo si? rozpisa?em xD Zr?b dok?adne lekcje, ?eby mo?na by?o z tego forum wynie?? w ko?cu co? dobrego ;p.

Poradnik dobry reputek .
 
Ostatnia edycja:

Grimekk

memsoria.pl
Dołączył
Październik 9, 2011
Posty
609
Liczba reakcji
55
Odp: C++ po mojemu - cz??? trzecia

up, to przecie? by?o w pierwszej lekcji. Pisz? te tutoriale zak?adaj?c, ?e wcze?niejsze te? przeczytali?cie.
 

Tayan

Advanced User
Dołączył
Październik 20, 2012
Posty
243
Liczba reakcji
12
Odp: C++ po mojemu - cz??? trzecia

Czyta?em, i tam mo?na znale?? kilka podstawowych rzeczy, a tak naprawd? dajmy na to prosty kod:
#include <iostream>
using namespace std;
int main() {
cout << " Siemano :D " << endl;
return 0;
}

M?g?by? doda?, ciekawostki itp. np. Nie trzeba koniecznie u?ywa? funkcji endl, mo?emy zrobi? np cout << " Siemando :D \n"; - funkcja \n prze?uca nas na nast?pny akapit.
I teraz ka?d? linijk? kodu t?umaczysz, wtedy ka?dy ???todziub zaczaii o co ci chodzi. Je?eli nie ogarnie nic w pierwszej lekcjii, to nie zrozumie nic p??niej, ale nie b?d? Ci? poucza? ;p. Po prostu m?wie co ?atwiej za?apa? z w?asnego do?wiadczenia.
 
Ostatnia edycja:

Shirako

Senior User
Dołączył
Listopad 16, 2010
Posty
575
Liczba reakcji
59
Odp: C++ po mojemu - cz??? trzecia

M?g?by? doda?, ciekawostki itp. np. Nie trzeba koniecznie u?ywa? funkcji endl, mo?emy zrobi? np cout << " Siemando /n"; - funkcja /n prze?uca nas na nast?pny akapit.
\n :p
 

Tayan

Advanced User
Dołączył
Październik 20, 2012
Posty
243
Liczba reakcji
12
Odp: C++ po mojemu - cz??? trzecia

Oj tam, dawno nie pisa?em kod?w ;p.
 

Rikodek

Advanced User
Dołączył
Sierpień 21, 2012
Posty
300
Liczba reakcji
14
Odp: C++ po mojemu - cz??? trzecia

no i swietna robota :D czekam na wiecej!

zrobilem sobie wlasny skrypt ale nie chce dzialac, co w nim zlego

PHP:
#include <iostream>
using namespace std;
int main ()
{
    int lvl;

    cout << "ktory masz lvl?" << endl;
    cin >> lvl;
    if ( lvl <= 80 )
    {cout << "Noob jestes << endl;
    if ( lvl <= 30 )
    cout << "nie dasz rady na smokach" << endl;
    }
    else
    {
    cout << "Stary! to ty nawet dasz rade na demonach!" endl;
    }
    return 0;
    }
kurde.. jakies bledy :( co w nim zlego
 
Ostatnia edycja:

Grimekk

memsoria.pl
Dołączył
Październik 9, 2011
Posty
609
Liczba reakcji
55
Odp: C++ po mojemu - cz??? trzecia

1. klamry ?le porozstawiane
2. nie zamkn??e? wiadomo?ci "noob jeste?"
3. po tym:
"Stary! to ty nawet dasz rade na demonach!"
zapomnia?e? wstawi? operator <<
4. dodaj jak?? tabulacj? bo kod bardzo nieczytelny.

Poprawi?em go, teraz wygl?da tak i dzia?a:
PHP:
#include <iostream>
using namespace std;
int main ()
{
    int lvl;

    cout << "ktory masz lvl?" << endl;
    cin >> lvl;
        if ( lvl <= 80 )
        {
        cout << "Noob jestes" << endl;
            if ( lvl <= 30 )
            {
            cout << "nie dasz rady na smokach" << endl;
            }
        }
        else
        cout << "Stary! to ty nawet dasz rade na demonach!" << endl;
    return 0;
    }

Og?lnie to w kompilatorze powinno Ci zaznacza? blok w kt?rym jest b??d, wtedy o wiele ?atwiej go znale?? i wyeliminowa?. Musisz si? przyzwyczai? do poprawiania takich rzeczy, poza tym mi ta ma?a przer?bka Twojego kodu zaj??a mo?e 2 minuty - nast?pnym razem sam spr?buj poprawi?, bo jak b?d? robi? wszystko za Ciebie to niczego si? nie nauczysz :).
 
Ostatnia edycja:

Zheyr

Naczelny programista tibia.net.pl
Dołączył
Sierpień 10, 2012
Posty
961
Liczba reakcji
113
Odp: C++ po mojemu - cz??? trzecia

qwedasxz
 
Ostatnia edycja:

Blackq

Advanced User
Dołączył
Październik 29, 2010
Posty
339
Liczba reakcji
73
Wiek
32
Odp: C++ po mojemu - cz??? trzecia

Najpierw wypada?o by si? nauczy? podstaw na "konsoli", bo bez tych podstaw nie ma sensu zaczyna? od pisania program?w z graficznym interfejsem.
 

mertv

meretve
Dołączył
Wrzesień 18, 2009
Posty
834
Liczba reakcji
95
Odp: C++ po mojemu - cz??? trzecia

dla mnie denne przez te durne "nie b?dziesz mia? ?ony" itd. ja wiem, ?e to tylko przyk?ad ale m?czy. dodatkowo takie wrzucanie ifa w ifa to z?y nawyk. a przy takim typie wyboru powinno u?y? si? switcha.
 
Do góry