ROZDZIAŁ I Czym i jak to zrobić, czyli narzędzia i metody. Wiele z podanych dalej zadań może być rozwiązane różnymi sposobami, z zastosowaniem różnych narzędzi i metod informatycznych, z wykorzystaniem aplikacji dostępnych lokalnie i sieciowo, w dowolnym środowisku systemowym. Rozwiązywanie zadań nie powinno prowadzić do długotrwałych, wielowątkowych i mocno rozbudowanych projektów, ale nie powinno się unikać zadań problemowych, nie zniechęcających jednak młodego informatyka zawiłą treścią i skomplikowanym opisem, ale zachęcających starannie dobraną formą i rodzajem problemu. O sukcesie decydować powinien jedynie efekt końcowy zgodny z postawionym zawodnikowi problemem i jego warunkami brzegowymi. O wyborze środka i algorytmu decydować powinien sam uczeń, dla którego przygotowany powinien być ogólnie dostępny standard, uwzględniający stan wyposażenia szkolnych pracowni komputerowych w szkołach oraz wymagania konkursowe, np. System WINDOWS 7/8/10 edytor tekstów MS WORD lub WRITER, program graficzny MS PAINT, PAINT.NET, GIMP, arkusz kalkulacyjny MS EXCEL lub CALC, notatnik, NOTEPAD++.... Języki programowania, kompilatory i środowiska: PASCAL Free Pascal Compiler, Turbo Pascal, Lazarus, C++ Dev-C++, Code::Blocks, PYTHON interpretery, Geany PROCESSING https://processing.org/download/ MS SMALL BASIC https://www.microsoft.com/pl-pl/download/... Programy wspomagające: LABORATORIUM INFORMATYKI ELI, CABRI, DERIVE.
Należy jednak zwrócić uwagę na fakt, że to co dzisiaj określamy mianem standardu nie będzie już nim za kilka lat, a być może nawet w kolejnej edycji konkursu. Zadania powinny więc być dobierane bardzo starannie, z uwzględnieniem lokalnych warunków i dostępnych środków informatycznych. Nie osiągnie się bowiem całkowitego oderwania od środków technicznych i rodzaju oprogramowania. Dobrym przykładem mogą tu być konkursy dla szkół średnich, gdzie przez wiele lat wypracowano doskonałe niemal formuły i standardy dotyczące zadań konkursowych i sposobu przeprowadzania kolejnych etapów zawodów, gdzie sprzęt odgrywa rolę drugorzędną. Konkursy dla młodszych uczniów są dopiero w powijakach i dlatego niniejszy zbiór, nie pretendując do miana przewodnika i doradcy, ma za cel pokazać jakie są możliwe do zaakceptowania formy zadań i jaką drogą można iść w kierunku unifikacji i ujednolicenia kryteriów konkursowych, pamiętając, aby nie przekroczyć pewnego progu trudności i uniemożliwić tym samym młodzieży potwierdzenie swych uzdolnień i osiągnięć informatycznych, już w tak młodym wieku. Propozycją takiego zadania może być podany poniżej problem, z podaną wskazówką matematyczną, rozwiązany trzema różnymi sposobami, przy wykorzystaniu zupełnie rożnych narzędzi. Wszystkie rozwiązania są równie dobre i wyczerpują zagadnienie. PRZYKŁAD ZADANIA : Zbuduj algorytm rozstrzygający, czy podane trzy liczby nieujemne mogą być długościami boków trójkąta. Jeśli tak, to oblicz obwód i pole takiego trójkąta. Wskazówka matematyczna: Jeśli a, b, c są bokami trójkąta, to pole można łatwo obliczyć ze wzoru Herona. Pole = p( pa)( pb)( pc), gdzie p oznacza połowę obwodu tzn. p=(a+b+c)/2. Rozwiązanie 1: Arkusz kalkulacyjny EXCEL Zawartości komórek: Komórki pomocnicze: A1: Dana liczba a A9: =JEŻELI(A1<B1+C1;1;0) B1: Dana liczba b B9: =JEŻELI(B1<C1+A1;1;0) C1: Dana liczba c C9: =JEŻELI(C1<A1+B1;1;0) E1: =JEŻELI(D9=3;"Obwód=";"Nie ma takiego trójkąta") D9: =A9+B9+C9 E2: =JEŻELI(D9=3;"Pole=";"") A12: =A1+B1+C1 F1: =JEŻELI(D9=3;A12;"") A13: =A12/2 F2; =JEŻELI(D9=3;A15;"") A14: =A13*(A13-A1)*(A13-B1)*(A13-C1) A15: =PIERWIASTEK(A14) Uwaga: komórki pomocnicze można potem ukryć np. stosując na nich czcionkę w kolorze białym.
Przykłady:
Rozwiązanie 2: Laboratorium Informatyki ELI Rozwiązanie 3: Program w języku SMALL BASIC TextWindow.Write("a = ") a=textwindow.read() TextWindow.Write("b = ") b=textwindow.read() TextWindow.Write("c = ") c=textwindow.read() If a>=b+c or b>=a+c or c>=b+a Then TextWindow.WriteLine("Nie ma takiego trójkąta!") Else p=(a+b+c)/2 obwod=2*p pole= Math.SquareRoot(p*(p-a)*(p-b)*(p-c)) TextWindow.WriteLine("Obwód = "+ obwod) TextWindow.WriteLine(" Pole = "+ pole) EndIf
Rozwiązanie 4: Program w języku PASCAL Program TROJKAT; uses CRT; var a, b, c, p, obwod, pole :real; BEGIN ClrScr; Write(' a = '); Readln(a); Write(' b = '); Readln(b); Write(' c = '); Readln(c); Writeln; Writeln('----------------------------------------'); Writeln; If (a<b+c) and (b<a+c) and (c<b+a) then Begin p:=(a+b+c)/2; obwod:=2*p; pole:= sqrt(p*(p-a)*(p-b)*(p-c)); Writeln(' Obwod = ',obwod:10:2 ); Writeln(' Pole = ',pole :10:2 ); End else Writeln('To nie jest trójkąt!'); Repeat until keypressed; ClrScr; END. Rozwiązanie 5: Program w języku C++ #include <iostream> #include <cmath> using namespace std; main() { double a, b, c, p, obwod, pole; cout<<"a="; cin>>a; cout<<"b="; cin>>b; cout<<"c="; cin>>c; if (a<b+c && b<a+c && c<b+a) { p=(a+b+c)/2; obwod=2*p; pole= sqrt(p*(p-a)*(p-b)*(p-c)); cout<<" Obwód = "<<obwod<<endl; cout<<" Pole = "<<pole<<endl; } else cout<<"to nie jest trójkąt!"<<endl; return 0; }
Rozwiązanie 6: Program w języku PYTHON import math print ("a=") s=input() a=float(s) print ("b=") s=input() b=float(s) print ("c=") s=input() c=float(s) if (a<b+c and b<a+c and c<b+a): p=(a+b+c)/2 print("obwód=",2*p) w=p*(p-a)*(p-b)*(p-c) print("pole=",math.sqrt(w)) else: print ("Nie ma takiego trójkąta!") input() ŹRÓDŁA WIEDZY Maciej M. Sysło Algorytmy Maciej M. Sysło Piramidy, szyszki i inne konstrukcje algorytmiczne Maciej M. Sysło Konstrukcje algorytmiczne Erik Wischniewski 100 przepisów w języku Turbo Pascal Wanda Jochemczyk Laboratorium Informatyki ELI 2.0 Multiplus Alan R. Neibauer Języki C i C++ Twój pierwszy program Marek Luliński Python, C++, JavaScript. Zadania z programowania Marek Luliński Zadania konkursowe z informatyki Michał Wiszniewski Python na start! Programowanie dla nastolatków. Andrzej Różycki Zadania i problemy z informatyki Ryszard Motyka W 80 zadań dookoła Excela Monika Niedziela Zbiór zadań z informatyki Błażej Gruszczyński Zbiór zadań z informatyki
https://www.w3schools.com http://www.cplusplus.com http://miroslawzelent.pl https://processing.org https://www.lazarus-ide.org https://www.getlazarus.org/learn https://pl.python.org https://www.learnpython.org https://kodilla.com/pl http://pasja-informatyki.pl https://eduweb.pl/ http://www.e-programowanie.eu