Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Zespół Szkół Ogólnokształcących w Bobowej

Za pomocą HTML i znacznika <img> potrafimy wyświetlać grafiki na stronie WWW. Wykorzystując JavaScript będziemy mogli podmieniać grafiki na inne i dokonywać wielu różnorodnych przekształceń. Służy do tego instrukcja DrawImage (cała lekcja, obrazki do lekcji). 

Potrafimy rysować geometryczne obiekty w obszarze canvas za pomocą linii, prostokątów, łuków i przeprowadzać na nich skomplikowane obliczenia niezbędne do ich animowania. Do obszaru canvas można również wczytać dowolne grafiki bitmapowe. Na początku zajmiemy się tzw efektem rollover, czyli zamianą jednego obrazka na inny po najechaniu (kliknięciu) na niego myszką (cała lekcja, obrazki), zsologo).

 

var Tnaz = new Array( 'cd','dr','fd','hd','gr','mu','kl','md','mo','my','pa','pl','po','pr','sk');
var Tobr=new Array();
for (i=0; i<Tnaz.length; i++) {
  Tobr[i] = new Array(); 
  Tobr[i][0] = new Image();
  Tobr[i][0].src='obrazki/'+Tnaz[i]+'.gif';
  Tobr[i][1] = new Image();
  Tobr[i][1].src='obrazki/'+Tnaz[i]+'_.gif'
}

Do rysowania odcinków pok kątem przygotowana została na poprzedniej lekcji funkcja ODCINEK. Wykorzystamy ją do rysowania obrotowych kwadratów, rombów i gwiazdek. (cała lekcja)

 
// KWADRAT z AKTYWNYM ŚRODKIEM
function KWAS(xs,ys,bok,kat,kol){
  var k=kat+135;
  var b=bok*Math.sqrt(2)/2;
  var x1=xs+b*Math.cos(k*Math.PI/180);
  var y1=ys-b*Math.sin(k*Math.PI/180);
  c.moveTo(x1,y1);
  var p=ODCINEK(x1,y1,bok,kat-90,kol);
  p= ODCINEK(p.x1,p.y1,bok,kat,kol);
  p= ODCINEK(p.x1,p.y1,bok,kat+90,kol);
  ODCINEK(p.x1,p.y1,bok,kat+180,kol);
}

Zestaw przykładowych zadań maturalnych zawierających rozwiązania problemów dotyczących głównie wyszukiwania i przekształcania liczb i tekstów zapisanych w plikach tekstowych.

//PALINDROMY 2010
cout << "PALINDROMY" << endl;
ifstream odczytB("palindromy2010.txt");
string napisB;
while (!odczytB.eof()){
	odczytB >> napisB;
	int dl=napisB.length();
	int dl2=dl/2;
	bool palindrom=true;
	for (int i=0;i<dl2;i++)
		if (napisB[i]!=napisB[dl-1-i]) 
			palindrom=false;
	if (palindrom) 
		cout << napisB << endl;
}
odczytB.close();

Cała lekcja

Wskaźnik, to zmienna, która przechowuje adres (innej zmiennej). Przykład. W zmiennej X przechowujemy liczbę 10. A my chcemy dodatkowo wiedzieć, w którym miejscu pamięci operacyjnej komputera, to 10 w zmiennej X się znajduje. Po co to wszystko? Gdy deklarujemy jakieś zmienne, to przydzielamy im konkretną ilość i miejsce w pamięci operacyjnej. Czasem jednak nie wiemy ile tej pamięci będzie nam potrzebne – na przykład: jaką wielką tablicę zadeklarować. Możemy więc deklarować nie tablicę statyczną (o konkretnej licznie komórek) lecz dynamiczną, której wielkość ustalimy w trakcie działania programu, np. gdy użytkownik ją wpisze z klawiatury. W ten sposób algorytmy są być może bardziej skomplikowane, ale wykonują się szybciej.

 
/DYNAMICZNA TABLICA
cout << "ile komórek ma mieć tablica: ";
int kom;
cin >> kom;
int *Tliczby=new int [kom];
for (int i=0;i<kom;i++) {
	Tliczby[i]=rand() % 6 + 1;
	cout.width(3);
	cout << Tliczby[i];
}
delete [] Tliczby;

