Systemy liczbowe i reprezentacja danych w komputerze - 3h
Zapoznaj się tekstem w podręczniku strony od 61 do 72 ze szczególnym uwzględnieniem Podsumowania.
Wskazówki, uwagi
Lekcja 1: zagadnienie 2.1
Lekcja 2: zagadnienia 2.2–2.3
Lekcja 3: zagadnienia 2.4–2.5
W modelu RGB warto wspomnieć o tym, jak zbudowany jest piksel w wyświetlaczach różnych urządzeń. Piksel składa się zwykle z trzech subpikseli, emitujących światło w kolorach czerwonym, zielonym i niebieskim. Stąd model RGB określa natężenie tych właśnie kolorów, a przypisane im wartości są niczym innym, jak informacją dla piksela, z jakim natężeniem na emitować światło każdy z jego subpikseli.
System szesnastkowy jest obecny w programowaniu, na przykład podczas określania kolorów. W wielu językach programowania opisujemy kolory w modelu RGB, jednak natężenia kolorów podawane są w notacji heksadecymalnej. Przykładem wykorzystania systemu szesnastkowego jest też zapis kolorów w kodach HTML stron internetowych.
Różne notacje dla kolorów w modelu RGB można zobaczyć, korzystając z narzędzia dostępnego bezpośrednio w wyszukiwarce google.com po wpisaniu frazy “RGB color picker”.
Język C++ jest językiem statycznie typowanym. To znaczy, że programista sam określa typ zmiennych, tworząc je. W przypadku niektórych języków istnieje typowanie dynamiczne. Oznacza ono, że typ jest nadawany zmiennej na podstawie przypisanej do niej wartości. Przykładem takiego języka jest Python.
Wprowadzając typ danych string, który jest typem obiektowym, dokonujemy wprowadzenia do programowania obiektowego. Warto poruszyć kwestię, czym jest klasa obiektu. Jednym ze sposobów wprowadzenia tego pojęcia może być pokazanie, jak bardzo klasy ułatwiają programowanie. Przykładem może być konkretny typ gier, na przykład wyścigi samochodowe. Na potrzeby takich wyścigów programiści mogą stworzyć klasę „Samochód”. Będzie w niej opisany będzie abstrakcyjny, teoretyczny samochód, który może skręcać, ma cztery koła, może przyspieszyć, zahamować itp. Takie informacje można podzielić na właściwości i zachowania (metody) samochodu. Następnie programiści mogą tworzyć kolejne samochody, dopisując jedynie do tych właściwości konkretne wartości – metody mogą się natomiast różnić się efektem działania w zależności od tego, jakie wartości mają poszczególne właściwości. Sprowadza się to do tego, że nie trzeba od początku do końca programować tego, jak ma działać każdy samochód pojawiający się w takiej grze.
Warto podkreślić praktyczne zastosowanie łączenia zdań logicznych poprzez spójniki logiczne w zdania złożone. Dzięki temu możemy pisać kody źródłowe, które są krótsze i bardziej zwięzłe, gdyż wiele instrukcji warunkowych można zastąpić jedną.
Realizując ćwiczenia i zadania polegające na stworzeniu kodu źródłowego o określonym działaniu, warto podkreślić, by przed przystąpieniem do pisania kodu źródłowego pamiętać o wcześniejszych etapach rozwiązywania problemów z wykorzystaniem komputera – na przykład sformułowaniu algorytmu.
Wykorzystując zmienne typu string w języku C++, do kodu źródłowego dodaje się dyrektywę #include
Zadanie 2 (łatwe)
Zadanie 3 (dosyć łatwe)
Ile razy wzrośnie zakres n-bitowych liczb binarnych, gdy liczbę bitów zwiększymy o 1, 2, 3, 4, m bitów? Odpowiedź uzasadnij.
Zadanie 4 (łatwe)
Zadanie 5 (łatwe)
Zadanie 6 (dosyć łatwe)
Wyznaczyć 100 cyfr ułamkowych dwójkowego rozwinięcia liczby dziesiętnej 0,8(10).
Zadanie 7 (dosyć łatwe)
Wyznacz błąd względny i bezwzględny rozwinięcia dwójkowego liczby
dziesiętnej 0,2(10)
o dokładności 10 binarnych cyfr ułamkowych.
Zadanie 1 (łatwe)- binarne na dziesiętne
Podział liczby na cyfry
Zapisz specyfikację oraz algorytm wypisujący poszczególne cyfry liczby.
Schemat blokowy
Zapisz w postaci schematu blokowego algorytm obliczający dla danej liczby naturalnej liczbę jej dzielników właściwych większych od 1. Wykorzystaj pseudokod zapisany w podręczniku na stronie 17 /Ćwiczenie 5 str. 16/
Programy w C++
Napisz w środowisku CodeBlocks następujące programy:
1. Program sprawdzający czy liczba jest parzysta
2. Program wypisujący poszczególne cyfry z liczby
3. Program wyświetlający liczbę dzielnikó właściwych liczby n większych od 1
4. Program wypisujący NWD dla dwóch liczb naturalnych a i b
Test wiedzy
|
Pytanie 1. Zamień liczbę 111 systemu dwójkowego na dziesiątkowy i podaj prawidłowy wynik A/ 6 B/ 7 C/ 10 D/ 11 E/ 12 Pytanie 2 Zamień liczbę 11001 systemu dwójkowego na dziesiątkowy i podaj prawidłowy wynik A/ 20 B/ 24 C/ 25 D/ 27 E/ 31 Pytanie 3 Zamień liczbę 101 systemu dwójkowego na dziesiątkowy i podaj prawidłowy wynik A/ 5 B/ 7 C/ 9 D/ 11 E/ 13 Pytanie 4 Zamień liczbę 110011 systemu dwójkowego na dziesiątkowy i podaj prawidłowy wynik A/ 37 B/ 40 C/ 47 D/ 50 E/ 51 Pytanie 5 Zamień liczbę 10001 systemu dwójkowego na dziesiątkowy i podaj prawidłowy wynik A/ 12 B/ 14 C/ 17 D/ 21 E/ 27 Pytanie 6 Zamień liczbę 56 systemu dziesiętnego na dwójkowy i podaj prawidłowy wynik 110011 111000 110101 110101 111111 Pytanie 7 Zamień liczbę 20 systemu dziesiętnego na dwójkowy i podaj prawidłowy wynik 10100 11111 10010 10001 111101 Pytanie 8 Zamień liczbę 17 systemu dziesiętnego na dwójkowy i podaj prawidłowy wynik A/ 11111 B/ 10101 C/ 100101 D/ 10111 E/ 10001 Pytanie 9 Zamień liczbę 120 systemu dziesiętnego na dwójkowy i podaj prawidłowy wynik A/ 1100100 B/ 1101100 C/ 1100110 D/ 1000010 E/ 1111000 Pytanie 10 Zamień liczbę 6 systemu dziesiętnego na dwójkowy i podaj prawidłowy wynik A/ 110 B/ 101 C/ 100 D/ 111 E/ 1001 Pytanie 11 Zamień liczbę 76 systemu ósemkowego na szesnastkowy i podaj prawidłowy wynik A/ A3 B/ 4F3 C/ 4C D/ 2A E/ 3E Pytanie 12 Zamień liczbę 5F systemu szesnastkowego na dziesiątkowy i podaj prawidłowy wynik A/ 79 B/ 87 C/ 64 D/ 95 E/ 112
Podsumowanie
cout <<nazwa_zmiennej;
if (warunek) instrukcja na tak;
else instrukcja na nie;
for ( inicjalizacja zmiennej; warunek; aktualizacja zmiennej )
{
// Wykonywany kod, jeśli warunek został spełniony
}
Przykład:
for ( int i = 0; i < 10; i++ )
{
cout << i << endl;
}
a) Największą liczbą ośmiocyfrową w systemie dwójkowym jest 11111111, której zapis dziesiętny to 255.
b) Największą liczbą szesnastocyfrową w systemie dwójkowym jest 1111111111111111, której zapis dziesiętny to 65535. Rozwiązanie w pliku T02_CW1.
a) 2 bajty to 16 bitów, czyli w zapisie binarnym 16 cyfr. Największą liczbą będzie zatem 1111111111111111 zapisane binarnie, czyli 65535 w systemie dziesiętnym.
b) 78 w systemie binarnym to 1001110, liczba składa się z 7 znaków, czyli do zapisu potrzeba minimum 7 bitów. Rozwiązanie w pliku T02_CW4.