PRI, laboratorium 1
Zakres materiału: Typy proste, "typ" łańcuchowy. Stałe i zmienne. Podstawowe operacje arytmetyczne (5 pkt)
Zadanie 1. Typy zmiennych, stałe. Deklaracje, inicjalizacje. Operacje na zmiennych, ciągi znakowe i standardowe wyjście.
- W katalogu
lab1
utworzyć nowy projekt zad1
i do głównego pliku projektu skopiować zawartość pliku źródłowego zad1.c.
- Jeśli wykonacie poprawnie utworzenie nowego projektu, to pliki tekstowy main.c i wykonywalny ./zad1 są w katalogu ~/lab1/zad1. Do katalogu można przejść komendą cd ~/lab1/zad1 i skompilować program komendą gcc -g main.c -o zad1 -lm, a wykonać ./zad1. Aby uzyskać 32-bitowy program należy wykonać polecenie: gcc -m32 -g main.c -o zad1 -lm.
- Aby uzyskać większe litery w edytorze należy wybrać w górnym menu Settings/Editor settings, kliknąć na przycisk Choose przy napisie na górze "This is sample text" i zmienić rozmiar na co najmniej 14.
- Aby uzyskać większe litery i więcej linii w konsoli uruchamianej przez codeblocks należy wybierając w górnym menu Settings/Environment/Terminal to launch console programs wstawić zamiast komendy xterm -T $TITLE -e polecenie xterm -geometry 100x90 -fn 10x20 -T $TITLE -e.
- Aby zrobić 32bitowy program w Codeblocksie należy wstawić opcję -m32 do dwóch okienek wybierając w górnym menu Project/Build options.../Compiler Settings/Other options oraz Project/Build options.../Linker options/Other linker options:. W wyniku działania programu otrzymamy inny rozmiar zmiennych.
- Zapoznać się z własnościami typów liczbowych oraz przeanalizować sposób ich wyświetlania przy użyciu funkcji
printf
. (linie 10-25)
- Usunąć kometarz i sprawdzić co stanie się, jeżeli spróbujemy zmienić wartość stałej. (linia 31)
- Zaobserwować co dzieje się jeżeli przekroczymy maksymalną wartość zmiennej (linie 34-36)
- Zaobserwować co dzieje się jeżeli przypisujemy zmiennym wartości innych typów (linie 39-49)
- Zapoznać się z działaniem operatora modulo (linia 52)
- Przy użyciu debuggera sprawdzić z jakimi wartościami inicjalizują się tablice inicjalizowane w różny sposób (linie 55-63)
- Zapoznać się ze sposobem wyświetlania ciągów znakowych (linie 65-69)
- Zapoznać się z błędem obliczeń dla float i long double (linie 72-75)
Zadanie 2. Standardowe wejście, funkcja scanf
.
- W katalogu
lab1
utworzyć nowy projekt zad2
i do głównego pliku projektu skopiować zawartość pliku źródłowego zad2.c
- Uruchomić program i zapoznać się z jego działaniem.
- Zmodyfikować program tak, aby:
- nie pozwalał na wprowadzenie większej liczby znaków niż zadeklarowany rozmiar ciągu znaków (odpowiednia modyfikacja specyfikatora formatowania
%s
)
- przechowywał wartość zmiennej
wiek
w typie o najmniejszej zajętości pamięci (zwrócić uwagę na konieczność zmiany specyfikatora formatowanie w funkcji scanf
)
- umożliwał wprowadzenie i wypisanie liczb zmiennoprzecinkowych w podwójnej precyzji
Zadanie 3. Zadanie samodzielne.
Grupa A
Napisać i uruchomić program do obliczania natężenia prądu płynącego przez rezystor oraz wydzielającej się na nim mocy. Wartość rezystora przechowywać stałej. Użytkownik wprowadza wartość napięcia odłożonego na rezystorze. Wyniki powinny być wypisywane na standardowe wyjście z dokładnością do dwóch miejsc po przecinku.
Grupa B
Napisać i uruchomić program do obliczania pola i obwodu koła o zadanym promieniu. Wartość liczby π przechowywać w stałej. Pole i obwód powinny być wypisywane na standardowe wyjście z dokładnością do dwóch miejsc po przecinku.