Informatyka 20 03 2012

background image

Biblioteki

background image

Biblioteki - rola

• Zawierają rozwiązania często

występujących problemów (iostream, string,
conio, ...),

• Zawierają rozwiązania szczegółowych

problemów (math),

• pozwalają lepiej zaplanować tworzenie

kodu programu, co ogranicza ryzyko
popełnienia błędu (przykład)

background image

Biblioteki - przykład bez biblioteki

#include <iostream.h>

#include <math.h>

void wprowadz(int a[10], int &n)

{

cout<<"n="; cin>>n;

for (int i=1; i<=n; i++)

{

cout <<"a["<<i<<"]="; cin >>a[i];

}

}

//************************************************

void wariancja(int a[10], int &n, float &war)

{

float sr=0;

for (int i=1; i<=n; i++)

sr+=a[i];

sr/=n;

war=0;

for (int i=1; i<=n; i++)

war=war+(a[i]-sr)*(a[i]-sr);

war=sqrt(war/n);

}

//************************************************

main()

{ int n,a[10];

float war;

wprowadz(a,n);

wariancja(a,n,war);

cout <<"wariancja= "<<war;

getchar();

}

background image

Biblioteki - własna biblioteka

#include <iostream.h>

#include <math.h>

int a[10], n; float war;

#include "c:\moje-f.h"

main()

{

wprowadz();

wariancja();

cout <<"wariancja= "<<war;

getchar();

}

background image

Biblioteki - własna biblioteka

Treść pliku moje-f.h

void wprowadz()

{

cout<<"n="; cin>>n;

for (int i=1; i<=n; i++)

{

cout <<"a["<<i<<"]="; cin >>a[i];

}

}

//************************************************

void wariancja()

{

float sr=0;

for (int i=1; i<=n; i++)

sr+=a[i];

sr/=n;

war=0;

for (int i=1; i<=n; i++)

war=war+(a[i]-sr)*(a[i]-sr);

war=sqrt(war/n);

}

background image

Biblioteki standardowe

• Znajdują się w katalogu include przy standardowej instalacji,
• Najpopularniejsze to:

– iostream.h - operacje wejścia wyjścia,
– string.h - definicje funkcji operujących na napisach,
– assert.h - zawiera macro assert (asercja),
– conio.h - zarządza operacjami we/wy na konsoli MS-DOS,
– dirent.h - zarządza katalogami i ścieżkami dostępu w MS-DOS,
– dos.h - zawiera struktury danych i funkcje do wspierania MS-DOS dla rodziny

procesorów Intel,

– float.h - zarządzanie liczbami rzeczywistymi,
– fstream.h - zarządzanie plikami,
– time.h - narzędzia do odczytywania, interpretacji i prezentacji czasu
– math.h - zawiera definicje popularnych funkcji matematycznych,
– limits.h - ograniczenia dla typów danych,
– stdio.h - operacje wejścia wyjścia (wersje nieobiektowe).

background image

Biblioteki - wybrane zastosowania

• WE/WY z konsoli (wersje obiektowe)

#include <iostream.h>

void main (void)

{ int i; long l; char c; float f; double d; char t[50];

/*int */ cout<<"Podaj int"; cin>>i; cout <<i;

/*long*/ cout<<"Podaj long"; cin>>l; cout <<l;

/*char*/ cout<<"Podaj char"; cin>>c; cout <<c;

/*float*/ cout<<"Podaj float"; cin>>f;cout<<f;

/*double*/cout<<"Podaj double"; cin>>d;cout<<d;

/*text*/cout<<"Podaj tekst"; cin>>t;cout<<t;

}

background image

Biblioteka assert.h

• Wiele kompilatorów oferuje makro assert(). To makro zwraca

wartość TRUE, jeśli jego parametr ma wartość TRUE i
podejmuje pewną akcję w przypadku, gdy jego parametr ma
wartość FALSE. Wiele kompilatorów przerywa działanie
programu w przypadku, gdy argument tego makra nie jest
spełniony; inne zgłaszają wtedy wyjątek.

#include <assert.h>

#include <conio.h>

int main(int argc, char **argv)

{

int x;

cin>>x;

assert(x);

getch();

return 0;

}

background image

Biblioteka string.h

• Funcja strcat - łączy teksty

• Składnia:

– char *strcat(char *dest, const char *src);

• Funcja strcopy - kopiuje tekst do zmiennej,

• Składnia:

