What's new

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

Grimekk

memsoria.pl
Joined
Oct 9, 2011
Messages
609
Reaction score
56
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
Joined
Nov 16, 2010
Messages
575
Reaction score
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
Joined
May 22, 2008
Messages
1,206
Reaction score
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
Joined
Oct 20, 2012
Messages
243
Reaction score
13
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 .
 
Last edited:

Grimekk

memsoria.pl
Joined
Oct 9, 2011
Messages
609
Reaction score
56
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
Joined
Oct 20, 2012
Messages
243
Reaction score
13
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.
 
Last edited:

Shirako

Senior User
Joined
Nov 16, 2010
Messages
575
Reaction score
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
Joined
Oct 20, 2012
Messages
243
Reaction score
13
Odp: C++ po mojemu - cz??? trzecia

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

Rikodek

Advanced User
Joined
Aug 21, 2012
Messages
300
Reaction score
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
 
Last edited:

Grimekk

memsoria.pl
Joined
Oct 9, 2011
Messages
609
Reaction score
56
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 :).
 
Last edited:

Zheyr

Naczelny programista tibia.net.pl
Joined
Aug 10, 2012
Messages
961
Reaction score
114
Odp: C++ po mojemu - cz??? trzecia

qwedasxz
 
Last edited:

Blackq

Advanced User
Joined
Oct 29, 2010
Messages
339
Reaction score
74
Age
31
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
Joined
Sep 18, 2009
Messages
834
Reaction score
99
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.
 
Top