Elektronika i Telekomunikacja POLSL
Forum Elektroników Wydziału AEI Politechniki Śląskiej
FAQ  ::  Szukaj  ::  Użytkownicy  ::  Grupy  ::  Galerie  ::  Rejestracja  ::  Profil  ::  Zaloguj się, by sprawdzić wiadomości  ::  Zaloguj


Moje notki.. moze sie przydac.

 
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr II / PPK
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
gemis
Administrator



Dołączył: 08 Paź 2006
Posty: 271
Przeczytał: 0 tematów

Skąd: Knurów / TK

PostWysłany: Sob 10:33, 02 Cze 2007    Temat postu: Moje notki.. moze sie przydac.

PPK wyklad: 07-03-14 (Wskazniki)

Zmienna wskaznikowa - zawiera adres obszaru pamieci przy czym obszar ten moze byc interpretowany jako zmienna okreslonego typu.

Deklaracja zmiennych wskaznikowych:
char *wsk_zn;
(gwiazdka-wskaznik)
int *ws_l_cal;
char (*ws_tabl)[10];
Int **wsk_wsk;

Wskazniki umozliwiaja:
- zarzadzanie blokami pamieci, lancuchami, tablicami
- przekazywanie parametrow funkcji
- tworzenie i przetwarzanie dynamicznych struktur danych

Operatory:
- Priorytet operatorow - stanowi o kolejnosci wykonywania dzialan okreslonych
- wiazanie - sposób laczenia operatora z operandem
- operator unarny ( jednoargumentowy) jest wiazany tylko z jednym operandem
- operator binarny (dwuargumentowy) jest wiazany z dwoma operandami

Int a=1, b=2 , c[5]={4,7,6,8,9}, i, s
Int *ws,*wp //ws i wp wskazniki dla liczby calkowitej
Int *wl=&l , l=5 // wl wskazuje zmienna l

ws = &a ; // ws wskazuje adres zmiennej a
b = *ws ;

Printf("\tI\t%4d%4d%\n",a,b)
*wl = 1 ;
Printf("\t\tl=%d",l);
*wl=10 ;
Printf("\t\tl=%d\n\n",1);

ws=&c[0];
a=*ws
b=*(++ws); // inkrement wskaznika nie zmiennej

Printf("\tII\t%4d%4d\n",a,b);

ws=&c[0];wp=ws; //Sumowanie tablicy za pomoca wskaznikow
For (s=0,i=0;i<5;i++) ;
s+=*(ws+i) ;



PPK Alokacja/przydzial pamieci

Sizeof okresla liczbe bajtow wymaganych do przechowywania obiektu o typie wskazanym argumentem.
Sizeof obiekt
Sizeof (nazwa_typu)

Sizeof float 4,Double 8,char 1, int 4, tablica int[100][100] 40000, liczba el poprzedniej tablicy 10000(sizeof[0][0]) , liczba wierszy(sizeof t[0])
Wskaznik do zmiennej char 4, sam char 1.

Dystrybutor pamieci:
Wg dwoch algorytmow:
-pierwszej przymiarki - first fit - pierowszy wolny o wystarczajaco duzym rozmiarze.
-najlepszej przymiarki - best fit - najmniejszy wolny spelniajacy zadanie

Blok zwracany przez funkcje malloc:
[adres nast. Wolnego bloku | rozmiar | ]
Funckcja malloc nie inicjuje obszaru(inicjuje calloc).
Mozna zwalniac bloki w dowolnej kolejnosci.

Void *malloc(size _t n)
Pobiera od systemu zadane bloki pamieci i zwraca wskaznik do n bajtow nie zainicjowanej pamieci lub NULL jesli zadanie nie moze byc spelnione.

Dc = (char *)malloc(100);
If (!dc) {perror("blad aplikacji");
exit(EXIT_FAILURE)}

Kdc=dc
While ((*dc++ = *zr++) != '\0') ; //przepisywanie zmiennej lecz traci sie pierwszy znak, gdyz inkrementujemy petle
Free() - zwalnia obszar pamieci.

static int licznik lokalny - pamieta wartosc np.. W funkcji po wyjsciu z niej

Auto - tworzy automatycznie.

PPK Operacje na lancuchach
%s w printf

Include <string.h>

static char *name[] = ["blad danych","styczen","luty"]

Strcat(docel,s2) - dodaje s2 do docel
Strncat(docel,s2,n) - dodaje n znakow z s2 do docel
Strlen(s) - dlugosc lancucha s.

Petla przy odwracaniu lancuchow.
While(pocz<kon){
temp=*pocz;
*pocz++ = *kon;
*kon-- = temp ;}

PPK Struktury 07-04-25

Struktura - jest obiektem zlozonym z jednej lub kilku zmiennych( tego samego typu lub roznych typow) zgrupowanych pod jedna nazwa.
Struktury mozna:
-przypisywac jedna drugiej
-kopiowac
-przekazywac do funkcji
-zwracac jako wartosc funkcji