– char * StrCopy(char * Dest, char * Source);

• Funkcja strchr - podaje znak odpowiadający danemu kodowi,

• składnia:

– char *strchr( char *s, int c);

• Funkcja strcmp - porównuje teksty

• Składnia:

– int strcmp(const char *s1, const char *s2);

background image

Biblioteka string.h

• Funkcja strlen - podaje ilość znaków w

napisie

• Składnia:

– size_t strlen(const char *s);

background image

Przykład dla string.h

• Przykład:

#include <string.h>

#include <stdio.h>

int main(void)

{

char destination[25];

char *blank = " ", *c = "C++", *Borland = "Borland";

strcpy(destination, Borland);

strcat(destination, blank);

strcat(destination, c);

printf("%s\n", destination);

return 0;

}

background image

Przykład dla string.h

#include <string.h>

#include <stdio.h>

int main(void)

{

char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1\n");

else

printf("buffer 2 is less than buffer 1\n");

ptr = strcmp(buf2, buf3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3\n");

else

printf("buffer 2 is less than buffer 3\n");

return 0;

}

background image

Przykład dla string.h

#include <stdio.h>

#include <string.h>

int main(void)

{

char *string = "Borland International";

printf("%d\n", strlen(string));

return 0;

}

background image

Funkcje z biblioteki math.h

• Ceil - zaokrągla do góry,

• składnia

– double ceil(double x);

• cosh - funkcja cosinus hiperboliczny

• Składnia:

– double cosh(double x);

• exp - funkcja exponent

• Składnia:

– double exp(double x);

• Funkcja fabs- wartość bezwzględna dla liczby double,

• Składnia:

– double fabs(double x);

background image

Biblioteka math.h

Floor - zaokrągla w dół

Skladnia:

– double floor(double x);

pow - podnosi x do y

Składnia:

– double pow(double x, double y);

sqrt - pierwiastek kwadratowy z x

składnia:

– double sqrt(double x);

rand – zwraca liczbę losową z <0, RAND_MAX>

Składnia:

– int rand( void );

srand - inicjalizuje generator

Składnia:

– void srand( unsigned int );

background image

Przykład dla math.h

#include <stdio.h>

#include <math.h>

int main(void)

{

double result;

double x = 4.0;

result = exp(x);

printf("'e' podniesione do potęgi %lf (e ^ %lf) = %lf\n",

x, x, result);

return 0;

}

background image

Przykład dla math.h

#include <stdio.h>

#include <math.h>

int main(void)

{

float number = -1234.0;

printf("number: %f wartosc bezwzględna:

%f\n", number, fabs(number));

return 0;

}

background image

acos

(funkcja) oblicza arcus cosinus, czyli odwrotno

ść

cosinus

(

cos

)

acos
h

(funkcja) oblicza area cosinus hiperboliczny, czyli odwrotno

ść

cosinus hiperboliczny (

cosh

)

asin

(funkcja) oblicza arcus sinus, czyli odwrotno

ść

sinus (

sin

)

asin
h

(funkcja) oblicza area sinus hiperboliczny, czyli odwrotno

ść

sinusa hiperboliczny (

sinh

)

atan

(funkcja) oblicza arcus tangens, czyli odwrotno

ść

tangent

(

tan

)

atan
h

(funkcja) oblicza area tangens hiperboliczny, czyli odwrotno

ść

tangent hiperboliczny (

tanh

)

background image

cbrt

(funkcja)

oblicza pierwiastek sze

ś

cienny

ceil

(funkcja)

zaokr

ą

gla w g

ó

r

ę

liczb

ę

rzeczywist

ą

cos

(funkcja)

oblicza cosinus

cosh

(funkcja)

oblicza cosinus hiperboliczny

fabs

(funkcja)

zwraca warto

ść

bezwzgl

ę

dn

ą

z liczby

fdim

(funkcja)

zwraca dodatni

ą

r

óż

nic

ę

mi

ę

dzy argumentami

background image

floor

(funkcja)

zaokr

ą

gla w d

ó

ł liczb

ę

rzeczywist

ą

fma
x

(funkcja)

por

ó

wnuje dwie liczby i zwraca wi

ę

ksz

ą

z nich

fmin

(funkcja)

por

ó

wnuje dwie liczby i zwraca mniejsz

ą

z nich

hyp
ot

(funkcja)

zwraca pierwiastek z sumy kwadrat

ó

w

argument

ó

w

labs

(funkcja)

zwraca warto

ść

bezwzgl

ę

dn

ą

z liczby

całkowitej typu long

log

(funkcja)

liczy logarytm naturalny z liczby x

background image

log10

(funkcja)

liczy logarytm dziesi

ę

tny z liczby x

log2

(funkcja)

liczy logarytm o podstawie 2 z liczby x

pow

(funkcja)

oblicza pot

ę

g

ę

round

(funkcja)

zaokr

ą

gla warto

ść

do najbli

ż

szej liczby całkowitej

sin

(funkcja)

oblicza sinus

sinh

(funkcja)

oblicza sinus hiperboliczny

background image

sqrt

(funkcja)

zwraca pierwiastek kwadratowy z liczby n

tan

(funkcja)

oblicza tangens

tanh

(funkcja)

oblicza tangens hiperboliczny

background image

Operacje wejścia/wyjścia

Biblioteka stdio

• Ta biblioteka zawiera operacje na plikach, w tym

również na konsoli.

• Typem danej, na którym się tutaj operuje jest

FILE.

• Jest to struktura, która w każdym systemie może

być zdefiniowana inaczej

• Dostęp do struktury (wskaźnik) otrzymujemy od

funkcji fopen przy otwieraniu pliku i przekazać go
musimy do fclose chcąc go zamknąć (oczywiście
przez wskaźnik).

background image

Operacje wejścia/wyjścia

Biblioteka stdio

• Korzystamy z trzech podstawowych strumieni plikowych,

które są predefiniowane (jako stałe typu FILE*):

– stdin - "standardowe wejście"
– stdout - "standardowe wyjście"
– stderr - "standardowe wyjście diagnostyczne„

• Przy uruchamianiu programów na konsoli, stdin to wejście

z klawiatury, a stdout i stderr są kierowane na ekran.

• Przy uruchamianiu programu można dokonać

przekierowania, jeśli wywołujemy program przez
polecenie w linii komend np. w systemie Unix (< dla stdin
i > dla stdout; unixowe powłoki pozwalają też na
przekierowanie stderr).

background image

Funkcje podstawowe

• Najprostszą funkcją wypisującą dane danym

strumieniu jest fputs o następujących
argumentach:

– fputs( napis, strumien );

• Dla stdout jest krótsza forma, puts, która wymaga

tylko pierwszego argumentu.

• Można też wysłać tylko jeden znak przy pomocy

funkcji

– fputc (napis, strumien);

background image

Funkcje podstawowe

Pojedyncze znaki wczytuje się funkcją

– fgetc (argumentem jest tylko strunień, a znak jest zwracany jako wynik).

Odpowiednikiem fgetc z argumentem stdin jest getchar() (bez
argumentów).

Należy jednak pamiętać, że konsola ma zazwyczaj liniowy (czyli
buforowany liniowo), a nie znakowy sposób wczytywania znaków (na
unixie można to zmienić); toteż nawet jeśli oczekuje się wprowadzenia
jednego znaku, to należy po jego wprowadzeniu nacisnąć Enter.

Wczytywany jest oczywiście znak (a więc dana typu char), natomiast
funkcje te zwracają int.

Jest to użyteczne, gdyż część typu int nie używana przez char pozostaje w
ten sposób zawsze zerem. Umożliwia to stwierdzenie końca pliku, co jest
sygnalizowane przez zwrócenie jako wyniku specjalnej stałej EOF; nie
odpowiadającej żadnemu znakowi. Oczywiście koniec pliku można też
sprawdzić wywołując funkcję feof() dla danego strumienia.

Znak po wczytaniu może zostać "cofnięty"; używa się w tym celu funkcji
ungetc( znak, strumien ). Aby nie wprowadzać zamieszania, należy jednak
jako argument podawać ten znak, który ostatnio wprowadzono.

Można wczytać również całą linię. Służy do tego funkcja `fgets':

– fgets( tablica, ile, strumien );

background image

Funkcje podstawowe

• Jednymi z najbardziej przydatnych funkcji obsługujących

"porcje" danych są fread i fwrite. Mają dość podobne
nagłówki:

– size_t fread( void* ptr, size_t s, size_t n, FILE* stream );
– size_t fwrite( const void* ptr, size_t s, size_t n, FILE* stream );

• Funkcja fread wczytuje ze strumienia `n' elementów

wielkości `s' do tablicy podanej jako `ptr'.

• Funkcja fwrite - zapisuje, wedle tych samych reguł.

Wartością zwracaną jest ilość poprawnie wczytanych lub
zapisanych elementów (nie znaków!), czyli jest <=n. Nie
da się oczywiście odróżnić błędu operacji od końca pliku;
należy to sprawdzić przy pomocy feof() i ferror().

background image

Biblioteki - wybrane zastosowania

W języku C (bez obiektów) wykorzystujemy funkcje printf i scanf do pisania i

czytania na konsoli.

#include <stdio.h>

void main (void)

{

int i; long l; char c; float f; double d; char t[50];

/*int */ printf("Podaj int”); scanf(“%d”,&i); printf(“%d”, i);

/*long*/ printf("Podaj long”); scanf(“%ld”,&l); printf(“%ld”, l);

/*char*/ printf("Podaj char”); scanf(“%c”,&c); printf(“%c”, c);

/*float*/ printf("Podaj float”); scanf(“%f”,&f); printf(“%f”, f);

/*float*/ printf("Podaj float”); scanf(“%g”,&f); printf(“%g”, f);

/*double*/ printf("Podaj double”); scanf(“%lf”,&d); printf(“%lf”, d);

/*double*/ printf("Podaj double”); scanf(“%lg”,&d); printf(“%lg”, d);

/*tekst*/ printf("Podaj tekst”); scanf(“%s”,t); printf(“%s”, t);

}

background image

Zadanie 3.1

Napisz program który będzie obliczał potęgę zadanej liczby.

Zadnie 3.2

Napisać program, w który podajemy wartość promienia koła r, a w wyniku
dostajemy wartość pola koła i jego obwód. Proszę zapisać na początku
schemat blokowy tego algorytmu. Pamiętajmy w odpowiednim wymiarze.
Proszę wstawić odpowiednie komentarze

Zadnie 3.3

Napisać program, w który podajemy wartość promienia kuli r, a w wyniku
dostajemy wartość objętość i pole powierzchni kuli o zadanym promieniu.
Proszę zapisać na początku schemat blokowy tego algorytmu. Pamiętajmy
w odpowiednim wymiarze. Proszę wstawić odpowiednie komentarze

Zadanie 3.4

Napisać program, w wyniku którego dwie wczytane z klawiatury liczby
zostaną przeliczone z zastosowanie operatora reszty z dzielenia pierwszej
liczby przez drugą i na odwrót. Komentarz +opis.

background image

Zadanie 3.5

Napisać program, w wyniku którego dwie wczytane z klawiatury liczby
zostaną „przetestowane” wszystkie operatory relacji dwuargumentowych.

Co zostanie wykonane jak zamiast „==” zapiszesz”=” ? Opis + Komentarz

Zadanie 3.6

Napisać program, w wyniku którego dla wczytanej z klawiatury liczby
zostanie wyliczona jej wartość bezwzględna.

Wskazówka - Jedyny operator trójargumentowy w języku C++.
Wyrażenie warunkowe, utworzone przez zastosowanie operatora "?:" ma
postać:

wyra

wyra

ż

ż

enie1 ? wyra

enie1 ? wyra

ż

ż

enie2 : wyra

enie2 : wyra

ż

ż

enie3

enie3


Wyszukiwarka

Podobne podstrony:
20 03 2012 Współczesne systemy polityczyne wykłady
Prawo cywilne - wykład 20.03.2012
20 03 2012 Współczesne doktryny militarne
Cennik TelefonĂłw w Ofercie Biznes od 20 03 2012
Prawo kontytucyjne - wykład 20.03.2012
20 03 2012
Informatyka 06 03 2012
Angielski 20 03 2012
Analiza serwisu informacyjnego - Panorama 20.02.2012, dziennikarstwo i komunikacja społeczna, telew
20 Nerwy czaszkowe?  03 2012 czyjeÂ
Zapytanie cenowe tablice informacyjne PCV, Przegrane 2012, Rok 2012, mail 20.12 Milicz 52 tablice pł
informatyka gr.A nr.20, 2011-2012
Fizyka 0 wyklad organizacyjny Informatyka Wrzesien 30 2012
KOMPLEKSY POLAKOW wykl 29 03 2012
09 03 2012 TEST KOŃCOWY GASTROLOGIA ppt
MATEMATYKA FINANSOWA ĆWICZENIA 3 (25 03 2012)

więcej podobnych podstron