cała lekcja

Dane do programów wprowadzaliśmy do tej pory z klawiatury lub generowaliśmy liczby losowe. Wyniki obliczeń wypisywane były na ekranie komputera. Duże ilości danych trudno jednak wpisywać ręcznie i w większości przypadków pobieramy je z plików zapisanych na dysku. Podobnie jest z wynikami obliczeń – można je zapisać w postaci pliku i przeglądać w dowolnym momencie na ekranie komputera. Plik na dysku można porównać do taśmy magnetofonowej, na której wykonujemy trzy operacje: zapis taśmy, odczyt taśmy, przesunięcie taśmy o jeden element dalej (lub na początek, na koniec).

 
//GENEROWANIE OCEN
ofstream Pliczby("oceny.txt");
int liczba;
for (int i=0;i<10;i++){
  liczba=rand() % 6 + 1;
  Pliczby << liczba << endl;
  cout << liczba << endl;
}
Pliczby.close();

cała lekcja

Porządkowanie danych jest jedną z najczęściej wykonywanych operacji przez komputery. Po co się porządkuje dane? W uporządkowanych danych szybciej się wyszukuje informacje! Warto więc poświęcić czas na porządkowanie, które zwykle wykonujemy jeden raz, by potem wiele razy szybko i sprawnie wśród nich wyszukiwać. Dane do sortowania przechowujemy z reguły w tablicach. W języku C tablice przesyłane jako parametry funkcji, zawsze traktowane są jak referencje. Projektant C wymyślił tak, żeby zmienne tablicowe zajmowały mniej miejsca w pamięci, ale…! Jednym z problemów jest to, że w C nie można w prosty sposób sprawdzić jak wielka jest tablica – ile ma elementów!

//SORTOWANIE BĄBELKOWE
void SortBuble(int n, int t[]){ for (int pocz=0; pocz<n-1; pocz++) for (int i=0; i<n-pocz-1; i++) if (t[i] > t[i+1]) ZAMIANA(t[i],t[i+1]); }

cała lekcja

Czym jest rekurencja? Gdy patrzymy w lustro, na które nakierujemy drugie – widzimy nieskończony ciąg odbić siebie samego. W matematyce i informatyce mamy do czynienia z rekurencją, gdy jakaś funkcja w swoim opisie odwołuje się do siebie samej (takie przysłowiowe pudełko w pudełku).

//REKURENCYJNA SILNIA
long SILNIA(int n){
  if (n==0) return 1;
  else return n*SILNIA(n-1);
}

Cała lekcja

Duża część algorytmów działa na dowolnych danych i nie jesteśmy w stanie przewidzieć, ile razy powinna wykonać się pętla. Może to być zależne na przykład od wielkości tabeli, wpisywanego z klawiatury tekstu, itp. W ogólnym przypadku możemy stwierdzić, że czas działania pętli zależy od spełnienia (lub nie) określonego warunku logicznego. W takich sytuacjach niezbędne jest stosowanie pętli logicznej WHILE. Nic też nie stoi na przeszkodzie, aby pętlą logiczną symulować działanie pętli FOR.

//NWD EUKLIDES
int A,B;
cin >> A;
cin >> B;
while (A != B)
  if (A > B) A=A-B; 
    else B=B-A;
cout << "NWD: " << A << endl;

Cała lekcja

W standardowym C posługujemy się zmiennymi znakowymi i tablicami tychże zmiennych, za pomocą których można obsługiwać teksty. Nie ma mowy o typowych zmiennych tekstowych (string), jak we wszystkich normalnych językach programowania. Twórca – dążąc do minimalizacji - wymyślił łańcuchy znakowe… co teoretycznie miało uprościło, ale w praktyce spowodowało mnóstwo problemów. Dopiero dodatkowa biblioteka STRING porządkuje i upraszcza pracę z tekstami.

//KODY ASCII
for (int i=33; i<256; i++){
  cout.width(4);
  cout  << (char) (i);
  cout.width(4);
  cout << i;
  if (i % 8 == 0) cout << endl;
}

Cała lekcja

Zobacz tutaj