MistrzowieKodowania / cPlusPlusMaterials

Projekty
4 stars 9 forks source link

Podsumowanie zajęć nr. 2 i praca domowa #7

Open ksorokosz opened 8 years ago

ksorokosz commented 8 years ago

Praca domowa. Chciałbym żebyście wybrali projekt jaki chcecie zrelizować i zrobili do niego menu podobne do tego jakie widzieliście na zajęciach, możecie je również zobaczyć uruchamiając program z Praca-Domowa/Basic/sample-exe. Chwalcie się tutaj swoimi dokonaniami wklejając linki do kodu z Waszych kont, pomagajcie sobie, pytajcie, zgłaszajcie problemy. Niech kod będzie z Wami

Tigersoftis commented 8 years ago

praca domowa - wersja tego programu jest niezgodna z wersją używanego systemu Windows [...] skontaktuj się z wydawcą... :( taki komunikat mi wyskakuje przy próbie uruchomienia :(

kasianw commented 8 years ago

Dodałam menu do swojego repozytorium webinar2 :)

ksorokosz commented 8 years ago

TigerSoftis, dzięki za uwagę. Być może problemem jest "bitowość" systemu operacyjnego. Wrzuciłem więc programy skompilowane na Windows 32/64 bit oraz na Linux. Spróbuj z tymi programami. Niestety nie dysponuję żadnym MAC'iem.

Kasia super :) Kilka drobnych uwag: w tej chwili użytkownik Twojego programu nie może wrócić z menu "modify" - musi wybrać jakiś efekt. Dobrym zwyczajem programistycznym jest również nazywanie kolejnych wartości z enum wielkimi literami np. EXIT zamiast exit. Pozwala to rozróżniać coś co pełni rolę stałej od zwykłej zmiennej. Jeszcze o tym nie mówiłem na zajęciach, ale możesz spróbować się zmierzyć z takim problemem: Co się stanie jeśli użytkownik zamiast cyfry poda jakikolwiek napis? Spróbuj sobie z tym poradzić bez używania typu string (zamiast int).

kasianw commented 8 years ago

Dzięki za praktyczne wskazówki, poprawiłam kod, ale nie wiem czy dobrze nadpisałam na GitHuba. Nad jakimkolwiek napisem to może do {case ...}while decision jest równe 1 lub 2 lub 3 lub 4 lub 5?

EMCsoftware commented 8 years ago

Chwalcie się tutaj swoimi dokonaniami

No więc... ufff, dużo przerabiania (wyciagnięcie samego menu z prawie kompletnego programu) ale jest:+1: . Godzina laczenia kawaków kodu w calosć ale co tam, ważne, że dziala :smile: https://github.com/EMCsoftware/ProgramyMistrzowieKodowania/blob/master/MenuBibllioteka Po menu poruszamy się strzalkami

ksorokosz commented 8 years ago

EMCsoftware. Pomysł na menu świetny :) Widać, że wiesz już zdecydowanie więcej niż to o czym mówiliśmy, ale wymaga to jednak pewnego uporządkowania ;) Kilka uwag: kod w postaci jakiej wrzuciłeś na repozytorium nie działa. Dlaczego? Nie mówiliśmy jeszcze o tym na zajęciach, będziemy o tym mówić na kolejnych: string optionslist[4]; optionslist[1] = "Nieoddane ksiazki";//dodajemy do listy 4 elementy, 1 element optionslist[2] = "Dane klientow";// 2 element optionslist[3] = "Dodaj uzytkownika";// 3 element optionslist[4] = "Zmien status ksiazki";// 4 element

Stworzyłeś tablicę o rozmiarze "4", w C++ indeksujemy elementy od 0,a więc optionslist[4] jest błędne i powoduje tzw. Access violation (zabroniona operacja na pamięci). W kolejnej części programu również indeksujesz tablicę w taki sam sposób (pierwsza pozycja menu ma indeks 1, ostatnia 4).

Z praktycznych rzeczy - nie przerażaj się ilością uwag, ponieważ kod, który napisałeś zdecydowanie wykracza poza to o czym rozmawialiśmy do tej pory i fajnie, że już tyle wiesz.

