W katalogu hello stworzyć plik Makefile postaci (linie z poleceniami systemowymi muszą zaczynać się znakiem tabulacji):
# # Makefile (wersja podstawowa) # hello : hello.c Makefile # Następna linia zaczyna się od tabulacji! gcc -Wall -ansi -pedantic -o hello hello.c
# # Makefile (wersja rozbudowana) # CC = gcc CFLAGS = -Wall -ansi -pedantic # LIB = -lm -lncurses LIB = FILE = hello.c TARGET = hello $(TARGET) : $(FILE) Makefile # Następna linia zaczyna się od tabulacji! $(CC) $(CFLAGS) $(LIB) -o $(TARGET) $(FILE) # Określenie celów sztucznych. .PHONY : clean clean: # Następna linia zaczyna się od tabulacji! $(RM) $(TARGET) core # Na końcu zostawiamy pustą linię (dobry zwyczaj).
Skompilować plik hello.c poleceniem: make
Posprzątać po kompilacji poleceniem: make clean
W katalogu domowym utworzyć podkatalog petla. Utworzyć w nim pliki Makefile i petla.c postaci:
/* * petla.c * * Program ilustrujacy petle. * Wypisywanie kolumny kolejnych liczb. */ #include <stdio.h> #define START 12 /* ograniczenie dolne - punkt startowy */ #define STOP 20 /* ograniczenie gorne */ int main(void) /* poprawna deklaracja */ { int i; printf("Stosuje petle \"for\"\n"); for (i = START; i <= STOP; ++i) printf("%d\n", i); return 0; }
Skompilować plik petla.c poleceniem: make
Poprawić program zamieniając stałe START i STOP na zmienne typu const int.
W programie petla.c dopisać fragment wykorzystujący pętlę while:
printf("Stosuje petle \"while\"\n"); i = START; while (i <= STOP) { printf("%d\n", i); ++i; }
Skompilować i uruchomić program.
W katalogu domowym utworzyć podkatalog switch. Utworzyć w nim pliki Makefile i switch.c postaci:
/* * switch.c * * Program wykorzystujacy instrukcje "switch". */ #include <stdio.h> int main(void) { int a; printf("\nFIGURY PLASKIE\nPodaj liczbe od 1 do 5: "); /* Wczytanie liczby podanej przez uzytkownika */ scanf("%d", &a); /* Wersja ze "switch" */ switch(a) { case 1: printf("Punkt (a = 1)\n"); break; /* to daje wyskok ze "switch" (opcjonalne) */ case 2: printf("Odcinek (a = 2)\n"); break; case 3: printf("Trojkat (a = 3)\n"); break; case 4: printf("Czworokat (a = 4)\n"); break; default: /* to jest opcjonalne */ printf("Wielokat (a > 4)\n"); break; } return 0; }
Skompilować i uruchomić program. Warto zauważyć, że instrukcję switch zawsze można zastąpić ciągiem instrukcji warunkowych, np.
/* Wersja z "if", tutaj nawiasy klamrowe sa opcjonalne */ if (a == 1) { printf("Punkt (a = 1)\n"); } else if (a == 2) { printf("Odcinek (a = 2)\n"); } else if (a == 3) { printf("Trojkat (a = 3)\n"); } else if (a == 4) { printf("Czworokat (a = 4)\n"); } else { printf("Wielokat (a > 4)\n"); }
W katalogu domowym utworzyć podkatalog menu. Utworzyć w nim pliki Makefile i menu.c postaci:
/* * menu.c * * Program wykorzystujacy instrukcje "do-while" do stworzenia menu. */ #include <stdio.h> int main(void) { const int TRUE = 1; const int FALSE = 0; int koniec = FALSE; /* zmienna sterujaca zakonczeniem programu */ int wybor; /* Menu pokaze sie co najmniej raz */ do { printf("\n\tMENU PROGRAMU\n"); printf("\t1) Wyjscie z programu\n"); printf("\t2) Pomoc\n"); printf("\t3) Uaktualnienie bazy danych\n"); printf("\t4) Zapytania do bazy danych\n"); printf("\tWybierz opcje: "); /* Wczytanie liczby podanej przez uzytkownika */ scanf("%d", &wybor); /* Wybor pozycji z menu */ if (wybor == 1) koniec = TRUE; else if (wybor == 2) printf("Jeszcze nie ma pomocy...\n"); else if (wybor == 3) printf("Nie mozna uaktualnic bazy danych...\n"); else if (wybor == 4) printf("Nie mozna tworzyc zapytan do bazy danych...\n"); else printf("Nie ma takiej opcji...\n"); } while (koniec == FALSE); /* powtarzaj dopoki to jest prawda */ return 0; }
Skompilować i uruchomić program.
Poprawić program tak, aby nie korzystać ze zmiennej koniec. Można zamienić pętlę do-while na while i przerywać pętlę nieskończoną poleceniem break.
Napisać program kula, który obliczy objętość kuli o zadanym promieniu. Na początku funkcji main() umieścić definicję liczby Pi postaci
const float PI = 3.1415927; /* stala - liczba Pi */
Napisać program prostokat wyliczający obwód i pole powierzchni prostokąta o zadanych bokach.