konik.pdf

(298 KB) Pobierz
Wstep do programowania -- czesc IV
Wstep do programowania – czesc IV
Marcin Szpyrka
Katedra Automatyki
Akademia Górniczo-Hutnicza w Krakowie
Instytut Fizyki
Uniwersytet Humanistyczno-Przyrodniczy Jana Kochanowskiego w Kielcach
2009/10
MarcinSzpyrka Wstep do programowania – czesc IV
1/24
Funkcje biblioteczne
Funkcje biblioteczne nie s a czesci a jezyka C. Stanowi a one zbiór funkcji, które
doł aczane s a do kompilatora jezyka i z których mozemy korzystac skracaj ac czas
tworzenia programu.
Przykładowe funkcje matematyczne (math.h)
1 double sin ( double x );
2 double cos ( double x );
3 double tan ( double x );
4 double exp ( double x );
5 double log ( double x );
-- logarytm naturalny
6 double log10 ( double x );
7 double pow ( double x , double y ); -- x do potegi y
8 double sqrt ( double x );
9 double fabs ( double x );
-- wartosc bezwzgledna
MarcinSzpyrka Wstep do programowania – czesc IV
2/24
186282418.003.png 186282418.004.png
Funkcja main z argumentami
Funkcja main moze byc funkcj a wywoływan a z parametrami. Parametry tej funkcji
wysyłane s a z linii wywołania programu.
int main ( int argc , char * argv []) { ... }
Funkcje main definiujemy jako funkcje z dwoma argumentami.
z Pierwszy argument argc jest typu int i jest on licznikiem argumentów, tzn.
mówi nam ile parametrów system operacyjny wysłał do programu. Licznik ten
ma wartosc co najmniej 1, gdyz pierwszym wysyłanym argumentem jest nazwa
programu.
z Drugi argument argv jest wskaznikiem do tablicy argumentów. Poszczególnymi
elementami tej tablicy s a napisy, tzn. wszystkie argumenty s a przechowywane
jako napisy i aby wykorzystac argumenty bed ace liczbami, nalezy je
odpowiednio przekształcic.
MarcinSzpyrka Wstep do programowania – czesc IV
3/24
Funkcja main z argumentami – przykład
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int main ( int argc , char * argv []) / * suma.c * /
5 {
6 int a , b ;
7
8 if ( argc == 3)
9 {
10
a = atoi ( argv [1]);
11
b = atoi ( argv [2]);
12
printf ( "%d\n" , a + b );
13 }
14 else printf ( "Błedna liczba parametrów.\n" );
15
16 return 0;
17 }
MarcinSzpyrka Wstep do programowania – czesc IV
4/24
186282418.005.png
Funkcja main z argumentami – przykład 2
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 int silnia ( int n )
5 {
6 int i , w = 1;
7 for ( i = 1; i <= n ; ++ i ) w * = i ;
8 return w ;
9 }
10
11 int main ( int argc , char * argv [])
12 {
13 int n , k , w ;
14
15 if ( argc == 3)
16 {
17
n = atoi ( argv [1]);
18
k = atoi ( argv [2]);
19
w = silnia ( n )/( silnia ( k ) * silnia ( n - k ));
20
printf ( "%d\n" , w );
21 }
22 else printf ( "Składnia: newton n k\n" );
23
24 return 0;
25 }
MarcinSzpyrka Wstep do programowania – czesc IV
5/24
Operacje na plikach
Przetwarzanie plików w jezyku C odbywa sie w trzech etapach:
1) otwarcie pliku (fopen),
2) zapis lub odczyt do/z pliku (np.: fgetc, fputc, fscanf, fprintf),
3) zamkniecie pliku (fclose).
Komunikacja z plikiem odbywa sie przez wskaznik do struktury FILE,
zadeklarowanej w pliku nagłówkowym stdio . h . Wskaznik ten nazywamy
wskaznikiem pliku.
1 int main () / * pliki.c * /
2 {
3 int a , b , c ;
4 FILE * in , * out ;
5 in = fopen ( "liczby.txt" , "r" );
6 out = fopen ( "wynik.txt" , "w" );
7
8 fscanf ( in , "%d%d" , & a , & b );
9 c = a + b ;
10 fprintf ( out , "%d" , c );
11
12 fclose ( in );
13 fclose ( out );
14 return 0;
15 }
MarcinSzpyrka Wstep do programowania – czesc IV
6/24
186282418.006.png
Operacje na plikach
Funkcja fopen otwieraj aca plik przyjmuje dwa parametry:
FILE * fopen ( char * name , char * mode );
Parametr name powinien zawierac sciezke dostepu do pliku, który chcemy otworzyc.
Parametr mode decyduje o trybie dostepu do pliku:
z "r" – plik bedzie otwarty do czytania;
z "w" – plik bedzie otwarty do zapisu – jesli plik o podanej nazwie istnieje, to
zostanie usuniety z dysku, a nastepnie ponownie utworzony;
z "a" – plik bedzie otwarty do dopisywania na ko ncu.
Funkcja fopen w przypadku pomyslnego nawi azania komunikacji z plikiem zwraca
wskaznik na strukture FILE. W przypadku braku pliku funkcja zwraca wartosc
NULL (0).
MarcinSzpyrka Wstep do programowania – czesc IV
7/24
Operacje na plikach – przykład
1 #include <stdio.h>
2
3 int main ( int argc , char * argv []) / * pliki3.c * /
4 {
5 if ( argc != 3)
6 {
7 printf ( "Błedna liczba parametrów.\n" );
8 return 1;
9 }
10
11 char c ;
12 FILE * in , * out ;
13 in = fopen ( argv [1], "r" );
14 out = fopen ( argv [2], "w" );
15
16 c = getc ( in );
17 while ( c != EOF )
18 {
19 if (( c >= 65) && ( c <= 90)) c += 32;
20
putc ( c , out );
21
c = getc ( in );
22 }
23
24 fclose ( in );
25 fclose ( out );
26 return 0;
27 }
MarcinSzpyrka Wstep do programowania – czesc IV
8/24
186282418.001.png
Operacje na plikach – przykład (maksymalna wartosc w pliku)
1 int main ( int argc , char * argv []) / * maksimum.c * /
2 {
3 float a , max ;
4
5 if ( argc != 2)
6 {
7 printf ( "Wywołanie: maksimum nazwa-pliku\n" );
8 return 1;
9 }
10
11 FILE * f ;
12 f = fopen ( argv [1], "r" );
13 if ( fscanf ( f , "%f" , & a ) != EOF )
14 {
15
16 }
17 else
18 {
19 printf ( "Plik jest pusty.\n" );
20 return 1;
21 }
22 while ( fscanf ( f , "%f" , & a ) != EOF ) if ( max < a ) max = a ;
23
24 printf ( "Maksimum: %.2f\n" , max );
25 fclose ( f );
26 return 0;
27 }
MarcinSzpyrka Wstep do programowania – czesc IV
9/24
Operacje na plikach – przykład (zliczanie znaków)
1 int main ( int argc , char * argv [])
2 {
3 if ( argc != 3)
4 { / * ... * / }
5
6 FILE * f ;
7 f = fopen ( argv [2], "r" );
8 if ( f == NULL )
9 {
10 printf ( "Nie ma takiego pliku.\n" );
11 return 1;
12 }
13
14 int i = 0;
15 char x = argv [1][0];
16 char y = getc ( f );
17 while ( y != EOF )
18 {
19 if ( x == y ) ++ i ;
20
21 }
22
23 printf ( "Liczba znaków: %.d\n" , i );
24 fclose ( f );
25 return 0;
26 }
MarcinSzpyrka Wstep do programowania – czesc IV
10/24
max = a ;
y = getc ( f );
186282418.002.png
Zgłoś jeśli naruszono regulamin