Pamiętaj, że oprócz działania programu ważne jest również to w jaki sposób napiszemy nasz kod. Jak zdobędziesz już większe doświadczenie to sam zobaczysz, że wyciągnięcie jakiegoś fragmentu kodu z innego większego programu nie musi być wcale skomplikowane :) Fajne jest natomiast to, że masz do tego zapał :)

ksorokosz commented 8 years ago

Kasia, spróbuj najpierw uruchomić swój program i zamiast cyfr podać jakiś string (dowolny napis), zobaczysz co się stanie ;) Dodanie nowych warunków nie pomoże - zobacz, że tym warunkiem jest już switch ;) Rozwiązanie o którym myślę wykracza poza to o czym do tej pory rozmawialiśmy - jeśli masz ochotę poszukać to zachęcam :) ja o tym opowiem przy okazji wczytywania plików ;) a na GitHubie wszystko jest w porządku :) dobrze zaktualizowałaś swoje repozytorium.

EMCsoftware commented 8 years ago

Och, no tak, zapomniałem, że wykraczam poza tablicę :P Co do tych wskazówek: postaram się je zastosować, ale nie mogę zrezygnować z conio.h, ponieważ getch() nie wczytuje znaku ze strumienia, tylko z klawiatury, a co za tym idzie mogę wczytać znak i od razu działać dalej, natomiast getchar() jeszcze potrzebuje potwierdzenia (enter) i wypisuje na ekranie podaną wartość http://cboard.cprogramming.com/c-programming/74900-getch-vs-getchar.html Dziękuję za uwagi, postaram się zoptymalizować kod :)

jakubchojak commented 8 years ago

jest już gdzieś nagranie ze spotkania? Jeśli tak to prosiłbym o link :)

ghost commented 8 years ago

@Kajoh123 Wrzucony {dopiero przed momentem :< } w plik ReadMe - miłego oglądania =)

Tigersoftis commented 8 years ago
  1. Ja też prosil bym o nagranie ze spotkania bo tak nie mogę powtórzyć sobie a jak dla mnie szybko wszystko się dzialo i nie wszystko zdążyłem ulokowac w swojej pamięci w głowie :)
  2. Można jakoś ściągnąć prezentacje z GitHuba na dysk, bo jakoś nie udaje mi się? [edit: już nieważne, jakoś udało mi się przez klienta, ale niechcąco bo bardzo nieintuicyjny on jest]
  3. mogę prosić o słowny opis zadania dobowego bo żadnego z przykładów nie mogę otworzyć ? :( [edit: pojawia mi się tym razem komenda, że nie znaleziono na moim komputerze MSVCP140D.dll]
  4. czym cię różni getchar(); od system("pause"); ? --> podejrzałem w programie EMCsoftware :)
Tigersoftis commented 8 years ago

Film z 2 spotkania, niechcący znalazłem, nawet nie wiem gdzie :)

https://drive.google.com/file/d/0BzgO0hOQGTyGT0ZMNUpta0g2Wlk/view

ghost commented 8 years ago

@Tigersoftis 1: Jak pisałem @Kajoh123 - link do ostatniego webinaru jest w plikuReadme.md (na githubie zakładka <>code w naszym repozytorium) - przyjemnego oglądania :) 3: Po błędzie zakładam, że korzystasz z Visual Studio. Moja skromna propozycja: lepiej zacząć od DevC++ :-) Jeśli z niego korzystasz - będę szukał dalej:) 4: getchar() służy do pobierania danych, system(pause) - do wykonywania systemowej funkcji. W tym wypadku dobrze nadają się do zatrzymania programu (albo system pauzuje aplikację {system(pause)}, albo czeka na dane od użytkownika {getchar()} )

ksorokosz commented 8 years ago

@Tigersoftis co do "2" - na początku zajęć (a więc również filmu) pokazałem jak ściągnąć repozytorium - sklonować. potem jak już mamy część repozytorium na dysku wystarczy kliknąć "Sync" znajdujące się na górze po prawej. Może wyjaśnię jak to działa, to stanie się to trochę bardziej zrozumiałe: GIT - to system wersjonowania. Wyobraź sobie, że tworzysz plik, a potem wielokrotnie go zmieniasz. Jednocześnie chcesz zapamiętać każdą wersję - do tego służy GIT. Dzięki niemu jesteś wstanie odtworzyć każdą wersję pliku jaką "zacommitowałeś". Co więcej inni użytkownicy mogą synchronizować się z Twoim repozytorium i aktualizować własne, o te wersje, które dołożyłeś, a których oni nie mają ;) W kliencie GitHuba służy do tego przycisk Sync. W konsoli byłoby to polecenie git pull.

