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
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
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
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
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
);
Plik z chomika:
pachulskim
Inne pliki z tego folderu:
QS.pdf
(2477 KB)
konik.pdf
(298 KB)
stos3.c
(1 KB)
stos2.c
(1 KB)
stos1.c
(1 KB)
Inne foldery tego chomika:
Algorytmy i struktury danych
Angielski
Elektrotechnika
Inżynieria Oprogramowania
Matma
Zgłoś jeśli
naruszono regulamin