Laboratorium jezyk c3

background image

Laboratorium nr 3

1/9

1)

Makefile.


Program make służy do automatyzacji, usprawnienia oraz przyspieszenia kompilacji

programów z wykorzystanie kompilatora GCC. Program został pierwotnie stworzony przez

dr. Stuarta I. Feldmana w 1977 roku, który pracował w Bell Labs. Obecnie istnieje kilka

implementacji programu Make: GNU Make, BSD Make, Microsoft Make.

Aby móc wykorzystać program Make do automatyzacji kompilacji, należy stworzyć w

katalogu (w którym znajdują się nasze pliki źródłowe *.c, *.h) plik Makefile. Plik Makefile

(zwykły plik ASCII bez prawa wykonywania) jest rodzajem pliku skryptowego,

wykonywanego (interpretowanego) przez program make. Plik Makefile zwiera definicje

zmiennych oraz czynności jakie wykona program make w celu automatyzacji kompilacji.

Ogólna budowa pliku Makefile:


[Reguła:] [Składnik]
[Tabulacja] [Polecenie1]
...
[Tabulacja] [PolecenieN]


Przykład:

hello: hello.o aux.o

gcc hello.o aux.o -o hello

hello.o: hello.c

gcc -c hello.c -o hello.o

aux.o: aux.c

gcc -c aux.c -o aux.o



Przykład:

CC=gcc
CFLAGS=-g -Wall
LFLAGS=
OBJS=hello.o aux.o

hello: $(OBJS)

$(CC) $(LFLAGS) $(OBJS) -o hello

hello.o: hello.c

$(CC) $(CFLAGS) -c hello.c -o hello.o

aux.o: aux.c

$(CC) $(CFLAGS) -c aux.c -o aux.o


Język C

Temat: Makefile, instrukcje warunkowe, pętle.

Instrukcja

laboratoryjna

3

Przygotował: mgr inż. Maciej Lasota

background image

Laboratorium nr 3

2/9

Przykład:

CC=gcc
CFLAGS=-g -Wall
LFLAGS=
OBJS=hello.o aux.o

hello: $(OBJS)

$(CC) $(LFLAGS) $(OBJS) -o hello

hello.o: hello.c

$(CC) $(CFLAGS) -c hello.c -o hello.o

aux.o: aux.c

$(CC) $(CFLAGS) -c aux.c -o aux.o


all: hello

clean:

rm hello

2)

Instrukcje warunkowe.

Instrukcje warunkowe pozwalają zdefiniować warianty wykonywania określonego

bloku instrukcji programu. W języku C wyróżniamy kilka rodzajów instrukcji warunkowych:

IF, IF-ELSE, IF-ELSE-IF, SWITCH.

Instrukcja warunkowa „IF”:

if(warunek)
{

instrukcja;
...

}

Instrukcja warunkowa „IF-ELSE”:

if(warunek)
{

instrukcja1;
...

} else
{

instrukcja2;

...

}

background image

Laboratorium nr 3

3/9

Przykład:

#include <stdio.h>
#include <stdlib.h>

void main()
{

int a;

printf("Podaj liczbe a: ");
scanf("%d",&a);

if (a < 0)
{

printf("Liczba a jest liczba ujemna!\n");
exit(0);

}

if ( a > 0)
{

printf("Liczba a jest liczba dodatnia!\n");
exit(0);

}
printf("Liczba a jest rowna 0 lub nie podales liczby\n");

}

Instrukcja warunkowa „IF-ELSE-IF”:

if(warunek1)
{

instrukcja1;
...

} else if(warunek2)
{

instrukcja2;

...

} else if(warunek3)
{

instrukcja3;
...

}

background image

Laboratorium nr 3

4/9

Przykład:

#include <stdio.h>
#include <stdlib.h>

int main()
{

char c;

printf("Podaj litere A,B lub C: ");
c = getchar();

if (c == 'a')
{

printf("A\n");

} else if (c == 'b')
{

printf("B\n");

} else if (c == 'c')
{

printf("C\n");

} else
{

printf("Podales zla litere\n");

}
return (0);

}

Instrukcja warunkowa „SWITCH”:

switch(wyrażenie)
{

case stala1:

instrukcja;
...
break;

case stala2:

instrukcja;
...
break;

...
...
...

default:

instrukcja;
...
break;

}

background image

Laboratorium nr 3

5/9

Przykład:

#include <stdio.h>
#include <stdlib.h>

int main()
{

char c;

printf("Podaj znak: ");

switch(c = getchar())
{

case 'a':

printf("A\n");
break;

case 'b':

printf("B\n");
break;

default:

printf("Blad\n");
break;

}
return (0);

}

3)

Instrukcje pętli.

Instrukcje pętli umożliwiają powtarzanie dowolną ilość razy lub do momentu

wystąpienia jakiegoś warunku określony blok instrukcji programu.

Instrukcja pętli „WHILE”:

while(warunek)
{

instrukcja;

}

Instrukcja pętli „DO-WHILE”:

do
{

instrukcja;
...

}
while(warunek);

background image

Laboratorium nr 3

6/9

Instrukcja pętli „FOR”:

for (wyrażenie początkowe; warunek; inkrementacja)
{

instrukcja;
...

}

Przykład:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{

int licznik=1;

while(licznik <= 10)
{
printf("Licznik wynosi: %d\n",licznik);
licznik++;

//licznik=licznik+1

sleep(2);

//sleep przyjmuje jako parametr
//czas w sekundach

}

licznik=1;

while(1)
{
printf("Licznik wynosi: %d\n",licznik);

if (licznik == 10)
{

break;

}

licznik++;

//licznik=licznik+1

sleep(2);

//sleep przyjmuje jako parametr
//czas w sekundach

}


return (0);
}