A może po prostu nałatwiej będzie jak nagram jeszcze jeden tutorial na temat GITa ;)

3) spróbuję jeszcze coś zrobić z tymi przykładowymi programami. Żebyś jednak nie czekał: praca domowa - jej treść oraz przykład (ten sam, który wrzuciłem do repozytorium) była pokazywana na zajęciach - jest więc to nagrane na filmiku ;)

1) a plik README.md to ten wyświetlany tutaj: https://github.com/MistrzowieKodowania/cPlusPlusMaterials tam gdzie linki do tutoriali itd. umówmy się, że tam będa pojawiać się wszystkie linki m.in te z nagraniami.

@adamerous @Tigersoftis nie mogą uruchomić się przykładowe programy, które wrzuciłem do ilustracji pracy domowej... wcześniejszy przykład - skompilowany pod DevC++ nie chciał działać na 32bitowych Windowsach (przynajmniej tak się domyślam, bo sam mam 64 bitowy) to skompilowałem kod zarówno na 32bit jak i 64bit (tyle, że pod Visual Studio). DevC++ korzysta z mingw, a ja nie mam bibliotek 32 bitowych w mingw... spróbuję to jednak zrobić po kolei i po bożemu. ehh a na Linuxie pewnie działa :D

ksorokosz commented 8 years ago

Nagrałem właśnie i wrzuciłem do naszego README.md (zaraz obok poprzednich tutoriali) tutoriale pokazujące w większych szczegółach możliwości klienta GitHuba oraz konsoli GITa ;) Myślę, że dzięki nim będzie trochę łatwiej ;)

Tigersoftis commented 8 years ago

Hej, dzięki za reakcję :)

korzystam z DevC++ i tak mi wyskakuje :(

Co do "README.md" to nadal nie rozumiem o czym piszesz :( poruszanie się po tym GitHubie jest małointuicyjne a wręcz wogóle nie i poruszam się po omacku, cokolwiek znajde to poprostu klikając niechcąco w co popadnie :( ale jakoś znajduje. Fajnie jeśli są gdzieś linki bo wtedy nie ma problemu :)

Rozumiem, że jak napisze program w C++ to nie mam gwarancji że zadziała na innych systemach? :(

ksorokosz commented 8 years ago

@Tigersoftis obejrzyj dokładnie, bardzo dokładnie tą stronę: https://github.com/MistrzowieKodowania/cPlusPlusMaterials

Tam znajdują się wszystkie informacje i ta strona będzie aktualizowana - tam jest też wyświetlany plik README.md. Rozumiem, że poruszasz się po omacku, ale dlatego tutaj jesteśmy, żeby pokazać Ci w jaki sposób to wszystko działa tak abyś już teraz poruszał się po GitHubie bez żadnego problemu. Wczoraj nagrałem dwa tutoriale dotyczące poruszania się po GitHubie i myślę, że jeśli je obejrzysz, a potem poćwiczysz wszystko stanie się jasne.

Problem z kompatybilnością systemów nie jest niczym przerażającym. Wiele języków programowania ma tą "wadę". Zobacz, że programu napisanego w Scratchu nie uruchomisz na komputerze bez dostepu do Internetu lub bez zainstalowanego środowiska Scratcha. Podobnie jest np. z pythonem. To są języki interpretowane - wymagają interpretera. C++ jest językiem, który wymaga kompilacji. Ma to swoje wady, ale również zalety - użytkownik (nie programista) nie musi niczego dodatkowego instalować aby uruchomić program. To programista musi zadbać o kompatybilność.

Tigersoftis commented 8 years ago

Oki, jak gdzieś znajdę to przejrzę :)

Chodzi mi o to np że jeżeli wejdę na stronę projektów to jest to samo co jak wejdę w np

master i to samo co w master i to samo co w lesson 2 i to samo co w lesson 3 itp, albo wszędzie to samo albo nic czego szukam :(

To zaczynam szukac tutoriali :)

Tigersoftis commented 8 years ago

Nauczę się Gita albo nie, dla mnie wazniejsze nauczyć sie C++ :)

Tu pytanko ponieważ przeglądam różne kody, próbuje różne rzeczy robić i w niektórych kodach widzę using namespace std; a w innych to samo ale bez tego using namespace std; ... skąd mam wiedzieć kiedy stosować to a kiedy nie? zawsze przy bibliotece iostream? inaczej?

ksorokosz commented 8 years ago

@Tigersoftis dobrze byłoby żebyś wiedział gdzie znaleźć tutoriale ;) wejdź na tą stronę: https://github.com/MistrzowieKodowania/cPlusPlusMaterials zjedź troszkę niżej. Zobaczysz duuuuży i pogrubiony napis Webinarium C++. Tam jest cała lista z linkami: do filmiku, do tutoriali, do różnych przydatnych miejsc ;) Co więcej ta lista jest cały czas aktualizowana i to jest właśnie README.md ;) Nie musisz znać GITa, żeby dotrzeć do filmików ;) Nie musisz nawet niczego ściągać! A z tutoriali dowiesz się, że warto to ogarnąć i nie jest to wcale skomplikowane.

