FOnline & new FMC Forum
Sierpień 15, 2014, 09:48:26 *
Witamy, Gość. Zaloguj się lub zarejestruj.
Aktualności: Wit Beyond Measure is Man's Greatest Treasure
 
   Strona główna   Pomoc Szukaj Zaloguj się Rejestracja  
Strony: [1] 2 3
  Drukuj  
Autor Wątek: Kurs AS 3a - zadania dodatkowe  (Przeczytany 5283 razy)
kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« : Marzec 30, 2011, 18:45:20 »

Jako że zmienne są bardzo ważne, postanowiłem napisać dodatkowe zadania do wykonania. Chodzi o to, by korzystanie ze zmiennych było dla was naturalne. Plik z rozwiązaniem proszę umieścić jako załącznik, hasło - adres e-mail podany na forum. W razie wątpliwości, niejasności, pytań, uwag - piszcie śmiało. Kurs jest od tego by się nauczyć nowych rzeczy Uśmiech

Zadanie 1.
Zdefiniuj (utwórz) następujące zmienne:
- "liczbaStronKsiazki" - przechowuje liczbę stron książki;
- "temperaturaC" - temperatura w stopniach Celsiusza;
- "nazwaGangu" - nazwa gangu graczy;
- "cenaBrhamina" - cena brahmina w kapslach;
- "bylWybuch" - informacja o tym, czy był wybuch;
- "oprocentowaniePozyczki" - oprocentowanie pożyczki w banku;
- "dniDoKonca"- liczba dni do końca czegoś;
- "czyZakonczyc" - informacja czy działanie czegoś ma się zakończyć;
Zastanów się jaki będzie odpowiedni typ. W komentarzu przy każdej definicji uzasadnij wybór typu. Przykład:
Kod: (as)
  1. uint pojemnoscBaku; // pojazd nie może posiadać ujemnej ilości paliwa  

Oczywiście nie ma jednego dobrego rozwiązania:
Kod: (as)
  1. float pojemnoscBaku; // ponieważ pojemność jest w litrach, chcę by można było wyrazić wartości mniejsze niż litr  


Zadanie 2

1. Stwórz zmienną typu uint8 o nazwie MalaZmienna;
2. Stwórz zmienną typu uint16 o nazwie DuzaZmienna;
3. Przypisz do zmiennej DuzaZmienna wybrana przez siebie wartość, większą niż 255;
4. Skopiuj wartość znajdującą się w DuzaZmienna do zmiennej MalaZmienna;
5. Wypisz na ekran zawartość zmiennych DuzaZmienna, oraz MalaZmienna;
6. Spróbuj przewidzieć co się stanie. Możesz się wspomóc kalkulatorem windowsowym;
7. Przeładuj skrypty klienta i sprawdź wynik. Zmień kilka razy wartość wymyśloną w punkcie 3 i spróbuj odgadnąć efekt.

Możesz wypisać zawartość obu zmiennych; wystarczy coś w ten deseń:
Kod: (as)
  1. Message("uint16:" + DuzaZmienna +", uint8:"+MalaZmienna);  


Zadanie 3

Wymień co najmniej dwie wartości, które musi przyjąć DuzaZmienna, dla których MalaZmienna po
Kod:
MalaZmienna = DuzaZmienna;
będzie miała wartość:
a) 0;
b) 1;
c) 2;
d) 3;

Zadanie 4

Piszesz skrypt do obsługi karawan. Utwórz zmienne, które będą przechowywać następujące informacje:
- nazwę towaru,
- identyfikator towaru,
- ilość kg ładunku,
- cena, za którą kupiono ładunek;
- cena, za którą karawana chce sprzedać przewożony ładunek;
- ilość brahminów,
- ilość wolnej obstawy, która jest do dyspozycji,
- wysokość pensji eskorty,
- czy w dziś jest dzień wymarszu karawany.
Zastanów się nad typami oraz wymyśl odpowiednie nazwy dla zmiennych, tak by oddawały zawartość zmiennej.


Edit: Poprawiono błędy w tekście - Pandemon.
« Ostatnia zmiana: Maj 03, 2011, 16:02:47 wysłane przez Pandemon » Zapisane
kryspin013
Programista AngelScript A
Newbie
***

Karma: +10/-0
Płeć: Mężczyzna


« Odpowiedz #1 : Marzec 30, 2011, 21:37:56 »

Próbowałem stworzyć argument dla którego zmienna gdy przyjmie wartość "true" to wyświetli się tekst ale mi się nie udało Smutny
Zapisane

kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #2 : Marzec 30, 2011, 21:54:58 »