Definicja:
Struct <etykieta> {skladowe}
Struct point { int x; //skladowe struktury
int y; } p1,p2,p3; <= lista zmiennych z rezerwacja pamieci

Etykieta struktury - identyfikuje dany rodzaj struktury i moze byc uzywana jako skrot do tej czesci deklaracji ktora wystepuje w nawiasach klamrowych.

struct {...} x,y,z ;
Int x,y,z ;

struct point { int x;
int y; } ;
struct point pt;
struct point minpt={10,10};

Struktury zagniezdzone:
struct rect { struct point p1;
struct point p2; } ;
struct rect ekran;

Dostep do struktury:
Nazwa_struktury.skladowa //jak we flashu Wink
Struct point pt ---- pt.x
Struct rect ekran ---- ekran.p1.x

Tablice struktur:
Struct tab {
char *nazwisko;
int ocena; }prot[]={"Nowak",2,"Nowakowski",3,"Kowal",4,"Reksio",5};

Przyklady:

Struct punkt {
int x ;
int y ; } ;
Struct kwadrat {
Struct punkt p1;
Struct punkt p2;}

Struktura zwracajaca strukture punkt:
Struct punkt utw_pkt (int x,int y) {
Struct punkt temp ;
temp.x=x; // nie ma konfliktu gdyz temp.x jest elementem struktury
temp.y=y ;
return temp }


}

a w mainie :
struct punkt pkt,pkt1,wektor,*pp;
Struct kwadrat kw = (50,50,20,20) ;

Pkt=utw_pkt(x,y) ;

// odleglosc miedzy punktami - przyklad odwolania do zmiennych z strukturach zagniezdzonych.
odl = sqrt((double)pkt.x*pkt.x + (double)pkt.y*pkt.y) ;

Struct punkt przesun(struct punkt p1, struct punkt p2)
{
p1.x+=p2.x;
p1.u+=p2.y;
return p1 ;
}
//przesun puntk o (a,b) ;
Wektor=utw_pkt(a,b) ;
Pkt1=przesun(pkt,wektor);

//dygresja : kanoniczna postac kwadratu : kwadrat okreslony jest przez dwa punkty: lewy dolny i prawy gorny.


Int wewn(struct kwadrat kw, struct punkt pk)
{
Return pk.x>=kw.p1.x && pk.y>=kw.p1.y && pk.x<=kw.p2.x && pk.y<=kw.p2.y ;
}
Struct kwadrat post_kanon(struct kwadrat kw)
{
struct kwadrat temp;
temp.p1.x=min(kw.p1.x,kw.p2.x);
temp.p1.y=min(kw.p1.y,kw.p2.y);
temp.p2.x=min(kw.p1.x,kw.p2.x);
temp.p2.y=min(kw.p1.y,kw.p2.y);
Return temp;
}
To na poczotku: #define min(a,b) (a<b ? a:b)

//czy punkt lezy wewnatrz kwadratu
kw=post_kanon(kw)
Flaga=wewn(kw,pkt1);

//Tablice struktur

For (i=0,il=0;i<DL)
if (prot[i++].ocena>=3) il++;

For(i=0;i<DL;i++)
printf("%s\t%d\n",(prot+i)->nazwisko,prot[i].ocena) ;


}

PPK wyklad 07-05-30

Instrukcje wejscia wyjscia

Standardowe we/wy
Int getchar(void)
Int putchar(int)

Wyjscia formatowane np. Printf,scanf
//minus - dosuniecie argumentu do lewego kranca pola
//plus - liczba zawsze ze znakiem
//liczba - okresla minimalny rozmiar pola
//0 - uzupelnienie nieznaczacymi zerami

//kropka - oddziela rozmiar od precyzji
//liczba - maksymalna liczba dla znakow
// liczba cyfr po kropce
// - minimalna liczba cyfr wartosci calkowitej

Printf(" .5s %.5s\n 10.5s: %10.5s\n-10.5s:%

#o: drukuje w postaci osemkowej
#x: zaspis szensastkowy

Formatowanie wejscia - funkcja scanf
Int scanf(char *format,arg1,arg2)
Arg1,arg2 - musza byc wskaznikami!!! Gdyz kompilator moze nie wykryc bledu.

Obsloga Plikow

FILE *fp; deklaracja zmiennej okreslajaca wskaznik do pliku
FILE *fopen(char *name,*char *mode); mode: r,w,a
Int fclose (FILE *fp);
Int fscanf(FILE *fp,char *format,arg1,arg2..);
Int fprint(FILE *fp,char *format,arg1,arg2..);
Int putc(int c, file *fp);
Int getc(FILE *fp);
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum Elektronika i Telekomunikacja POLSL Strona Główna » Semestr II / PPK Wszystkie czasy w strefie CET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
  ::  
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2005 phpBB Group   ::   template subEarth by Kisioł. Programosy   ::  
Regulamin