using namespace std; jak mówiłem na pierwszych zajęciach: jeśli nie napiszemy tej instrukcji zamiast cout << "Hello World" << endl; musielibyśmy napisać: std::cout << "Hello World" << std::endl; w przeciwnym wypadku program się nie skompiluje - po tym będziesz wiedział, że o czymś zapomniałeś. W zasadzie w przestrzeni std znajduje się bardzo dużo funkcji więc warto po prostu dopisać: using namespace std; za jakiś czas dowiesz się, że Ty też możesz tworzyć własne biblioteki i własne przestrzenie nazw ;)

a w lesson-3 znajduje się już kod na nasze 3 zajęcia ;) w najbliższy wtorek. zobacz, że na "master" nie ma kodu do naszych 3 zajęć - jeszcze ;) na master nie znajdziesz folderu "Arrays&Functions".

Tigersoftis commented 8 years ago

Hej, moze nie znajde ole wygląda jakbym wchodził ciągle w te same miejsca i kręcił się w kółko :) to webinarium to wiem gdzie jest, sledze je na bieżąco, ściągam sobie wszystko co tam jest ale nie widziałem nowych rzeczy :( Prześwietlę jeszcze raz :) Dzięki :)

Próbuję ćwiczyć i jak na razie wyłapywałem błędy, ale teraz nie mogę :( Mogę prosić o pomoc?

http://iv.pl/images/81457993326822303208.jpg

Tigersoftis commented 8 years ago

Mam, głupi błąd ale DevC++ mnie zmylił bo pokazał ze było coś żle w cin a to zapomniałem średnika w cout przed tym cin co pokazywał. Przy okazji zmieniłem polskie literki bo wyświetlało krzaki i zapomniałem o tym, teraz działa :) Przepraszam za trucie ale pytam o wszystko bo jestem zdeterminowany się w koncu nauczyć to, co mi na studiach obrzydzili :)

include

using namespace std;

int main () { int wartosc;

cout << "Podaj liczbe calkowita mniejsza od 10:   ";
cin >> wartosc;
if ( wartosc < 10)
{
    cout << "\n\nPrawidlowo, liczba " << wartosc << " jest mniejsza od 10 \n \n";
}
else
{
    cout << "\n\nZle, liczba " << wartosc <<" jest za wysoka!";
}
return 0;

}

kasianw commented 8 years ago

Program czyta tylko pojedynczy znak. :)

Ale musiałam wyrzucić enum i .. pojawiły się przez to magic numbers :( webinar2/graphics_getch.cpp

ksorokosz commented 8 years ago

@kasianw Jest to jedno z możliwych rozwiązań, działące w tym przypadku ;) Istnieje też sposób na uniknięcie magic numbers, również w takim kodzie ;) Opowiem o nim już na najbliższych zajęciach.

Na koniec zajęć we wtorek pokażę jeszcze jedno rozwiązanie problemu sprawdzania danych wprowadzanych przez użytkownika. A za jakiś czas poznacie jeszcze kilka innych sposobów ;)

Tigersoftis commented 8 years ago

hej, dobrze dodaję mój kod na GitHuba?