To wykracza poza ramy tego odcinka, skoro jesteś tak żądny wiedzy napiszę Ci jak to zrobić Uśmiech
Kod: (as)
  1. bool czyLeciec = false;  
  2. czyLeciec = true;  
  3.   
  4. if(czyLeciec)  
  5. {  
  6.    Message("Lecimy!");  
  7. }  
  8. else  
  9. {  
  10.    Message("Musimy czekac na zezwolenie na start...");  
  11. }  


ps. Tak jak napisałem w temacie odnośnie lekcji 3, nie ma potrzeby byś wrzucał screena na imageshacka. Wystarczy, że dasz go jako załącznik do wiadomości, skopiujesz adres obrazka i edytujesz posta Uśmiech

ps2. Kasuj z pliku testowego niepotrzebne treści, łatwiej będzie mi sprawdzać. Możesz sobie archiwizować poprzednie wersje plików w jakimś folderze jeśli chcesz je zachować.
Zapisane
kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #3 : Marzec 30, 2011, 22:05:45 »

Sprawdzenie:
Pomyliłeś się z typami, napisałeś:
Kod: (as)
  1. int liczbaStronKsiazki = 116// liczba stron musi być liczbą naturalną  
  2. uint temperaturaC = 37// temperatura może być również ujemna  


Słowo Integer znaczy po angielsku "Liczba całkowita".
Słowo Unsigned - bez znaku.

uint, wzięło swoją nazwę od Unsigned Integer, czyli znaczy to - "Liczba całkowita bez znaku", czyli liczby całkowite dodatnie, czlyli - liczby naturalne.

   
Zapisane
kryspin013
Programista AngelScript A
Newbie
***

Karma: +10/-0
Płeć: Mężczyzna


« Odpowiedz #4 : Marzec 30, 2011, 22:22:38 »

Aha no tak, już u siebie poprawiam

Właściwie przy temperaturze może być zmienna float.

PS
Tak jak napisałem w temacie odnośnie lekcji 3, nie ma potrzeby byś wrzucał screena na imageshacka.
Ale ja lubię imageshacka Duży uśmiech

PS2
Kasuj z pliku testowego niepotrzebne treści, łatwiej będzie mi sprawdzać.
Ok, zrozumiałem Uśmiech

PS3
Kod: (as)
  1. if(czyLeciec)  
  2. {  
  3.    Message("Lecimy!");  
  4. }  
  5. else  
  6. {  
  7.    Message("Musimy czekac na zezwolenie na start...");  
  8. }  

Przy kilkudziesięciu próbach sfrustrowany miałem zamiar wpisać tam "if"... Pewnie kolejne kilkadziesiąt prób zmarnowałbym na to by zrozumieć, że trzeba jeszcze dopisać nawiasy klamrowe  Chichot
Zapisane

kryspin013
Programista AngelScript A
Newbie
***

Karma: +10/-0
Płeć: Mężczyzna


« Odpowiedz #5 : Marzec 30, 2011, 23:10:29 »

Możesz mi wytłumaczyć jak zrobić by argument przybierał daną wartość? Mam coś takiego:
Kod: (as)
  1.    bool karta;  
  2.    karta = true;  
  3.    if(karta)  
  4.    {    
  5.    Message("Tak!");  
  6.    }    
  7.    else  
  8.    {    
  9.    Message("Niestety nie...");    
  10.    }   
  11.    Message("Czy posiadasz karte dostepu: " + karta);  


...I konsola dalej mi wyświetla:

Kod:
Czy posiadasz karte dostepu: true

Stworzyłem nową zmienną:
Kod: (as)
I zmieniłem Message w argumencie na wartość zmiennej:
Kod: (as)
  1.    if(karta)  
  2.    {    
  3.    karta1 = "Tak!";  
  4.    }    
  5.    else  
  6.    {    
  7.    karta1 = "Niestety nie...";  
  8.    }   

Ale wtedy serwer informuje mnie, że skrypt ma błąd :/
Zapisane

kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #6 : Marzec 30, 2011, 23:15:05 »

Kod: (as)
  1. bool karta;  
  2. karta = true// przypisujemy prawdę;  
  3. karta = false// przypisujemy fałsz  
  4. karta = true// przypisujemy prawdę;  
  5. karta = true// przypisujemy prawdę;  
  6. karta = false// przypisujemy fałsz  
  7. karta = false// przypisujemy fałsz  
  8. karta = false// przypisujemy fałsz  
  9. karta = true// przypisujemy prawdę;  
  10. karta = false// przypisujemy fałsz  
  11.   
  12. if(karta)  
  13. {    
  14.    Message("Tak!");  
  15. }    
  16. else  
  17. {    
  18.    Message("Niestety nie...");    
  19. }   
  20.   
  21. Message("Czy posiadasz karte dostepu: " + karta);  