background image

Laboratorium nr 3

7/9

Przykład:

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main()
{

int licznik=1;
int i;

while(licznik <= 10)
{
printf("Licznik wynosi: %d\n",licznik);
licznik++;

//licznik=licznik+1

sleep(2);

//sleep przyjmuje jako parametr
//czas w sekundach

}

for(i=1; i<=10; i++)
{
printf("Licznik wynosi: %d\n",i);
sleep(2);

//sleep przyjmuje jako parametr
//czas w sekundach

}

return(0);

}

4)

Funkcje matematyczne.

Standardowa biblioteka języka C, zawiera szereg gotowych funkcji służących do

wykonywania obliczeń matematycznych. Plik nagłówkowy, w którym znajdują się deklaracje

funkcji oraz makr matematycznych to <math.h>. Funkcje matematyczne dostępne w

standardowej bibliotece języka C:

sin(x);

sinus x

cos(x);

cosinus x

tan(x);

tangens x

asin(x);

arcus sinus x

acos(x);

arcus cos x

atan(x);

arcus tangens x

atan2(x,y);

arcus tangens x/y

sinh(x);

sinus hiperboliczny

cos(x);

cosinus hiperboliczny

tanh(x);

tangens hiperboliczny

background image

Laboratorium nr 3

8/9

exp(x);

funkcja wykładnicza e^x

log(x);

logarytm naturalny

log10(x);

logarytm o podstawie 10

pow(x,y);

podniesienie x^y

sqrt(x);

pierwiastek z x, x>=0

ceil(x);

najmniejsza liczba całkowita

nie mniejsza niż x

floor(x,y);

największa liczba całkowita

nie większa niż x

fabs(x); wartość bezwzględna z |x|

Aby skompilować plik źródłowy, w którym wykorzystujemy funkcje matematyczne

należy do kompilatora GCC dodać przełącznik „- lm” np. gcc -lm -o test test.c

5)

Generator liczba pseudolosowych.

Generator liczb pseudolosowych (Pseudo-Random Number Generator, lub PRNG)

to program lub biblioteka, która na podstawie niewielkiej ilości informacji (ziarno, zarodek,

ang. seed) generuje deterministycznie ciąg bitów, który pod pewnymi względami jest

nieodróżnialny od ciągu uzyskanego z prawdziwie losowego źródła.

Generatory liczb pseudolosowych nie generują ciągów prawdziwie losowych –

generator inicjowany ziarnem, które może przyjąć k różnych wartości, jest w stanie

wyprodukować co najwyżej k różnych ciągów liczb.

Przykłady bibliotek napisanych w C/C++ do generowani liczb pseudolosowych:

Hasard (C)

http://haypo.hachoir.org/trac/wiki/hasard

Boost (C++)

http://www.boost.org/

GSL (C)

http://www.gnu.org/software/gsl/

Standardowa biblioteka języka C w pliku nagłówkowym <stdlib.h> posiada

zadeklarowane dwie funkcje służące do generowania liczb pseudolosowych.

srand(seed);

rand(void);

background image

Laboratorium nr 3

9/9

Funkcja srand() jako parametr przyjmuje seed, czyli tzw. ziarno/zarodek jest to

zmienna liczba (unsigned int) na podstawie, której inicjowany jest generator liczb dla

nowego ciągu liczb pseudolosowych.

Funkcja rand() służy do losowania liczb pseudolosowych, zwraca ona liczbę

całkowitą (int) z przedziału między 0 a stałą RAND_MAX. RAND_MAX jest to stała

zadeklarowana w pliku nagłówkowym <stdlib.h> wynosi ona co najmniej 32767.

Przykład:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{

int i,c;
/* Uruchamiamy generator liczb pseudolosowych jako

parametr podajemy funkcje time(NULL) zwraca ona czas
w sekundach liczony od 1970 roku */

srand(time(NULL));

for(i=0; i<=9; i++)
{

c = (rand() % 25) + 65;

//losowanie liczb
//z przedzialu 65 – 90
// czyli kody ASCII A-Z

printf("Wylosowana liczba nr [%d]: %d

odpowiada jej znak ASCII %c\n",i,c,c);

}
return (0);

}

Aby wygenerować liczbę z dowolnego przedziału wynik funkcji rand() poddajemy

operacji modulo np. rand() % 10 losuje nam liczby z przedziału od 0 do 9.


Wyszukiwarka

Podobne podstrony:
Laboratorium jezyk c3 2013
Laboratorium jezyk c3 2013
Laboratorium jezyk c4 2013
Laboratorium jezyk c6 2013
Laboratorium jezyk c7 2013
Laboratorium jezyk c5 2013
Laboratorium jezyk c6 2013
laboratorium jezyk c7
Laboratorium jezyk c2 2013 id 3 Nieznany
Plan laboratorium-język C, Informatyka
Laboratorium jezyk c4 2013
Laboratorium jezyk c6 2013
REGULAMIN KORZYSTANIA Z LABORATORIUM KOMPUTEROWEGO, Automatyka i Robotyka, Język programowania
c3, Elektrotechnika, Podstawy elektroenergetyki i bezpieczeństwo użytkowania urządzeń elektrycznych,
C3, Mleczko&Generał, Laboratorium fizyki

więcej podobnych podstron