mogę prosić o krótki opis zadania domowego - w jednym słowie? niestety nic co jest wrzucone nie otwiera się u mnie? :(

rafalkar commented 8 years ago

Chyba robię coś nie tak, ponieważ nie pojawia się na Github nowa wersja kodu. Klikam w Przycisk Sync po prawej stronie okienka (korzystam z klienta na Mac).

ksorokosz commented 8 years ago

@tigersoftis Tresc zadania i przyklad jest na filmiku z ostatnich zajec. Nie mozesz mowic ze nic nie zostalo wrzucone jesli kilka razy na ten temat pisalem rowniez w tym miejscu. Poprawilem tez 3 raz programy - jesli nadal Ci nie dzialaja to nastepnym razem wymysle inny sposob prezentacji: nawet wiem juz jaki.

Jeszcze raz: tresc pracy domowej i przyklad są na filmie. W skrocie: wybrac projekt, stworzyc menu, obejrzec filmy i tutoriale, sprobowac nauczyc sie githuba.

ksorokosz commented 8 years ago

@tigersoftis Na githuba niestety nic nie wrzuciles (jak już Ci kiedyś pisałem - wrzuciłeś kod do "Issues" czyli tak jak zwykłą wiadomość), ale stworzyles repozytoria i to jest pierwszy krok ;) Czy obejrzales kazdy tutorial (a sa 4 o githubie) od deski do deski? Umowmy sie ze nie idziemy na skroty, ok?

ksorokosz commented 8 years ago

@rafalkar a jakie repozytorim chcesz aktualizować? czy to "Mountain" czy może repozytorium Mistrzów Kodowania?

jeśli próbujesz zaktualizować repozytorium Mistrzów Kodowania to mogły wydarzyć się dwie rzeczy:

Nie chciałem więc póki co żebyście wrzucali swój kod do repozytorium Mistrzów Kodowania żeby nie mnożyć problemów ;)

Ale jeśli chcesz zaktualizować kod w "Mountain" to może zapomniałeś użyć przycisku "Commit", przed synchronizacją? Ostatnia możliwość jest taka, że próbujesz wrzucić kod do nieistniejącego repozytorium (nieistniejącego na tym portalu, choć może istnieć na Twoim dysku).

Dzięki! Zapomniałem, albo lepiej, nie brałem tego pod uwagę (czyli, czytaj Jasiu ze zrozumieniem). Użycie przycisku "Commit" rozwiązało problem, ale..... związku z tym, mam pytanie, (może to specyfika systemu Mac OSX), zgodnie z logiką, taki zapis: for (s=0; s<=255; s++) { cout << s << "=" <<char(s) << "," << endl; } powinien wypisać wszystkie znaki, a ja widzę tylko alfabet małe i duże plus cyfry i znaki z shift, nie widzę tak zwanych krzaczków , np. ASCI 1 to chyba serduszko.

Tigersoftis commented 8 years ago

oki, dzięki :) postaram się, tylko własnie z czasem krucho. Chciałem uczyć się C++ i na to poswięcałem czas a nie na GitHuba :( Moze jutro uda mi się jeszcze raz od deski do deski obejrzeć :) Dzięki :)

ksorokosz commented 8 years ago

@Tigersoftis jeśli chodzi o czas, to rozumiem ;) Dlatego chciałbym żebyś spróbował zapoznać się z GitHubem i jego możliwościami, bo gwarantuję Ci, że uda Ci się dzięki temu oszczędzić dużo czasu :) Będzie to inwestycja, która się zwróci. Wyobraź sobie jakby wyglądała komunikacja mailem przy takiej grupie ludzi i tym materiale ;) Poprzez GitHuba dużo łatwiej jest mi komentować to co robicie, pomagać ale również w przyszłości - całkiem niedalekiej udostępniać większe biblioteki z kodem ;) Cały czas też zachęcam do tego żeby chwalić się tym co robicie i ściągać od innych - byle ze zrozumieniem ;)

