2011-10-15 Metodyka i techniki programowania Wprowadzenie do języka C mgr inż. Wojciech Szmuc Weryfikacja: Jakub Palider Uwagi wstępne Programy pisane na obecnych oraz pózniejszych zajęciach należy formatować zgodnie z przedstawionymi niżej przykładami. Komentarze do kodu (znajdujące się pomiędzy znakami /* oraz */) należy umieszczać w miarę pisania programu. Powinny one zawierać informacje o działaniach opisywanego fragmentu funkcjonalności. Przedstawione niżej przykłady są zbyt szczegółowo komentowane co związane jest z faktem, że są to zajęcia wprowadzające. W praktyce wystarczyłaby informacja umieszczana na samym początku pliku. Ćwiczenie 1. Pierwszy Program 1. Utwórz katalog zajecia3 2. Stwórz w nim plik witaj.c zawierający: /* Program wypisuje "Witaj!" */ #include /* wskazanie pliku naglowkowego biblioteki */ int main() /* glowna funkcja programu */ { /* poczatek bloku instrukcji */ printf("Witaj!"); /* wypisanie tekstu "Witaj!" */ printf("\n"); /* przejscie do nowej linii */ return 0; /* wyjscie z funkcji, z wartoscia 0 */ } /* koniec bloku instrukcji */ Zwróć uwagę na przesunięcie (wcięcie) wywołań funkcji printf(). związane z umieszczeniem ich wewnątrz bloku ograniczonego znakami { oraz }. 3. Spróbuj skompilować program: gcc witaj.c 4. Wylistuj zawartość katalogu. 5. Uruchom stworzony program. ./a.out 6. Skompiluj program w następujący sposób: gcc witaj.c -o witaj. Sprawdz zawartość katalogu. Spróbuj uruchomić nowo powstały plik. 7. Zakomentuj (umieść wewnątrz komentarza) linijkę zawierającą stdio.h. Spróbuj teraz skompilować program. 8. Spróbuj skompilować program z opcją -nodefaultlibs Zadanie Napisz program wyświetlający: __ __ ________ | | / / |__ __| | |/ / | | | |\ \ | | |__| \__\ |__| Ćwiczenie 2. Zmienne oraz operatory arytmetyczne 1. Stwórz plik zawierający: float rzeczywista1=2/3, rzeczywista2=-2.3; /* definicja oraz inicjalizacja */ /* zmiennych typu rzeczywistego */ printf("rzeczywista1=%f", rzeczywista1); /* wyswietlenie zmiennej */ /* "rzeczywista1" */ printf("\n"); printf("rzeczywista2=%5.2f", rzeczywista2); /* 5 pozycji w tym 2 po kropce */ printf("\n"); printf("rzeczywista1+rzeczywista2=%f", rzeczywista1+rzeczywista2); oraz inne elementy konieczne do prawidłowej kompilacji. Sprawdz działanie programu. Co należałoby zmienić aby program działał poprawnie? 2. W analogiczny sposób przetestuj pozostałe operatory arytmetyczne. Ćwiczenie 3. Adresy Adres zmiennej jest liczbą określającą indeks pierwszego bajtu zarezerwowanego dla danej zmiennej w pamięci. Nie można zmienić adresu zmiennej jest to w pewnym sensie stały (niezmienny w czasie działania programu) atrybut (cecha) zmiennej. 1. Zaimplementuj kod: short krotka1=12345, krotka2=54321; /* zmienne calkowite o malym zakresie */ printf("Zmienna \"krotka1\" - wartosc: %hi, adres: %p", krotka1, &krotka1); printf("\n"); printf("Zmienna \"krotka2\" - wartosc: %hi, adres: %p", krotka2, &krotka2); printf("\n"); Sprawdz działanie programu z czego ono wynika? 2. Na odstawie różnicy adresów oblicz rozmiar pamięci zarezerwowany dla zmiennej. 3. Analogicznie sprawdz rozmiary zmiennych innych typów. 4. Przepisz poniższy kod: float rzeczywista; printf("Wpisz liczbe: "); scanf("%f", &rzeczywista); /* przekazanie adresu zmiennej jako */ /* argument funkcji wczytujacej */ printf("Kwadrat tej liczby wynosi: %f\n", rzeczywista*rzeczywista); skompiluj oraz uruchom. 5. Na podstawie przykładu z punktu 4. zmodyfikuj program wykorzystujący operatory arytmetyczne tak, aby możliwe było wpisanie argumentów działań po uruchomieniu programu. Ćwiczenie 4. Wskazniki Wskaznik jest zmienną przechowującą adres pewnego elementu. Ponieważ jest to zmienna można zmienić jej wartość tak aby wskazywała na inny adres (element). 1. W programie podnoszącym do kwadratu dopisz po definicji zmiennej rzeczywista: float *wRzeczywista=&rzeczywista; /* definicja wskaznika oraz przypisanie */ /* adresu, ktory jest wskazywany */ Zauważ, że w tym przypadku zapisywany jest adres a nie jego wartość liczbowa (brak rzutowania). Następnie zmodyfikuj linijkę odpowiedzialną za pobranie wartości: scanf("%f", wRzeczywista); Sprawdz działanie programu. 2. Zmodyfikuj program tak, aby operację mnożenia (przy podnoszeniu do kwadratu) wykonywał przy użyciu wskazników. Zadanie Napisz program, który pobierze czas rozpoczęcia zajęć, czas trwania zajęć oraz bieżący czas i na tej podstawie wyliczy ilość czasu jaka pozostała do końca zajęć. Wynik powinien być przedstawiony w postaci procentowej jak również w postaci liczby pozostałych minut.