Nazwe zmiennej bym zmienił na formę pytania, w tedy łatwiej interpretować znaczenie jej zawartości, na przykład:
Kod: (as)
  1. bool czyJestKarta;  
  2. bool isCardInHand;  



Cytuj
Stworzyłem nową zmienną:
Kod: (as)
I zmieniłem Message na wartość zmiennej ale wtedy serwer informuje mnie, że skrypt ma błąd

A jaka jest wartość zmiennej karta1?
Zapisane
kryspin013
Programista AngelScript A
Newbie
***

Karma: +10/-0
Płeć: Mężczyzna


« Odpowiedz #7 : Marzec 30, 2011, 23:20:42 »

Soory, że tak często edytuje post ale zakręcony jestem i zawsze zapomnę czegoś dopisać...

Cały skrypt wygląda teraz tak:
Kod: (as)
  1. bool karta;  
  2.    string karta1; //zapomniałem dopisać  
  3.    karta = true;  
  4.    if(karta)  
  5.    {    
  6.    karta1 = "Tak!"//Wartość karta1 dla "true"  
  7.    }    
  8.    else  
  9.    {    
  10.    karta1 = "Niestety nie...";  
  11.    }   
  12.    Message("Czy posiadasz karte dostepu: " + karta);  


I to nie działa tak samo a nawet bardziej Chichot niż pierwsza wersja skryptu, która w miejscu "Czy posiadasz karte dostepu:" zamiast "Tak!" wyświetla mi "true"...
Kod: (as)
  1. bool karta;  
  2.    karta = true;  
  3.    if(karta)  
  4.    {    
  5.    Message("Tak!");  
  6.    }    
  7.    else  
  8.    {    
  9.    Message("Niestety nie...");    
  10.    }   
  11.    Message("Czy posiadasz karte dostepu: " + karta);  


Ale dobra nie robię już offtopu. Będę cierpliwy i poczekam na część, w której znajdę rozwiązanie.
Zapisane

cerberix
Programista AngelScript A
Newbie
***

Karma: +7/-0
Płeć: Mężczyzna


WWW
« Odpowiedz #8 : Marzec 31, 2011, 08:16:53 »

OK, zadania zrobione. Jeśli coś jest nie tak to proszę o wyjaśnienie Uśmiech Kuna, pewnie przyczepisz się do tego, że wszystkie zmienne deklaruje na początku tak jak w C, ale to już takie przyzwyczajenie z Turbo Pascala (kiedyś na IT coś tam się progamowało Język).





Edit: Dlaczego nie mogę powiększyć obrazków? Zrobiłem tak jak mówiłeś i nie da się powiększyć obrazka.

Edit2: Musisz kliknąć na obrazek, to się powiększy. - Kuna




Edit3: Właśnie jak klikam te, które są w poście to się nie powiększają. Załączniki tak, ale te zamieszczone w poście nie Język

Edit4: Bo do posta skopiowałeś adresy miniaturek, a nie adresy obrazków w pełnych rozmiarach Uśmiech. - Kuna
« Ostatnia zmiana: Marzec 31, 2011, 08:47:24 wysłane przez kuna » Zapisane
kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #9 : Marzec 31, 2011, 08:25:24 »

Cytat: kryspin013
I to nie działa tak samo a nawet bardziej  niż pierwsza wersja skryptu, która w miejscu "Czy posiadasz karte dostepu:" zamiast "Tak!" wyświetla mi "true"...

To nie jest offtop, problem dotyczy wiedzy z trzeciej lekcji, więc jak najbardziej jest na miejscu Uśmiech

Kod: (as)
  1. Message("Czy posiadasz karte dostepu: " + karta);    


Jakiego typu jest zmienna karta? Jakie wartości może ten typ przyjmować?
Zapisane
kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #10 : Marzec 31, 2011, 08:38:21 »

Cytat: cerberix
Kuna, pewnie przyczepisz się do tego, że wszystkie zmienne deklaruje na początku tak jak w C, ale to już takie przyzwyczajenie z Turbo Pascala

Owszem, przyczepił bym się, gdybyś tak zrobił. Ale nie zrobiłeś Uśmiech Zauważ, że zmienne do zadania 4 zadeklarowałeś dopiero tam, gdzie zacząłeś rozwiązywać zadanie 4.  Czyż nie jest tak czytelniej?
Jestem zadowolony z nazw i typow zmiennych.

Jedyne do czego mogę się przyczepić, to, jest to, że nie wiem czy potrafisz przypisać wartość jednej zmiennej, do drugiej zmiennej. Napisz w poście, jak zrobić:
Cytuj
. Skopiuj wartość znajdującą się w DuzaZmienna do zmiennej MalaZmienna;
Ogólnie, to wszystko super, brawo:)
Zapisane
cerberix
Programista AngelScript A
Newbie
***