Co do nauki C++ i Githuba. To nie stoi w sprzeczności, a nawet jest bardzo po drodze. Zobacz jeśli na tym forum pojawią się za chwile linki z kolejnymi etapami projektu to będziesz miał nie tylko do dyspozycji filmiki z zajęć o C++ i moje przykłady, ale również kod innych ludzi, którzy tak jak Ty uczą się C++. Może ten kod zainspiruje? a może da odpowiedź? a może sprowokuje do pytania? a może zmobilizuje? Jest to jakaś platforma, która umożliwia wymianę nie tylko danych, ale również pomysłów. Jak dla mnie czysta inwestycja, która przyspieszy Twoją naukę C++. A może to co Ty zrobisz pomoże komuś innemu. Chyba warto, co nie? Poza tym Git to coś bez czego współczesny programista nie potrafi się obejść w pracy zawodowej - tego na studiach nie uczą, a w pracy jest to atut ;) Oprócz suchej teorii chcę Wam pokazać trochę praktyki programowania wraz z całą otoczką ;)

Tigersoftis commented 8 years ago

Jasne, że masz rację :) dziś już nie zdążę ale może jutro jednak się uda :) Martwi mnie tylko czemu programy co wrzucasz u mnie nie działają i ich nie widzę :( Poza tym przy uruchamianiu DevC++ wyskakuje mi zawsze taki komunikat:

http://zapodaj.net/fc6e94a11f698.jpg.html

może coś nie tak z kompem mam?

W razie w podam parametry mojego lapka: HP Pavilion dv 9700 Winda: 7 professional SP 1 32 bitowy procek: Intel Core 2 Duo CPU T7250 @ 2.00GHz 2.00GHz RAM: 4 GB SSD (1) 64 GB HDD (2) 320 GB

Może zły DevC++ zainstalowałem? Może przez SSD?

z góry dzięki i sorry, że najwięcej truję :(

ksorokosz commented 8 years ago

@Tigersoftis trochę Nam się wyjaśniło ;) ten błąd jest stosunkowo istotny. Spróbuję jakoś znaleźć rozwiązanie ;) Dam znać jutro wieczorem.

tapcia commented 8 years ago

Spóźniona, wrzucam: https://github.com/tapcia/zadanie11/blob/master/main.cpp

ksorokosz commented 8 years ago

@tapcia bardzo dobrze - zastosowałaś warunki, wczytałaś odpowiedzi użytkownika do string - też dobrze. w tej chwili użytkownik nie może po tym menu nawigować tzn. może wybrać jedną z opcji, zobaczyć jej rezultat, po czym program się zakończy. Warto jednak dać mu możliwość podejmowania tej decyzji wielokrotnie ;) Masz pomysł jak to zrobić?

Annamariaw commented 8 years ago

Witam, wiem, że przesyłam zadanie bardzo późno, ale udało się coś zrobić: https://github.com/Annamariaw/zadanie_2/blob/master/zadanie_2.cpp

ksorokosz commented 8 years ago

@Annamariaw super :) najważniejsze, że udało się zrobić coś fajnego :) udało Ci się zastosować switch, dzięki czemu użytkownik może wybrać. W dalszym ciągu jednak możemy tylko raz dokonać wyboru np. wybierając "2" wyświetlona zostanie pomoc, a zaraz potem program wyjdzie, musimy więc drugi raz go uruchomić aby sprawdzić co się stanie jeśli podamy kolejną opcję. Spróbuj może zrobić to w taki sposób aby użytkownik mógł nawigować po tym menu do czasu aż sam nie wyłączy programu wybierając "3". W tym celu warto zastosować pętlę while :)

ksorokosz commented 8 years ago

@heillos

nie wiem dlaczego taki post pojawił się tutaj, ale poprosilbym o skasowanie. Nie jest on związany z C++, a dodatkowo może być niebezpieczny jeśli ktoś się zarejestruje.

heillos commented 8 years ago

Coś się włamało do githuba i opublikowało spam w moim imieniu.

W dniu 25.08.2016 o 08:09, Kamil Sorokosz pisze:

@heillos https://github.com/heillos

nie wiem dlaczego taki post pojawił się tutaj, ale poprosilbym o skasowanie. Nie jest on związany z C++, a dodatkowo może być niebezpieczny jeśli ktoś się zarejestruje.

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/MistrzowieKodowania/cPlusPlusMaterials/issues/7#issuecomment-242289693, or mute the thread https://github.com/notifications/unsubscribe-auth/AOQsC1lYDgbiQ2PCS_bcHyAYBoexA1dqks5qjTF_gaJpZM4HWxLn.

Przemysław Adam Śmiejek Zespół Szkół Ogólnokształcących nr 5 w Zabrzu