Programowanie w C (index)


Programowanie w C (2) - make, sterowanie

ZADANIE 2.1

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

ZADANIE 2.2

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.

ZADANIE 2.3

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");
}

ZADANIE 2.4

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.

ZADANIE 2.5

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 */

ZADANIE 2.6

Napisać program prostokat wyliczający obwód i pole powierzchni prostokąta o zadanych bokach.


Programowanie w C (index)