Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne

jankol-el 18 Paź 2013 11:05 7992 6
  • Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne


    Kurs:
    Część 1.0 - Start w języku C
    Część 1.1 - Typy danych i zmienne
    Część 1.2 - Tablice i wskaźniki
    Część 1.3 - Operatory
    Część 1.4 - Instrukcje i pętle

    W tej części przechodzimy do typów danych, oraz zmiennych. Komputer musi wiedzieć z czym ma do czynienia. Jeśli nam ktoś poda jakąś liczbę, literę, słowo jakoś je sobie kwalifikujemy. Jeśli ktoś każe nam zapamiętać jakąś literę, albo podać następną z jakiegoś wyrazu to tak też uczynimy. Nie podamy cyfry, jeśli ktoś pytał nas o literę. Typy zmiennych to jakby takie metki do danych, by komputer mógł rozróżnić z czym ma do czynienia i pomiędzy jakie miejsca w pamięci ma je umieścić.
    W C mamy typy:
    -podstawowe: typy znakowe, całkowite i rzeczywiste
    -pochodne: wskaźnikowe, tablice, struktury, unie.

    Typy i zmienne całkowite
    Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne


    Rozmiary zmiennych danego typu
    Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne


    Użycie powyższych typów w połączeniu z signed, unsigneddaje, short i long daje nam różne możliwości
    Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne


    Typy i zmienne rzeczywiste
    Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne





    Pisząc program deklarujemy sobie zmienną wybranego typu, nazywamy ją jak chcemy z pewnym "ale". Nasz język ma zarezerwowane słowa kluczowe, oto one:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Nazwy zmiennych nie mogą zaczynać się od cyfr i nie mogą mieć nazwy takiej jak słowa kluczowe powyżej. Wielkość liter ma znaczenie, bo gdyby napisać któreś ze słów powyżej zaczynając od wielkiej litery, kompilator nie zaprotestuje.
    Podczas pisania programu możemy chcieć zaznaczyć sobie kila rzeczy, opisać, skomentować, czyli wstawić komentarz. Komentarz wygląda tak:
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Czyli używając połączenia /*, czyli slasha (slesza) i gwiazdki rozpoczynamy komentarz, a */, czyli gwiazdką i slashem kończymy. Jest jeszcze jedna możliwość komentowania kodu, która nie wchodzi w skład standardu ANSI, ale z powodzeniem można go używać, mianowicie //, czyli dwa slashe. Ta metoda pozwala na skomentowanie jednej linijki, dlatego nie kończymy jej, bo od momentu wstawienia jej w tekst kodu do końca tej linijki kompilator nie bierze stamtąd nic pod uwagę.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Znając już tyle rzeczy, możemy zrobić coś więcej. Spróbujmy więc napisać prosty program, który zapyta o coś użytkownika, ten odpowie, po czym program wyświetli wszystko na ekranie.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Zwracam tutaj uwagę, że komentarze można zamiennie pisać obiema metodami. Z tym, że jak na tym przykładzie widać, duża ilość komentarzy strasznie wpływa na czytelność, a przecież niby po to istnieje możliwość pisania komentarzy, by wyjaśniać co, gdzie i jak! Jednak warto po prostu czytelnie pisać program, by nie używać zbyt wiele komentarzy. Pojawiają się tu kolejne nowości, które już wyjaśniam, tylko sprawię, by tekst był bardziej przejrzysty.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Sprawa ma się tak:
    1. Tutaj zdefiniowaliśmy zmienną (sprawiliśmy, że coś co nazywa się wiek, ma swoje miejsce w pamięci i jest traktowane jako liczba całkowita)
    2. Tu już wcześniej poznana funkcja która wyświetla nam treść na ekranie, ale z pewną nowością, czyli "\n". Jest to tzw. stała znakowa. Ta konkretnie odpowiedzialna jest za tworzenie nowej linii. Wszystko co jest po "/n" wyświetla się od nowej linijki. Przykłady takich specjałów:
    \n - nowa linia
    \t - tabulator poziomy (zwykły)
    \b - backspace
    \r - powrót karetki
    \v - tabulator pionowy
    \a - sygnał alarmu (zwykle systemowy buzzer, ale u mnie w laptopie dźwięk wydobywa się z głośników)
    \f - nowa strona
    %% - wypisanie znaku % (wyjątkowo nie /%, jest to wyjątek)
    \' - apostrof
    \" - cudzysłów
    \? - znak ?
    \\ - znak \

    Poniższe jeszcze będą rozjaśniane:
    \x - kod ASCI w systemie szesnastkowym
    \o - kod ASCI w systemie ósemkowym
    3. Kolejne "cuda". Nic strasznego. Jest to funkcja pobierająca dane z klawiatury. Wewnątrz niej (w nawiasie), mamy w cudzysłowie zawarte "%d". Jest to informacja dla programu, jakiego typu danych wprowadzanych ma się spodziewać. W tym przypadku typu całkowitego.
    Kurs programowania C/C++. Część 1.1 - Typy danych i zmienne
    Po takim kodzie, zamykamy cudzysłów i po przecinku wypisujemy zmienne, które poprzedza taki "&" znaczek, jest to tzw. ampersand. Jest to operator (o tym wkrótce) który ma za zadanie wyciągnąć adres zmiennej. Tak jakby zapytał zmienną, gdzie jest usadowiona w pamięci, by to co użytkownik podał można było w te miejsce wstawić. Trzeba o tym pamiętać. Więc zapamiętajmy schemat funkcji scanf()
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Radzę sprawdzić co stanie się i pominąć &. Tak dla testu, może się przydać taka próba, gdy kiedyś jednak zapomnimy i będziemy buszować w kodzie, by znaleźć gdzie wdarł się błąd. Mi na początku też zdarzało się zapomnieć i czasem stracić kilka minut na szukanie błędu.

    4. Tu wyświetlamy tekst i wpisaną przez nas wartość. Powinno być już jasne po co jest tutaj "%d". Określa w którym miejscu w tekstu ma być wyświetlona liczba dziesiętna (%d - int). Po przecinku już bez ampersanda mamy nazwę naszej zmiennej. Gdy wpiszemy jednak & przed nazwą zmiennej, nasz komputer nie wybuchnie. Otrzymamy tajemniczy kod, który niestety nie jest tajnym kodem zdradzającym pozycję skarbu templariuszy. Jest to zwyczajnie adres naszej zmiennej o którym już wspominałem.

    5. Też jest znana ta linia kodu, ale przypominam. To zatrzyma nasz ekran do momentu naciśnięcia dowolnego przycisku, trzeba pamiętać, że MUSI być zadeklarowana biblioteka "stdlib.h", bez tego... Tu też polecam sprawdzić co będzie nam mówił kompilator, dzięki temu, gdy zapomnimy jednak o tym, będziemy pamiętali co i jak po takim eksperymencie.
    Kod: c
    Zaloguj się, aby zobaczyć kod

    Ważną kwestią są takie pojęcia jak deklaracja, definicja i inicjalizacja.
    Deklaracja to mówiąc prosto i zrozumiale dla wszystkich, informacja dla kompilatora, że zmienna o jakiejś podanej przez programistę nazwie już istnieje i nie pozwala nam na tworzenie dubli. Natomiast nie istnieje jeszcze w pamięci komputera, ale znana jest jej nazwa, oraz typ. Definicja jest to z kolei rezerwacja miejsca w pamięci na naszą zmienną, która wcześniej musiała być zadeklarowana. Inicjalizacja to po prostu nadanie tej zmiennej konkretnej wartości.

    To na tyle w tej części. Radzę czasem zaglądać w przeczytane już materiały, bo kurs rozwija się na bieżąco. Dodaję niekiedy jakieś szczegóły, poprawiam drobne błędy.



    Literatura:
    -Język ANSI C. Programowanie. Wydanie II
    Autorzy: Brian W. Kernighan, Dennis M. Ritchie
    -Symfonia C++ Standard. Tom 1-2. Wydanie III
    Autor: Jerzy Grębosz
    -Czysty kod. Podręcznik dobrego programisty
    Autor: Robert C. Martin


    Fajne!
  • #2 29 Paź 2013 22:22
    scal12
    Poziom 19  

    Ten krótki kurs jest przeznaczony dla osób o stopniu zaawansowanym ? Bo ja jako osoba początkująca kompletnie nic z tego nie rozumiem :) W kilku linijkach tekstu jest zawarta pierwsza część podobnie druga...

  • #3 30 Paź 2013 10:47
    jankol-el
    Poziom 20  

    Ten krótki kurs jeszcze nie jest gotowy, wymaga to sporego nakładu czasu. Poziom dla zaawansowanych raczej nie jest, ale dla zupełnie zielonych polecam wpierw poczytać o działaniu komputera, o programowaniu (ogólnie). Trzeba wiedzieć co to i do czego służy kompilator. Z czasem (tak jak zaznaczam na końcu każdego tematu) dodam rozwinięcia, kolejne przykłady. Każde uwagi, sugestie są dla mnie cenne, więc zapraszam nawet do pytań na PW, postaram się wyjaśnić do skutku każdą kwestię.
    Proszę napisać, gdzie kolego scal12 się zagubiłeś, czego dokładnie nie rozumiesz, a postaram się wyjaśnić to bardziej szczegółowo i dokładnie. :)

  • #4 07 Lis 2013 19:55
    DiodaLed
    Poziom 13  

    Proszę autora artykułu, aby nie mieszał młodym w głowach i poprawił informację w tabelkach (3 i 4) o rozmiarze zmiennych. W nagłówkach kolumny, powinno być napisane: "Rozmiar w bitach (b)" a nie w bajtach. Bajt to 8 bitów. Taka informacja także powinna być w artykule. Dziękuję.

  • #5 09 Lis 2013 20:57
    jankol-el
    Poziom 20  

    Naturalnie! DiodaLed, jestem Ci wdzięczny, porpawiam!
    Przepraszam wszystkich za wprowadzenie w błąd!

  • #6 30 Paź 2015 21:06
    Xena20
    Poziom 1  

    Np dla studentki która w informatyce jest nową studiuje od miesiąca i jeszcze się gubi...