Karma: +7/-0
Płeć: Mężczyzna


WWW
« Odpowiedz #11 : Marzec 31, 2011, 08:44:52 »

Owszem, przyczepił bym się, gdybyś tak zrobił. Ale nie zrobiłeś Uśmiech Zauważ, że zmienne do zadania 4 zadeklarowałeś dopiero tam, gdzie zacząłeś rozwiązywać zadanie 4.  Czyż nie jest tak czytelniej?

Aaaa czyli źle się wyraziłem, bo myślałem, że zmienne mam deklarować zaraz przed wiadomościami, czyli coś w tym stylu:

Kod: (AngelScript)
  1. string NazwaKarawany = "Water Merchants";  
  2. Message("Nazwa karawany: " + NazwaKarawany + ".");  
  3.   
  4. string NazwaTowaru = "Woda";  
  5. Message("Towar: " + NazwaTowaru + ".");  
Ale jak jest dobrze to się ciesze.

Z przypisaniem to szczerze mówiąc nie wiem, czy będzie coś takiego:
Kod:
MalaZmienna = DuzaZmienna;
- poprawione.
Zapisane
kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #12 : Marzec 31, 2011, 08:48:20 »

Z przypisaniem to szczerze mówiąc nie wiem, czy będzie coś takiego:
Kod:
MalaZmienna = DuzaZmienna

Tak jest Uśmiech Jeszcze tylko średnik na końcu.
Zapisane
kryspin013
Programista AngelScript A
Newbie
***

Karma: +10/-0
Płeć: Mężczyzna


« Odpowiedz #13 : Marzec 31, 2011, 13:29:01 »

Jakiego typu jest zmienna karta? Jakie wartości może ten typ przyjmować?


Karta jest zmienną typu bool, może przyjmować wartości prawda lub fałsz.

Teraz to co ja chciałem zrobić:
Miałem zamiar napisać skrypt ze zmienną typu bool, który poinformuje mnie czy "posiadam kartę dostępu" za pomocą prze ze mnie określonego tekstu (zamiast "true" chciałem mieć odpowiedź "tak.").
Kod: (as)
  1. bool czyJestKarta;  
  2.   
  3.    if(czyJestKarta)  
  4.    {    
  5.       Message("Tak!");    
  6.    }    
  7.    else  
  8.    {    
  9.       Message("Niestety nie...");    
  10.    }   
  11.    czyJestKarta = true;  
  12.    Message("Czy posiadasz karte dostepu: " + czyJestKarta);  

W wiadomości "Czy posiadasz karte dostepu:" dalej widzę "true"...


Próbowałem nawet bawić się z dodatkowymi zmiennymi (bo wydaje mi się, że nie może zostać utworzona wiadomość w wiadomości) np

Kod: (as)
  1. if(czyJestKarta)  
  2.    {    
  3.    string takJestKarta;  
  4.    takJestKarta = "Tak!"  
  5.    }   

Ale dalej ten sam efekt...


Jak stworzyć wiadomość, która dla wartości "true" w zmiennej bool czyJestKarta wyświetli mi określony tekst?
Zapisane

kuna
Administrator
Sr. Member
*****

Karma: +35/-8


« Odpowiedz #14 : Marzec 31, 2011, 13:46:14 »

Tak więc, karta jest typu bool, a typ bool, przyjmuje wartość true, albo false. Nic więc dziwnego, że jak go wypisujesz, to wypisuje true, bądź false.

Ty chcesz wypisać zawartość zmiennej przechowującej napis, więc zrób to Uśmiech Dobrze kombinowałeś tworząc zmienną
Kod: (as)
  1. string karta1; //zapomniałem dopisać    

Tylko Ci się pomieszały nazwy, i zamiast wypisać zmienną karta1(która jest napisem), wypisałeś wartość zmiennej karta(która jest wartością logiczną). Teraz widzisz, jak ważne są dobre nazwy dla zmiennych Uśmiech

Oto Twój cały kod(nic nie modyfikowałem, sam go popraw)
Kod: (as)
  1.    bool karta;    
  2.    string karta1; //zapomniałem dopisać    
  3.    karta = true;    
  4.    if(karta)    
  5.    {      
  6.    karta1 = "Tak!"//Wartość karta1 dla "true"    
  7.    }      
  8.    else    
  9.    {      
  10.    karta1 = "Niestety nie...";    
  11.    }     
  12.    Message("Czy posiadasz karte dostepu: " + karta);    
Zapisane
Strony: [1] 2 3
  Drukuj  
 
Skocz do: