e-learning: Automaty komórkowe
|
|
- Gabriela Marszałek
- 7 lat temu
- Przeglądów:
Transkrypt
1 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C++ e-learning: Automaty komórkowe Mirosław Dudek dla Otwartych Warsztatów Komputerowych Streszczenie Celem tego krótkiego kursu jest pokazanie działania prostych automatów komórkowych na przykładach programowania obiektowego. Wydruki stanu automatów zapisywane są do plików ppm. 0.1 Jednowymiarowe automaty komórkowe Za twórcę automatów komórkowych uważa się Johna von Neunmanna. W tym rozdziale ograniczymy się do automatów jednowymiarowych w wersji spopularyzowanej przez Stevena Wolframa (1986) tj. do automatów 8-bitowych. Automat komórkowy oznacza układ, który ewoluuje w dyskretnym czasie i posiada skończoną ilość stanów w których może występować. Rysunek 1: Wyobraźmy sobie że chcemy zrobić wizualizację koralika poruszającego się jednostajnie wzdłuż pierścienia na który jest on nanizany. Żeby nie rozwiązywać skomplikowanych równań ruchu i zastanawiać się nad najlepszym algorytmem numerycznym dla nich wystarczy skorzystać z algorytmu automatu komórkowego. Dla uproszczenia zamiast pierścienia koralik będzie poruszał się po odcinku prostej na który nałożone są periodyczne warunki brzegowe, tj. jeśli koralik poruszając się np. w prawą stronę dotrze do prawego końca odcinka to równoważne będzie pojawieniu się koralika na lewym końcu odcinka. Koralik bedzie kontynuował ruch w prawo. Kolejne uproszczenie to odcinek po którym porusza się koralik będzie przybliżony dyskretną liczbą L położeń które może zająć poruszający się koralik. Miejsce w którym jest koralik będziemy reprezentować jedynką a miejsce puste zerem jak na schemacie poniżej W kolejnych krokach czasowych rysować będziemy dywan czasoprzestrzenny pokazujący zmieniające się położenie koralika. Koralików może być więcej i np. trzy pierwsze kroki ewolucji czasowej dla 5 koralików poruszających się w prawą stronę możemy przedstawić jak niżej Reguły 8-bitowe Wolframa to przyporządkowanie stanom (1 - zajęty lub 0 - pusty) trójki sąsiednich węzłów (i-1,i,i+1) z poprzedniego kroku czasowego t stanu węzła środkowego (i-tego) w kolejnym kroku czasowym t + 1. W przypadku stanów zero-jedynkowych trzy węzły mają M.R. Dudek dla < OWK/ > 1 Materiał dystrybuowany bezpłatnie
2 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C = 8 możliwości pojawienia się jedynek i zer. Formalnie, takie przyporządkowanie trójce bitów jednego bitu dla węzła środkowego można zapisać jako nastepujący przepis σ i (t + 1) = Φ(σ i 1 (t), σ i (t), σ i+1 (t)), (1) gdzie Φ jest regułą Wolframa i ma postać jak na rysunku poniżej. Rysunek 2: Takie odwzorowanie można reprezentować liczbą dziesiętną. Jeśli popatrzymy na konfigurację łańcucha binarnego na Rys.4. to licząc od prawej strony mamy 240 = (2) ji wartość dziesiętna 240 jest tzw. Regułą Wolframa o numerze 240. Dla automatów 8-bitowych mamy 256 reguł. Poniżej znajduje się program reg.cc który przypisuje liczbie dziesiętnej wartość łańcucha binarnego o zadanej długości. 1 #include <iostream> 2 #include <c a s s e r t > 3 #include <s t d l i b. h> 4 5 using namespace std ; class C e l l u l a r { // d e k l a r a c j a k l a s y C e l l u l a r 9 private : 10 int Regula ; 11 char RegulaLancuchBin ; // d e k l a r a c j a wskaznika na znak 12 // pod tym adresem b e d z i e zapamietana 13 // t a b l i c a r e p r e z e n t u j a c a lancuch binarny 14 // d l a l i c z b y Regula 8 b i t o w e j 15 public : C e l l u l a r ( ) { 18 RegulaLancuchBin=new char [ 8 ] ; 19 i f (! RegulaLancuchBin ){ 20 cout<< brak pamieci dla tablicy RegulaLancuchBin [8] <<e n d l ; 21 } 22 } void WczytajRegule ( int dec ){ a s s e r t ( dec>=0 && dec <256); Regula=dec ; i t o s ( Regula, RegulaLancuchBin, 2, 8 ) ; // zamieniamy l i c z b e Regula 31 // na lancuch bitowy 32 } ; M.R. Dudek dla < OWK/ > 2 Materiał dystrybuowany bezpłatnie
3 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C void i t o s ( int xx, char lanc, int nn, int DLUG) ; void PokazRegule ( ) { 37 cout<< Regula <<Regula<< : <<RegulaLancuchBin<<e n d l ; 38 } } ; void C e l l u l a r : : i t o s ( int xx, char lanc, int nn, int DLUG){ 43 long x=xx ; 44 int l=dlug 1; 45 long n = nn ; 46 int j ; for ( j =0; j<dlug; j++) ( l anc+j )= 0 ; 49 ( l anc+dlug)= 0 ; i f (! x ) ; 52 else 53 { 54 do 55 { 56 ( l anc+l )= 0 +x % n ; x/=n ; l ; 61 } while ( x ) ; 62 for ( j =0; j<l ; j++) ( lanc+j )= 0 ; 63 ( l anc+dlug)= 0 ; } 66 } int main ( int argc, char argv ){ 70 i f ( argc!=2){ 71 cout<< Poprawny format polecenia: <<argv [0] << nr reg Wolframa <<e n d l ; 72 return 0 ; 73 } int reg=a t o i ( argv [ 1 ] ) ; //numer r e g u l y Wolframa C e l l u l a r A; 78 A. WczytajRegule ( reg ) ; 79 A. PokazRegule ( ) ; return 0 ; 82 } Kolejny program, reguly.cc, wyrysowuje dywan przestrzenny na ekranie dla zadanej reguły. 1 #include <iostream> 2 #include <c a s s e r t > 3 #include <s t d l i b. h> 4 M.R. Dudek dla < OWK/ > 3 Materiał dystrybuowany bezpłatnie
4 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C++ 5 using namespace std ; class C e l l u l a r { // d e k l a r a c j a k l a s y C e l l u l a r 9 private : 10 int Regula ; 11 char RegulaLancuchBin ; // d e k l a r a c j a wskaznika na znak 12 // pod tym adresem b e d z i e zapamietana 13 // t a b l i c a r e p r e z e n t u j a c a lancuch binarny 14 // d l a l i c z b y Regula 8 b i t o w e j 15 public : C e l l u l a r ( ) { 18 RegulaLancuchBin=new char [ 8 ] ; 19 i f (! RegulaLancuchBin ){ 20 cout<< brak pamieci dla tablicy RegulaLancuchBin [8] <<e n d l ; 21 } 22 } void WczytajRegule ( int dec ){ 25 a s s e r t ( dec>=0 && dec <256); 26 Regula=dec ; 27 i t o s ( Regula, RegulaLancuchBin, 2, 8 ) ; // zamieniamy l i c z b e Regula 28 // na lancuch bitowy 29 } ; void i t o s ( int xx, char lanc, int nn, int DLUG) ; 32 void PokazRegule ( ) { 33 cout<< Regula <<Regula<< : <<RegulaLancuchBin<<e n d l ; 34 } int ZakodujSasiedztwo ( const int &lewy, const int &srodek, const int &prawy ){ 37 int l i c z b a d e k o d, reg, r e f ; 38 char znak, zero= 0 ; 39 r e f =(int ) zero ; reg=prawy+2 srodek+4 lewy ; 42 znak = ( RegulaLancuchBin+7 r e g ) ; 43 l i c z b a d e k o d =(( int ) ( znak)) r e f ; 44 return l i c z b a d e k o d ; } 47 } ; void C e l l u l a r : : i t o s ( int xx, char lanc, int nn, int DLUG){ 50 long x=xx ; 51 int l=dlug 1; 52 long n = nn ; 53 int j ; for ( j =0; j<dlug; j++) ( l anc+j )= 0 ; 56 ( l anc+dlug)= 0 ; i f (! x ) ; 59 else 60 { M.R. Dudek dla < OWK/ > 4 Materiał dystrybuowany bezpłatnie
5 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C++ 61 do 62 { 63 ( l anc+l )= 0 +x % n ; x/=n ; l ; 68 } while ( x ) ; 69 for ( j =0; j<l ; j++) ( lanc+j )= 0 ; 70 ( l anc+dlug)= 0 ; } 73 } void WarunkiPeriodyczne ( int &i l e f t, const int &i, int &i r i g h t, const int &L ) ; int main ( int argc, char argv ){ 78 i f ( argc!=4){ 79 cout<< Poprawny format polecenia: ; 80 cout<<argv [0] << nr reg Wolframa l krok czas l wezlow <<e n d l ; 81 return 0 ; 82 } int reg=a t o i ( argv [ 1 ] ) ; //numer r e g u l y Wolframa 85 int T=a t o i ( argv [ 2 ] ) ; // l i c z b a krokow czasowych 86 int L=a t o i ( argv [ 3 ] ) ; // l i c z b a wezlow C e l l u l a r A; 89 A. WczytajRegule ( reg ) ; 90 A. PokazRegule ( ) ; int Dywan=new int [ L ] ; 93 int DD=new int [ L ] ; for ( int i =0; i <L ; i ++){ 96 Dywan [ i ]=0; 97 } int ilewy, i s r o d, iprawy ; 101 int slewy, ssrod, sprawy ; (Dywan+L/2)=1; // s t a r t for ( int t =0; t<t; t++){ for ( int i =0; i<l ; i ++){ // przegladamy stan dywanu w c h w i l i t 108 i f ( (Dywan+i )==1)cout<< * ; else cout<< ; 109 } 110 cout<<endl ; for ( int i =0; i<l ; i ++){ 114 i l e w y=i 1; i s r o d=i ; iprawy=i +1; 115 WarunkiPeriodyczne ( ilewy, i srod, iprawy, L ) ; 116 slewy = (Dywan+i l e w y ) ; s s r o d = (Dywan+i s r o d ) ; sprawy= (Dywan+iprawy ) ; M.R. Dudek dla < OWK/ > 5 Materiał dystrybuowany bezpłatnie
6 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C++ Rysunek 3: (DD+i )=A. ZakodujSasiedztwo ( slewy, ssrod, sprawy ) ; 119 } for ( int i =0; i<l ; i ++){ 122 (Dywan+i )= (DD+i ) ; 123 } 124 } return 0 ; 128 } void WarunkiPeriodyczne ( int &i l e w y, const int &i, int &i prawy, const int &L){ 131 i f ( i ==0) i l e w y=l 1; 132 else { 133 i f ( i==l 1) i prawy =0; 134 } 135 } Wynik działania tego programu dla reguły Wolframa o numerze 149 jest na rysunku poniżej. Kolejny program regulyppm.cc na dysku zapisuje dywan czasoprzestrzenny w postaci pliku ppm. Pogram ten dostępny jest wraz z innymi źródłami tego kursu. Tutaj zamieszczamy tylko fragment wprowadzający format zapisu do pliku ppm. Pozostałe części programu są jak poprzednio. Uwaga, zmienna L z poprzedniego programu to stała N poniżej. 1 int main ( int argc, char argv ){ 2 i f ( argc!=3){ 3 cout<< Poprawny format polecenia: ; 4 cout<<argv [0] << nr reg Wolframa l krok czas <<e n d l ; 5 return 0 ; 6 } 7 8 int reg=a t o i ( argv [ 1 ] ) ; //numer r e g u l y Wolframa 9 int T=a t o i ( argv [ 2 ] ) ; // l i c z b a krokow czasowych 10 M.R. Dudek dla < OWK/ > 6 Materiał dystrybuowany bezpłatnie
7 0.1 Jednowymiarowe automaty komórkowe Przykłady programowania w C++ 11 C e l l u l a r A; 12 A. WczytajRegule ( reg ) ; 13 // A. PokazRegule ( ) ; int ilewy, i s r o d, iprawy ; 18 int slewy, ssrod, sprawy ; // Najpierw piszemy symbol P3 k t o r y oznaczac b e d z i e ze k o l o r y 22 // beda kodowane w ASCII cout<< P3 <<endl ; //potem piszemy dwie l i c z b y c a l k o w i t e N M r e p r e z e n t u j a c e 27 // odpowiednio l i c z b e kolumn i l i c z b e w i e r s z y obrazka 28 // np // c z y l i N=400 i M= // 31 int N=1000, M=1000; 32 cout<<m<< <<N<<endl ; 33 //W k o l e j n e j l i n i i polecen piszemy maksymalna l i c z b e kolorow cout <<255<<endl ; // Nastepnie piszemy t r o j k i RGB l i c z b c a l k o w i t y c h 38 // z p r z e d z i a l u [ 0, ] o l i c z b i e t r o j e k rownej NxM int r, g, b ; int Dywan=new int [ N ] ; 46 int DD=new int [ N ] ; for ( int i =0; i <N; i ++){ 49 Dywan [ i ]=0; 50 } 51 (Dywan+N/2)=1; // s t a r t for ( int t =0; t<t; t++){ for ( int i =0; i<n; i ++){ // przegladamy stan dywanu w c h w i l i t 57 i f ( (Dywan+i )==1)cout <<255<< <<0<< <<0<<endl ; 58 else cout<<0<< <<0<< <<0<<endl ; 59 } Natomiast na kolejnym rysunku mamy wynik jego działania dla tej samej reguły Wolframa o numerze 149. M.R. Dudek dla < OWK/ > 7 Materiał dystrybuowany bezpłatnie
8 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C++ Rysunek 4: Ta sama reguła 149 ale jej wynik zrzucony został do pliku.ppm o rozdzielczości pikseli. Widać strukturę fraktalną utworzonego dywanu czasoprzestrzennego. 0.2 Dwuwymiarowe automaty komórkowe Ponieważ każdy układ dyskretny w czasie o tej własności że liczba stanów tego układu jest skończona spełnia warunki bycia automatem komórkowym to można pokusić się o napisanie programu na automat dwuwymiarowy. Inspirację można wziąć z gry komputerowej Game of Life Johna Conway a. Nie jest to gra komputerowa w potocznym rozumieniu bo nie ma w niej zwycięzców i przegranych - zobacz np. W naszym przypadku również życie będzie toczyć się na siatce kwadratowej o L L kwadratów. Każdy kwadrat może być w dwóch stanach: zajęty lub pusty co bedziemy oznaczać odpowiednio jedynką i zerem. O tym jaki bedzie stan kwadratu w położeniu (i, j) sieci kwadratowej w kolejnym kroku czasowym decydują reguły, powiedzmy że mają one postać przepisu polegającego na tym ze jeśli w otoczeniu kwadratu (i,j) jest za mało kwadratów zajętych (liczba mniejsza niż 3) to stan kwadratu σ (i,j) (t + 1) w kolejnym kroku czasowym (t+1) wynosi 0. Podobnie jeśli otoczenie kwadratu (i,j) jest przepełnione. Niech stan kwadratu σ (i,j) (t + 1) = 1 tylko jeśli obsadzenie dziewięciu kwadratów z kwadratem (i,j) w centrum przyjmuje wartości 3 lub 4. Wtedy matematycznie te reguły można zapisać w postaci wzoru: 0; jeśli σ (i,j) (t + 1) = 1; jeśli 3 0; jeśli sąsiedztwo(i,j) sąsiedztwo(i,j) sąsiedztwo(i,j) σ (i,j) (t) < 3 (3) σ (i,j) (t) < 5 (4) σ (i,j) (t) 5 (5) gdzie σ = 0 lub 1. Te dziewięć kwadratów reprezentujących sąsiedztwo kwadratu (i,j) przedstawiono na rysunku ponniżej. Poniżej przedstawiony jest kod programu realizującego taki automat komórkowy. Plik dostępny jest niezależnie pod nazwą 2Dautomaty.cc. W programie najpierw poproszeni jestesmy o podanie liniowego wymiaru sieci kwadratowej L. Można wpisać np. L=100. Potem poproszeni jesteśmy o wpisanie liczby kroków czasowych trwania naszego eksperymentu. Na początek najlepiej wybrać liczbę kroków czasowych taką samą jak liniowy wymiar sieci, tj. N=100. W programie w funkcji main() nastepuje wydruk do pliku o nazwie serweta.ppm. Taki wydruk dla (6) M.R. Dudek dla < OWK/ > 8 Materiał dystrybuowany bezpłatnie
9 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C++ Rysunek 5: Sąsiedztwo 9 kwadratów z centralnym kwadratem (i,j). Kazdy kwadrat może być w stanie σ = 0 lub 1 czyli kwadrat pusty i kwadrat obsadzony. parametrów L=1000 i N=1000 można zobaczyć na rysunku poniżej w przypadku gdy warunkami początkowymi były stany wszystkich kwadratów sieci kwadratowej L L puste za wyjątkiem 9 kwadratów w centrum siatki. 1 // p r z y k l a d automatu dwuwymiarowego na s i e c i kwadratowej 2 // Regule stanowi stan s a s i e d z t w a 9 kwadratow ( t u t a j g w i a z d k i ) 3 // s i e c i kwadratowej LxL 4 // 5 // 6 // 7 // 8 // Stan s i wezla srodkowego i w nastepnym kroku czasowym z a l e z y od stanow 9 // s k d z i e w i e c i u wezlow 10 //w kroku poprzednim k = : 11 // 12 // s i =suma k =1..9 s k 13 // Regula : 14 // i f (suma<3) s i =0 15 // i f (suma>=3 && suma<5) s i =1 16 // i f (suma>=5) s i =0 17 #include <iostream> 18 #include <fstream> 19 #include <c a s s e r t > 20 #include <s t d l i b. h> using namespace std ; class Otoczenie { 25 private : 26 int Sasiad [ 9 ] ; // s t a t y c z n a t a b l i c a d l a stanow obsadzen 9 kwadratow 27 int stan ; 28 int L ; // l i n i o w y wymiar s i e c i kwadratowej 29 int suma ; // l i c z b a k t o r a mowi i l e sposrod komorek j e s t z a j e t y c h 30 public : 31 Otoczenie ( int LL){L=LL; } // k o n s t r u k t o r 32 int OkreslStanOtoczenia ( int S, int nr ){ // argumentem j e s t wskaznik na i n t 33 // adres b e d z i e r e p r e z e n t o w a l s i a t k e kwadratowa 34 // przy pomocy t a b l i c y jednowymiarowej 35 // o t o c z e n i e w konwencji s i e c i kwadratowej. 36 //n=i L+j ; numer porzadkowy t a b l i c y jednowymiarowej 37 // odpowiadajacy elementowu ( i, j ) t a b l i c y 38 // dwuwymiarowej 39 // ( i 1, j 1) ( i 1, j ) ( i 1, j +1) 40 // ( i, j 1) ( i, j ) ( i, j +1) 41 // ( i +1, j 1) ( i +1, j ) ( i +1, j +1) M.R. Dudek dla < OWK/ > 9 Materiał dystrybuowany bezpłatnie
10 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C int i i, j j ; 45 int suma=0; 46 int n, i, j ; i=nr /L ; j=nr%l ; // p r z y p i s a n i e numerowi nr wspolrzednych ( i, j ) 49 // s i a t k i kwadratowej // gorny w i e r s z o t o c z e n i a 9 kwadratow 52 i i =PeriodWar ( i 1); 53 j j=periodwar ( j 1); 54 n=i i L+j j ; suma+= (S+n ) ; 55 n=i i L+j ; suma+= (S+n ) ; 56 j j=periodwar ( j +1); 57 n=i i L+j j ; suma+= (S+n ) ; 58 // srodkowy w i e r s z o t o c z e n i a 9 kwadratow 59 j j=periodwar ( j 1); 60 n=i L+j j ; suma+= (S+n ) ; 61 n=i L+j ; suma+= (S+n ) ; 62 j j=periodwar ( j +1); 63 n=i L+j j ; suma+= (S+n ) ; 64 // dolny w i e r s z o t o c z e n i a 9 kwadratow 65 i i =PeriodWar ( i +1); 66 j j=periodwar ( j 1); 67 n=i i L+j j ; suma+= (S+n ) ; 68 n=i i L+j ; suma+= (S+n ) ; 69 j j=periodwar ( j +1); 70 n=i i L+j j ; suma+= (S+n ) ; i f ( suma<3) stan =0; // za malo komorek z a j e t y c h 74 else { 75 i f (suma>=3 && suma<5) stan =1; // warunki optymalne d l a komorek 76 else stan =0; // p r z e p e l n i e n i e 77 } return stan ; 80 } int PeriodWar ( int i ){ // metoda dbajaca aby wartosc 84 int k=i ; // argumentu i b y l a w [ 0, L 1] 85 i f ( i <0) k=l 1; 86 else { 87 i f ( i>=l) k=0; 88 } 89 return k ; 90 } } ; void WarunkiPocz ( int s, int L){ 95 int n ; // najpierw wypelniamy zerami c a l a s i a t k e kwadratowa M.R. Dudek dla < OWK/ > 10 Materiał dystrybuowany bezpłatnie
11 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C++ 98 for ( int i =0; i<l ; i ++){ 99 for ( int j =0; j<l ; j ++){ 100 n=i L+j ; 101 ( s+n)=0; 102 } 103 } // wypelniamy jedynkami 9 kwadratow na srodku s i a t k i n=(l/2) L+L/ 2 ; ( s+n)=1; ( s+n 1)=1; ( s+n+1)=1; 108 n=(l/2+1) L+L/ 2 ; ( s+n)=1; ( s+n 1)=1; ( s+n+1)=1; 109 n=(l/2 1) L+L/ 2 ; ( s+n)=1; ( s+n 1)=1; ( s+n+1)=1; 110 } int Z e r u j S i a t k e ( int tab, int L){ for ( int i =0; i <L ; i ++){ 115 for ( int j =0; j<l ; j ++){ 116 ( tab+i L+j )=0; 117 } 118 } } void ZapisDoPlikuPPM ( int N, int M, int S ){ fstream WY; // d e k l a r a c j a 125 WY. open ( serweta.ppm, i o s : : out ) ; // i z a p i s do p l i k u serweta. ppm // Najpierw piszemy symbol P3 k t o r y oznaczac b e d z i e ze k o l o r y 129 // beda kodowane w ASCII WY<< P3 <<endl ; //potem piszemy dwie l i c z b y c a l k o w i t e N M r e p r e z e n t u j a c e 134 // odpowiednio l i c z b e kolumn i l i c z b e w i e r s z y obrazka 135 // 136 WY<<M<< <<N<<endl ; 137 //W k o l e j n e j l i n i i polecen piszemy maksymalna l i c z b e kolorow WY<<255<<endl ; // Nastepnie piszemy t r o j k i RGB l i c z b c a l k o w i t y c h 142 // z p r z e d z i a l u [ 0, ] o l i c z b i e t r o j e k rownej NxM int r, g, b ; 145 int n ; for ( int i =0; i <M; i ++){ 148 for ( int j =0; j<n; j ++){ n=i M+j ; i f ( ( S+n)==1)WY<<255<< <<0<< <<0<<endl ; 153 else WY<<255<< <<255<< <<255<<endl ; M.R. Dudek dla < OWK/ > 11 Materiał dystrybuowany bezpłatnie
12 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C } 155 } WY. c l o s e ( ) ; // zamkniecie z a p i s u 158 } void ZamienSiatki ( int A, int B, int L2 ){ 161 for ( int n=0;n<l2 ; n++){ 162 (A+n)= (B+n ) ; 163 } 164 } int main ( ) { cout<< Wprowadz wymiar liniowy sieci kwadratowej L= ; 169 int L ; 170 cin>>l ; 171 int L2=L L ; cout<< Podaj liczbe krokow czasowych ewolucji automatu komorkowego N= ; 174 int Nkrokow ; 175 cin>>nkrokow ; // d e k l a r a c j a dynamiczna t a b l i c y SIATKA [ ] 178 int SIATKA=new int [ L2 ] ; //w kroku t 179 // wtedy n t y element t a b l i c y oznacza w i e r s z i oraz kolumne j 180 // i=n/l oraz j=n % L int DUBEL=new int [ L2 ] ; // s i a t k a d u b e l w kroku t // Deklarujemy warunki poczatkowe z a p e l n i e n i a t a b l i c y SIATKA 187 //w p o s t a c i z a p e l n i o n y c h 9 kwadratow 188 // p o z o s t a l e elementy s i a t k i sa n i e z a p e l n i o n e WarunkiPocz (SIATKA, L ) ; // a l o k a c j a o b i e k t u z k l a s y Otoczenie 194 Otoczenie A(L ) ; // o b i e k t z metoda do w y l i c z e n i a 195 // stanu s a s i e d z t w a s k l a d a j a c e g o s i e z 9 kwadratow for ( int t =0; t<nkrokow ; t++){ 198 Z e r u j S i a t k e (DUBEL, L ) ; // wyzerowanie elementow s i a t k i dubla 199 // stany z a j e t o s c i elementow s i a t k i 200 // dotycza kroku w t for ( int n=0;n<l2 ; n++){ 202 (DUBEL+n)=A. OkreslStanOtoczenia (SIATKA, n ) ; //argumentem 203 // j e s t SIATKA d l a kroku t 204 } ZamienSiatki (SIATKA,DUBEL, L2 ) ; //podmiana s i a t e k 208 } 209 M.R. Dudek dla < OWK/ > 12 Materiał dystrybuowany bezpłatnie
13 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C ZapisDoPlikuPPM (L, L,SIATKA ) ; return 0 ; 213 } Rysunek 6: Wynik działania dwuwymiarowego automatu komórkowego z regułami przeżycia we wzorach (6) po 1000 kroków czasowych i warunkach pocątkowych w postaci zapełnionych 9 kwadratów na środku siatki. W przypadku tego programu skorzystaliśmy z małej sztuczki polegającej na tym że do zapisu stanów L L kwadratów użyliśmy tablicy jednowymiarowej zamiast kwadratowej. W tym przypadku tablica jednowymiarowa SIATKA[0.. L 2 1] przebiegała L 2 kwadratów sieci kwadratowej wierszami od góry do dołu jak poniżej: L-1 L L+1 L L-1... L(L-1) L(L-1)+1 L(L-1)+2... L 2-1 Wtedy element (i, j) można wyliczyć z następujących równań: M.R. Dudek dla < OWK/ > 13 Materiał dystrybuowany bezpłatnie
14 0.2 Dwuwymiarowe automaty komórkowe Przykłady programowania w C++ i = n/l j = n%l (7) gdzie n = 0, 1,..., L 2 1 jest indeksem tablicy jednowymiarowej. M.R. Dudek dla < OWK/ > 14 Materiał dystrybuowany bezpłatnie
2.4 Dziedziczenie. 2.4 Dziedziczenie Przykłady programowania w C - kurs podstawowy
2.4 Dziedziczenie Poprzednie dwa rozdziały które dotyczyły zagadnienia automatów komórkowych na przykładach programów w C++. Mogłyby one sugerować że niekoniecznie trzeba programować obiektowo aby napisać
Rozwiązanie. #include <cstdlib> #include <iostream> using namespace std;
Programowanie C++ Zadanie 1 Napisz program do obliczenia sumy i iloczynu ciągu liczb zakooczonego liczbą zero. Zakładamy, że ciąg zawiera co najmniej jedną liczbę (założenie to jest konieczne przy obliczeniu
Informacje wstępne #include <nazwa> - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char
Programowanie C++ Informacje wstępne #include - derektywa procesora umożliwiająca włączenie do programu pliku o podanej nazwie. Typy danych: char, signed char = -128 do 127, unsigned char = od
Biblioteka obiektowa C++ klasa string - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ
programowanie w C++ dla OWK Biblioteka obiektowa C++ klasa string - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych
Sztuczne neurony - programowanie w C++ Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ
programowanie w C++ dla OWK Sztuczne neurony - programowanie w C++ Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie Dyskusja o stworzeniu sztucznego mózgu zawsze powoduje duże emocje. Pierwszy
Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ
programowanie w C++ dla OWK Programowanie w C++ z użyciem kontenerów - parę przykładów programów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych
Wstęp do Informatyki
Wstęp do Informatyki Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Wstęp do Informatyki Wykład 11 1 / 52 Pętla for # i n c l u d e
tablica: dane_liczbowe
TABLICE W JĘZYKU C/C++ tablica: dane_liczbowe float dane_liczbowe[5]; dane_liczbowe[0]=12.5; dane_liczbowe[1]=-0.2; dane_liczbowe[2]= 8.0;... 12.5-0.2 8.0...... 0 1 2 3 4 indeksy/numery elementów Tablica
Część 4 życie programu
1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część
Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej
Zajęcia nr 2 Programowanie strukturalne dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej Pętla while #include using namespace std; int main ()
TEMAT : KLASY POLIMORFIZM
TEMAT : KLASY POLIMORFIZM 1. Wprowadzenie do polimorfizmu i funkcji wirtualnych w języku C++ Język C++ zakłada, że w pewnych przypadkach uzasadnione jest tworzenie klas, których reprezentanci w programie
Programowanie i struktury danych
Programowanie i struktury danych 1 / 19 Dynamiczne struktury danych Dynamiczną strukturą danych nazywamy taka strukturę danych, której rozmiar, a więc liczba przechowywanych w niej danych, może się dowolnie
Język C++ wykład VIII
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Obiektowość języka C++ ˆ Klasa (rozszerzenie struktury), obiekt instancją klasy, konstruktory i destruktory ˆ Enkapsulacja - kapsułkowanie,
Tablice. Monika Wrzosek (IM UG) Podstawy Programowania 96 / 119
Tablice Tablica to struktura danych, która może przechowywać wiele wartości tego samego typu. Na przykład tablica może zawierać: 10 wartości typu int opisujących liczbę studentów przyjętych na kierunek
Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną.
Projekt 6: Równanie Poissona - rozwiązanie metodą algebraiczną. Tomasz Chwiej 9 sierpnia 18 1 Wstęp 1.1 Dyskretyzacja n y V V 1 V 3 1 j= i= 1 V 4 n x Rysunek 1: Geometria układu i schemat siatki obliczeniowej
typ y y p y z łoż o on o e n - tab a lice c e w iel e owym m ar a o r we, e stru r kt k ury
typy złożone- tablice wielowymiarowe, struktury Wykład 6 Deklarowanie wskaźników nazwa_typu * nazwa_wskaznika; WSKAŹNIKI: PRZYPOMNIENIE Przypisywanie wskaźnikom wartości double * pn = &zmienna_typu_double;
Wprowadzenie do programowania i programowanie obiektowe
Wprowadzenie do programowania i programowanie obiektowe Wirtotechnologia Zajęcia nr 10 autor: Grzegorz Smyk Wydział Odlewnictwa Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza
Algorytmika i programowanie. Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie
Algorytmika i programowanie Wykład 2 inż. Barbara Fryc Wyższa Szkoła Informatyki i Zarządzania w Rzeszowie Tablice Tablica jest zbiorem elementów tego samego typu. Każdy element jest identyfikowany (numer
Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne
1 Podstawy algorytmiki i programowania - wykład 2 Tablice dwuwymiarowe cd Funkcje rekurencyjne Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Programowanie - wykład 4
Programowanie - wykład 4 Filip Sośnicki Wydział Fizyki Uniwersytet Warszawski 20.03.2019 Przypomnienie Prosty program liczący i wyświeltający wartość silni dla wprowadzonej z klawiatury liczby: 1 # include
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19. Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach.
Języki i paradygmaty programowania 1 studia stacjonarne 2018/19 Lab 9. Tablice liczbowe cd,. Operacje na tablicach o dwóch indeksach. 1. Dynamiczna alokacja pamięci dla tablic wielowymiarowych - Przykładowa
Podstawy programowania w C++
Podstawy programowania w C++ Strumienie wejścia cin>> i wyjścia cout
Programowanie i struktury danych
Programowanie i struktury danych 1 / 30 STL Standard Template Library, STL (ang. = Standardowa Biblioteka Wzorców) biblioteka C++ zawierająca szablony (wzorce), które umożliwiają wielokrotne użycie. Główne
W2 Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy :
Wprowadzenie do klas C++ Klasa najważniejsze pojęcie C++. To jest mechanizm do tworzenia obiektów. Deklaracje klasy : class nazwa_klasy prywatne dane i funkcje public: publiczne dane i funkcje lista_obiektów;
Programowanie w C++ Wykład 3. Katarzyna Grzelak. 12 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35
Programowanie w C++ Wykład 3 Katarzyna Grzelak 12 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 35 Zakres ważności obiektów K.Grzelak (Wykład 1) Programowanie w C++ 2 / 35 Zakres ważności obiektów
Obliczenia inspirowane Naturą
Obliczenia inspirowane Naturą Wykład 02 Jarosław Miszczak IITiS PAN Gliwice 06/10/2016 1 / 31 Czego dowiedzieliśmy się na poprzednim wykładzie? 1... 2... 3... 2 / 31 1 2 3 3 / 31 to jeden z pierwszych
Wymiar musi być wyrażeniem stałym typu całkowitego, tzn. takim, które może obliczyć kompilator. Przykłady:
5 Tablice Tablica jest zestawem obiektów (zmiennych) tego samego typu, do których można się odwołać za pomocą wspólnej nazwy. Obiekty składowe tablicy noszą nazwę elementów tablicy. Dostęp do nich jest
Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe
I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 5 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41
Programowanie w C++ Wykład 2 Katarzyna Grzelak 5 marca 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 41 Reprezentacje liczb w komputerze K.Grzelak (Wykład 1) Programowanie w C++ 2 / 41 Reprezentacje
wykład V uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C++ klasy i obiekty wykład V dr Jarosław Mederski Spis Język C++ - klasy
i obiekty Programowanie i obiekty uzupełnienie notatek: dr Jerzy Białkowski i obiekty 1 2 3 4 i obiekty Obiektowość języka C++ Na tym wykładzie poznamy: ˆ Klasa (w języku C++ rozszerzenie struktury, typ
Programowanie w C++ Wykład 2. Katarzyna Grzelak. 4 marca K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44
Programowanie w C++ Wykład 2 Katarzyna Grzelak 4 marca 2019 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 44 Na poprzednim wykładzie podstawy C++ Każdy program w C++ musi mieć funkcję o nazwie main Wcięcia
Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach
Materiał uzupełniający do ćwiczen z przedmiotu: Programowanie w C ++ - ćwiczenia na wskaźnikach 27 kwietnia 2012 Wiedząc, że deklarowanie typu rekordowego w języku C/ C++ wygląda następująco: struct element
utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,
Lista 3 Zestaw I Zadanie 1. Zaprojektować i zaimplementować funkcje: utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy, zapisz
Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ
programowanie w C++ dla OWK Programowanie w C++ - wybrane przykłady szablonów Opracowanie: dr hab. Mirosław R. Dudek, prof. UZ 1 Streszczenie W tym rozdziale podamy kilka najprostszych przykładów programów
Proste programy w C++ zadania
Proste programy w C++ zadania Zbiór zadao do samodzielnego rozwiązania stanowiący powtórzenie materiału. Podstawy C++ Budowa programu w C++ Dyrektywy preprocesora Usunięcie dublujących się nazw Częśd główna
Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia
Podstawy informatyki Elektrotechnika I rok Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia Katedra Energoelektroniki i Automatyki Systemów Przetwarzania Energii AGH Kraków 2017 Tematyka
MACIERZE. Sobiesiak Łukasz Wilczyńska Małgorzata
MACIERZE Sobiesiak Łukasz Wilczyńska Małgorzata Podstawowe pojęcia dotyczące macierzy Nie bez przyczyny zaczynamy od pojęcia macierzy, które jest niezwykle przydatne we wszystkich zastosowaniach, obliczeniach
Podstawy Programowania
Podstawy Programowania Monika Wrzosek Instytut Matematyki Uniwersytet Gdański Matematyka 2017/18 Monika Wrzosek (IM UG) Podstawy Programowania 1 / 119 Sprawy organizacyjne E-mail: mwrzosek@mat.ug.edu.pl
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Operacje wejścia/wyjścia (odsłona druga) - pliki
Operacje wejścia/wyjścia (odsłona druga) - pliki Bogdan Kreczmer ZPCiR IIAiR PWr pokój 307 budynek C3 bogdan.kreczmer@pwr.wroc.pl Copyright c 2005 2008 Bogdan Kreczmer Niniejszy dokument zawiera materiały
1 Wskaźniki. 1.1 Główne zastosowania wskaźników
1 Wskaźniki Wskaźnik (ang. pointer) jest obiektem (zmienną) przechowującym adres pamięci. Definiowanie wskaźników: typ *nazwa wskaznika; np.: int *wsk na x;, double *xxx;, char *znak;. Aby można było pracować
Modelowanie wieloskalowe. Automaty Komórkowe - podstawy
Modelowanie wieloskalowe Automaty Komórkowe - podstawy Dr hab. inż. Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wydział Inżynierii Metali i Informatyki Przemysłowej Budynek B5 p. 716 lmadej@agh.edu.pl
Składnia C++ Programowanie Obiektowe Mateusz Cicheński
Składnia C++ Programowanie Obiektowe Mateusz Cicheński Klasy i modyfikatory dostępu Przesłanianie metod Polimorfizm Wskaźniki Metody wirtualne Metody abstrakcyjne i interfejsy Konstruktory i destruktory
Wskaźnik może wskazywać na jakąś zmienną, strukturę, tablicę a nawet funkcję. Oto podstawowe operatory niezbędne do operowania wskaźnikami:
Wskaźniki są nieodłącznym elementem języka C. W języku C++ także są przydatne i korzystanie z nich ułatwia pracę, jednak w odróżnieniu do C wiele rzeczy da się osiągnąć bez ich użycia. Poprawne operowanie
Podstawy Programowania Podstawowa składnia języka C++
Podstawy Programowania Podstawowa składnia języka C++ Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Szablon programu w C++ Najprostszy program w C++ ma postać: #include #include
Wstęp do programowania
wykład 7 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2016/2017 Losowanie liczb całkowitych Dostępne biblioteki Najprostsze losowanie liczb całkowitych można wykonać za pomocą funkcji
Układy dynamiczne Chaos deterministyczny
Układy dynamiczne Chaos deterministyczny Proste iteracje odwzorowań: Funkcja liniowa Funkcja logistyczna chaos deterministyczny automaty komórkowe Ewolucja układu dynamicznego Rozwój w czasie układu dynamicznego
WYKŁAD 8. Funkcje i algorytmy rekurencyjne Proste przykłady. Programy: c3_1.c..., c3_6.c. Tomasz Zieliński
WYKŁAD 8 Funkcje i algorytmy rekurencyjne Proste przykłady Programy: c3_1.c..., c3_6.c Tomasz Zieliński METODY REKURENCYJNE (1) - program c3_1 ======================================================================================================
KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany
KLASA UCZEN Napisz deklarację klasy Uczen, w której przechowujemy następujące informacje o uczniu: imię, nazwisko, średnia (pola prywatne), poza tym klasa zawiera metody: konstruktor bezparametrowy (nie
Wstęp do programowania
wykład 3 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Instrukcja wielokrotnego wyboru Instrukcja wielokrotnego wyboru switch umożliwia podejmowanie decyzji na podstawie wartości
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania. Zofia Kruczkiewicz
Ćwiczenie 7 z Podstaw programowania. Język C++, programy pisane w nieobiektowym stylu programowania Zofia Kruczkiewicz Zakres Funkcje przetwarzające teksty (biblioteka ) - tworzenie własnych
Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy
1 Podstawy algorytmiki i programowania - wykład 6 Sortowanie- algorytmy Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion, 2012 www.cplusplus.com
TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ;
Ogólna postać definicji tablicy: TABLICE W JĘZYKU C/C++ typ_elementu nazwa_tablicy [wymiar_1][wymiar_2]... [wymiar_n] ; np. int tablica [ 10 ]; // 10-cio elementowa tablica liczb całkowitych char tekst
Języki i metodyka programowania. Wprowadzenie do języka C
Literatura: Brian W. Kernighan, Dennis M. Ritchie Język Ansi C, Wydawnictwa Naukowo - Techniczne, 2007 http://cm.bell-labs.com/cm/cs/cbook/index.html Scott E. Gimpel, Clovis L. Tondo Język Ansi C. Ćwiczenia
Zmienne i struktury dynamiczne
Zmienne i struktury dynamiczne Zmienne dynamiczne są to zmienne, które tworzymy w trakcie działania programu za pomocą operatora new. Usuwa się je operatorem delete. Czas ich występowania w programie jest
I - Microsoft Visual Studio C++
I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i
// Potrzebne do memset oraz memcpy, czyli kopiowania bloków
ZAWARTOŚCI 3 PLIKOW W WORDZIE: MAIN.CPP: #include #include #include pamięci // Potrzebne do memset oraz memcpy, czyli kopiowania bloków #include "Rysowanie_BMP.h" using
Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną)
1 Wstęp do informatyki- wykład 12 Funkcje (przekazywanie parametrów przez wartość i zmienną) Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania. Wydanie VI, Helion,
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw
Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw Mirosław Głowacki 1 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej
Pytania sprawdzające wiedzę z programowania C++
Pytania sprawdzające wiedzę z programowania C++ Wstęp 1. Zaprezentuj mechanikę tworzenia programu napisanego w języku C++. 2. Co to jest kompilacja? 3. Co to jest konsolidacja? 4. Co to jest kod wykonywalny?
Metoda eliminacji Gaussa
Metoda eliminacji Gaussa Rysunek 3. Rysunek 4. Rozpoczynamy od pierwszego wiersza macierzy opisującej nasz układ równań (patrz Rys.3). Zakładając, że element a 11 jest niezerowy (jeśli jest, to niezbędny
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Wyjątki (exceptions)
Instrukcja laboratoryjna nr 6 Programowanie w języku C 2 (C++ poziom zaawansowany) Wyjątki (exceptions) dr inż. Jacek Wilk-Jakubowski mgr inż. Maciej Lasota dr inż. Tomasz Kaczmarek Wstęp Wyjątki (ang.
ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015
POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2015 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 4 : Napisy. Tablice dwuwymiarowe. Formaty
Programowanie w C++ Wykład 5. Katarzyna Grzelak. 16 kwietnia K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27
Programowanie w C++ Wykład 5 Katarzyna Grzelak 16 kwietnia 2018 K.Grzelak (Wykład 1) Programowanie w C++ 1 / 27 Pojęcia z poprzednich wykładów Tablica to ciag obiektów tego samego typu, zajmujacy ciagły
Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )
SORTOWANIE 1 SORTOWANIE Proces ustawiania zbioru elementów w określonym porządku. Stosuje się w celu ułatwienia późniejszego wyszukiwania elementów sortowanego zbioru. 2 Definicja Ciąg wejściowy: a 1,
Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk. Wydział Inżynierii Metali i Informatyki Przemysłowej
Podstawy informatyki Informatyka stosowana - studia niestacjonarne Grzegorz Smyk Wydział Inżynierii Metali i Informatyki Przemysłowej Akademia Górniczo Hutnicza im. Stanisława Staszica w Krakowie, rok
wykład II uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C - funkcje, tablice i wskaźniki wykład II dr Jarosław Mederski Spis
i cz. 2 Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 i cz. 2 2 i cz. 2 3 Funkcje i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje instrukcje } i cz. 2 typ nazwa ( lista-parametrów ) { deklaracje
1 Podstawy c++ w pigułce.
1 Podstawy c++ w pigułce. 1.1 Struktura dokumentu. Kod programu c++ jest zwykłym tekstem napisanym w dowolnym edytorze. Plikowi takiemu nadaje się zwykle rozszerzenie.cpp i kompiluje za pomocą kompilatora,
Kontrola przebiegu programu
Kontrola przebiegu programu Wykład 9 Instrukcje sterujące: pętle rozgałęzienia skoki PRZYPOMINAJKA Zadanie : Zaprojektuj rekurencyjny przepis na wyznaczenie największej takiej liczby m, że 2 m jest podzielnikiem
Programowanie C++ Wykład 2 - podstawy języka C++ dr inż. Jakub Możaryn. Warszawa, Instytut Automatyki i Robotyki
Wykład 2 - podstawy języka C++ Instytut Automatyki i Robotyki Warszawa, 2014 Wstęp Plan wykładu Struktura programu. Zmienne i ich nazwy, podstawowe typy: całkowite, rzeczywiste, znakowe i napisowe. Instrukcje:
WYKŁAD 10. Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo. Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5
WYKŁAD 10 Zmienne o złożonej budowie Statyczne i dynamiczne struktury danych: lista, kolejka, stos, drzewo Programy: c5_1.c, c5_2, c5_3, c5_4, c5_5 Tomasz Zieliński ZMIENNE O ZŁOŻONEJ BUDOWIE (1) Zmienne
12. Rekurencja. UWAGA Trzeba bardzo dokładnie ustalić <warunek>, żeby mieć pewność, że ciąg wywołań się zakończy.
12. Rekurencja. Funkcja rekurencyjna funkcja, która wywołuje samą siebie. Naturalne postępowanie: np. zbierając rozsypane pionki do gry podnosi się zwykle pierwszy, a potem zbiera się resztę w ten sam
3. Macierze i Układy Równań Liniowych
3. Macierze i Układy Równań Liniowych Rozważamy równanie macierzowe z końcówki ostatniego wykładu ( ) 3 1 X = 4 1 ( ) 2 5 Podstawiając X = ( ) x y i wymnażając, otrzymujemy układ 2 równań liniowych 3x
1 Pierwsze kroki w C++ cz.3 2 Obsługa plików
1 Pierwsze kroki w C++ cz.3 2 Obsługa plików Do pracy z plikami zewnętrznymi niezbędna będzie biblioteka fstream. Udostępnia ona programiście narzędzia do zapisu i odczytu plików. 2.1 Typ zmiennej fstream.
Inicjacja tablicy jednowymiarowej
TABLICE C++ Inicjacja tablicy jednowymiarowej typ_komórek_tablicy nazwa_tablicy [ ilość elementów tablicy ] ; np.: int tablica[1000]; czyli tablica, która może przechowywać tysiąc elementów typu całkowitego,
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego
Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie
MODELOWANIE RZECZYWISTOŚCI
MODELOWANIE RZECZYWISTOŚCI Daniel Wójcik Instytut Biologii Doświadczalnej PAN Szkoła Wyższa Psychologii Społecznej d.wojcik@nencki.gov.pl dwojcik@swps.edu.pl tel. 022 5892 424 http://www.neuroinf.pl/members/danek/swps/
Wstęp do informatyki- wykład 7
1 Wstęp do informatyki- wykład 7 Operatory przypisania, złożone operatory przypisania, Pętla while i do..while Treści prezentowane w wykładzie zostały oparte o: S. Prata, Język C++. Szkoła programowania.
Wstęp do programowania
wykład 4 Agata Półrola Wydział Matematyki i Informatyki UŁ sem. zimowy 2017/2018 Pętle wykonujące się podaną liczbę razy Jeśli chcemy wykonać pewien fragment programu określoną liczbę razy, możemy użyć
Techniki Programowania wskaźniki 2
Techniki Programowania wskaźniki 2 Łukasz Madej Katedra Informatyki Stosowanej i Modelowania Wykłady opracowane we współpracy z Danutą Szeligą, Łukaszem Sztangretem Jeżeli wskaźnik pokazuje na element
Wstęp do Programowania 2
Wstęp do Programowania 2 dr Bożena Woźna-Szcześniak bwozna@gmail.com Akademia im. Jana Długosza Wykład 5 W programowaniu obiektowym programista koncentruje się na obiektach. Zadaje sobie pytania typu:
wykład IV uzupełnienie notatek: dr Jerzy Białkowski Programowanie C/C++ Język C, a C++. wykład IV dr Jarosław Mederski Spis Język C++ - wstęp
Programowanie uzupełnienie notatek: dr Jerzy Białkowski 1 2 3 4 Historia C++ został zaprojektowany w 1979 przez Bjarne Stroustrupa jako rozszerzenie języka C o obiektowe mechanizmy abstrakcji danych i
Programowanie obiektowe
Programowanie obiektowe 10.04.2017 W slajdach są materiały zapożyczone z https://www.ii.uni.wroc.pl/~prz/2012lato/cpp/slajdy/cpp5.ppt Przykład wykorzystania obiektu Obiekt X jest instancją klasy Y Obiekt
Polimorfizm w pigułce
Polimorfizm w pigułce Kwadrat kwadr( 5 );... wypiszdane( &kwadr );... void wypiszdane( Kwadrat * k ) cout
Projektowanie klas c.d. Projektowanie klas przykład
Projektowanie klas c.d. ogólne wskazówki dotyczące projektowania klas: o wyodrębnienie klasy odpowiedź na potrzeby życia (obsługa rozwiązania konkretnego problemu) o zwykle nie uda się utworzyć idealnej
Wykład II. Programowanie II - semestr II Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej
Wykład II - semestr II Kierunek Informatyka Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2015 c Copyright 2015 Janusz Słupik Operacje dyskowe - zapis do pliku #include #include
C++ wprowadzanie zmiennych
C++ wprowadzanie zmiennych Każda zmienna musi być zadeklarowana, należy określić jej nazwę (identyfikator) oraz typ. Opis_typu lista zmiennych Dla każdej zmiennej rezerwowany jest fragment pamięci o określonym
Podczas dziedziczenia obiekt klasy pochodnej może być wskazywany przez wskaźnik typu klasy bazowej.
Polimorfizm jest filarem programowania obiektowego, nie tylko jeżeli chodzi o język C++. Daje on programiście dużą elastyczność podczas pisania programu. Polimorfizm jest ściśle związany z metodami wirtualnymi.
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 5
JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM Wykład 5 1 SPECYFIKATOR const Specyfikator (przydomek) const: Umieszczenie przed nazwą zmiennej specyfikatora const w jej definicji informuje kompilator,
Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016
Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,
Złożoność obliczeniowa zadania, zestaw 2
Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze
Języki programowania - podstawy
Języki programowania - podstawy Andrzej Dudek Wydział Techniczno Informatyczny W Jeleniej Górze Dudek A. Informatyka przemysłowa tendencje i wyzwania 26.10.2015 1 /24 Algorytm określony sposób rozwiązania
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Podstawy języka C++ Maciej Trzebiński. Instytut Fizyki Jądrowej Polskiej Akademii Nauk. Praktyki studenckie na LHC IVedycja,2016r.
M. Trzebiński C++ 1/14 Podstawy języka C++ Maciej Trzebiński Instytut Fizyki Jądrowej Polskiej Akademii Nauk Praktyki studenckie na LHC IVedycja,2016r. IFJ PAN Przygotowanie środowiska pracy Niniejsza
a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn a 1j a 2j R i = , C j =
11 Algebra macierzy Definicja 11.1 Dla danego ciała F i dla danych m, n N funkcję A : {1,..., m} {1,..., n} F nazywamy macierzą m n (macierzą o m wierszach i n kolumnach) o wyrazach z F. Wartość A(i, j)
Programowanie komputerowe. Zajęcia 4
Programowanie komputerowe Zajęcia 4 Typ logiczny Wartości logiczne są reprezentowane przez typ bool. Typ bool posiada tylko dwie wartości: true i false. Zamiast wartości logicznych można używać wartości
Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019
Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości
Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016
Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa