PROGRAMSKI JEZICI I PROGRAMIRANJE

Slides:



Advertisements
Сличне презентације
Програмски језик Parallaxis
Advertisements

Elektronički logički sklopovi i registri
Primjena programiranja u nastavi matematike
Programiranje - Nizovi -
Uvod u funkcije Kolegij: Programski jezik C++ Ak. god. 2018/19
ISPITIVANJE KVALITETA SOFTVERSKI GENERISANIH SEGMENATA U OBLASTI VREMENSKE SLOŽENOSTI ALGORITAMA ZA AUTOMATIZOVANO SASTAVLJANJE ISPITA     Đorđe Pešić,
LabVIEW Kratak opis softvera
Programski jezici.
Programiranje - Naredbe za kontrolu toka programa – 4. dio
Menadžment kvaliteta – vježbe broj 2: Obrasci za prikupljanje podataka
Nastavna jedinica: 1.5. Elektronički logički sklopovi i registri
VEDSKA MATEMATIKA (Trikovi lakšeg računanja) 
PROJEKTOVANJE SOFTVERA
Microsoft Access uvod u baze podataka.
Predstavljanje podataka u računaru
Vrste datoteka, dokumenti
VJEŽBA složenie naredbe.
Logička ili Booleova algebra 1.dio
Uvod u programiranje - matematika – VI predavanje Petlje. FOR. WHILE
Konačni automati i regularni izrazi
Nastavna cjelina: 2. Microsoft Excel 2010
Nastavna jedinica: 1.5. Elektronički logički sklopovi i registry
5 NAREDBE.
Osnove pseudo jezika operatori, funkcije
Program za cjeloživotno učenje-Leonardo da Vinci
Python 8. razred Miodrag Maksimović.
PC Istorija računara.
Uvod u programiranje - matematika – VIII predavanje
Funkcije.
METODE I TEHNIKE ZA ANALIZU I UNAPREĐENJE KVALITETA
PRIKAZIVANJE I ANALIZA PODATAKA
Mogućnosti dodjele bespovratnih sredstava - Proces odabira i najčešće pogreške kod izrade projektne prijave Organizacija događaja sufinancirana je sredstvima.
Vježbe 1. dio - Razvojne okoline -
Seminarski rad: Referentni sistemi
Podaci.
Logički sklopovi Zadaci.
Osnovni pojmovi; nastanak programa
PROJEKTOVANJE RAZGRANATE ALGORITAMSKE STRUKTURE
CIKLIČNE ALGORITAMSKE STRUKTURE
MS EXCEL.
Uvod u programiranje - matematika – V predavanje
Programiranje - Blokovi naredbi i logički tipovi –
BAZE PODATAKA.
JEZIK RAČUNALA: bit i bajt
Statičke i dinamičke web stranice
Elektronički sklopovi računala
Bit i bajt.
Projektovanje namenskih računarskih struktura u obradi signala
Osnovna Struktura programa
Čemu služi računalo?.
EXC - Funkcije - 2. dio Funkcije – drugi dio
NetLogo – novo okruženje za podučavanje informatike
Јелена Бошковић, проф. Рачунарства и информатике
Programski jezici.
Структура програма у Паскалу
Brojni sistemi Sastoje se od skupova znakova (cifri) i pravila za pisanje cifri. Dijele se na pozicijske i nepozicijske (npr. Rimski) Najvažniji sa stanovišta.
Анализа структуре.
1.6. Logičke varijable i funkcije
Algoritmi Vladimir Filipović
Testiranje novog proizvoda
Hrvatski jezik online.
2. Sklopovlje i prog. podrška
2. Jezik računala Bit i bajt.
Principi programiranja
Principi programiranja
V SAVJETOVANJE CRNOGORSKOG KOMITETA CIGRE
Informatika II-programiranje
Pretaživanje brodskih resursa SDS
Синтакса програмских језика и опис синтаксе
Транскрипт презентације:

PROGRAMSKI JEZICI I PROGRAMIRANJE Osnovni pojmovi Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Programi računala služe za obavljanje različitih poslova stvarna namjena računala određena je PROGRAMOM kojeg računalo izvodi skup svih programa koji se mogu izvršavati na računalu nazivamo SOFTVER ili PROGRAMSKA PODRŠKA programe pišu PROGRAMERI postupak nastanka programa (pisanjem NAREDBI programskog jezika) zove se PROGRAMIRANJE Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Naredbe NAREDBA je nalog računalu da izvrši neki osnovni zahvat izbor i redoslijed NAREDBI (građa i vrsta programa) određuje ponašanje računala, odnosno način na koje ono izvršava neku zadaću PROGRAMSKI JEZIK RAČUNALNI PROGRAM SKUP OSNOVNIH NAREDBI ZA PROGRAMIRANJE (for, if, while, case, switch…) naredbe programskog jezika nanizane po određenim pravilima strogo utvrđenim redoslijedom u cilju izvršavanja nekog zadatka PRAVILA PISANJA Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Sintaksa napisane naredbe moraju zadovoljavati zadane zakonitosti, pravila – SINTAKSU PROGRAMSKOG JEZIKA program koji ne zadovoljava propisanu sintaksu je neispravan i nemoguće ga je prevesti u strojni oblik i izvršiti Tehnička, industrijska i obrtnička škola Čakovec

Razvoj programskih jezika FORTRAN (John Backus) 1960. ALGOL 60, COBOL, PL I, PL II 1964. BASIC (John Kemeny, Tom Kurtz) beginner’s all-purpose instruction code 1965. (...1974.) PASCAL (Niklaus Wirth, Klaus Jensen) 1975. C (Dennis Richie) 1983. C++ (Bjarne Stroustrup)... Tehnička, industrijska i obrtnička škola Čakovec

Podjela programskih jezika STROJNI PROGRAMSKI JEZICI – jezici niže razine Naredbe se obično zapisuju simboličkim zapisom, tzv. MNEMONICIMA STROJNOG JEZIKA (binarnog) Pri pisanju strojnih naredbi prvi (obavezni dio) je operacija (operacijski kod) VIŠI PROGRAMSKI JEZICI naredbe se mora prevoditi u strojni jezik računalo mora biti opremljeno odgovarajućim PREVODITELJEM int sum(int[] x) { int sum = 0; n = 0; while (n < x.length) { sum += x[n]; } return sum; 00101010101010 10101011111010 11101010101110 ... Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Evolution: Genealogy From Sebesta’s Concepts of Programming Languages Python 91 (from Modula-3 and ABC 87?). Python 2 influenced by Perl and functional programming. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec ISTRAŽI… Koju sve vrstu uređaja može simulirati računalo? Koje vrste programske podrške (softvera) znaš? Koliko se trenutno programera traži u nekim razvijenim zemljama Zapada i kolike su njihove prosječne zarade? Koji su engleski/njemački izrazi za program, naredba, programiranje, programer, programska podrška/potpora? Što znate o sintaksi hrvatskog književnog jezika? Usporedite programske jezike prema popularnosti (raširenosti). Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Strojni jezik binarni prikaz programa, jedini oblik programa koji računalo “razumije” i u njega se prije izvođenja prevodi svaki drugi oblik programa, tijesno je vezan uz građu računala (arhitekturu mikroprocesora) pa je programer mora dobro poznavati. LD A,$AFFF ST $AD23, A ADD A,B JPNZ A 001001001001 101000100100 111000100100 010100010100 Tehnička, industrijska i obrtnička škola Čakovec

Mnemonici strojnog jezika U zamjenu za pisanje nizova nula i jedinica (binarnog zapisa u strojnom jeziku) koriste se tzv. MNEMONICI STROJNOG JEZIKA (slovčane kratice koje upućuju na djelovanje pojedine naredbe). ASSEMBLER je program koji mnemonike strojnog jezika (push, mov, add, dec, inc, jnz...) prevodi u binarno zapisane instrukcije. push ebp mov ebp,esp pushfd sub esp,2D0h mov dword ptr [ebp-224h],eax mov dword ptr [ebp-228h],ecx mov eax,dword ptr [ebp+8] mov ecx,dword ptr [ebp+4] inc esi cmp al,dl je 7C90ECA9 test al,al je 7C90ECA3 mov al,byte ptr [esi] je 7C90ECA9 test al,al jne 7C90EC98 pop esi pop ebx pop edi xor eax,eax Tehnička, industrijska i obrtnička škola Čakovec

Prednosti i nedostaci strojnog jezika mogućnost izravnog djelovanja na sklopovlje djelotvorno iskorištenje memorije veća brzina izvođenja napisanog programa Nedostaci: složenost postupka izrade programa ograničenost na određeni tip procesora Tehnička, industrijska i obrtnička škola Čakovec

Viši programski jezici i njihove prednosti Prilagođeni su čovjeku, prikladniji su, lakši i razumljiviji Jednom naredbom VIŠEG PROGRAMSKOG JEZIKA nadomješta se cijeli skup naredbi strojnog jezika Prednosti: programer ne mora dobro poznavati građu računala različiti viši programski jezici mogu biti prilagođeni različitim zadaćama i biti bliski stručnjacima za određeno područje. Viši programski jezici opće namjene omogućuju rješavanje šireg raspona zadataka. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Jezični prevoditelji Mikroprocesor prihvaća samo strojni oblik programa pa je svaki drugi oblik programa potrebno prije izvođenja prevesti u strojni oblik IZVORNI PROGRAM (source) koji nije napisan u binarnom obliku, prije izvođenja potrebno je prevesti u strojni oblik. Načelno postoje dvije skupine PREVODITELJA: INTERPRETERI prevode odmah nakon unosa pojedine naredbe KOMPILATORI (compilers) prevode tek nakon unosa čitavog programa Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec ISTRAŽI… Koji su najčešći mikroprocesori kod današnjih osobnih računala? Po čemu se današnji mikroprocesori međusobno razlikuju? Nabrojite neke više programske jezike i pokušajte ih razvrstati prema području primjene, tipovima… izvor: npr. Wikipedia Tehnička, industrijska i obrtnička škola Čakovec

Hrvatski informatičari u svemu ravnopravni s europskim bilježi se stalan manjak zaposlenih u IT sektoru najtraženija zanimanja su programeri raznih programskih jezika, data base developeri, mrežni administratori, djelatnici za potporu prodajnom timu, podršku komunikacijskom menadžemntu, administratori baznih podataka, voditelji obrade podataka. - Zabrinjavajuće je da Hrvatskoj nedostaje oko 1200 računalnih stručnjaka - »Ne samo u Hrvatskoj, već svugdje u svijetu stanje je slično, jer sustavi formalnog obrazovanja financijski ne mogu pratiti razvitak novih tehnologija« - povećana potražnja posljedica brzog razvitka svjetske IT industrije (EU, SAD i Azija) »Problem kod IT kadra je što ljudi koji rade u toj djelatnosti moraju svakodnevno ulagati u svoje znanje i dodatnu edukaciju«, (izvršni direktor portala posao.hr Saša Jurković) hrvatski stručnjaci u svemu konkurentni onima iz zemalja Europske unije Hrvati polako postaju svjesni da, uz formalno obrazovanje, moraju cijelog života ulagati u svoje znanje Vjesnik Utorak, 17. listopada 2006. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec ALGORITMI Tehnička, industrijska i obrtnička škola Čakovec

Razlozi za proučavanje algoritama računalni programi ne bi postojali bez algoritama proučavanje algoritama razvija analitičke vještine dobri algoritmi mogu poboljšati efikasnost računalnih programa Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Više o algoritmima “A person well-trained in computer science knows how to deal with algorithms: how to construct them, manipulate them, understand them, analyze them. This knowledge is preparation for much more than writing good computer programs; it is a general-purpose mental tool that will be a definite aid to the understanding of other subjects, whether they be chemistry, linguistics, or music, etc. The reason for this may be understood in the following way: It has often been said that a person does not really understand something until after teaching it to someone else. Actually, a person does not really understand something until after teaching it to a computer, i.e., expressing it as an algorithm.... An attempt to formalize things as algorithms leads to a much deeper understanding than if we simply try to comprehend things in the traditional way” Donald E. Knuth (one of the most prominent computer scientists of our time 1996.) Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Upamti! Algoritmi nisu odgovori su dobro definirani koraci za dobijanje odgovora Algoritmi koriste PODATKOVNE STRUKTURE (DATA STRUCTURES) Učenje o algoritmima i podatkovnim strukturama pomaže u stjecanju kompetencija za uspješnije rješavanje problema (better problem-solver)! The term algorithm is used in computer science to describe a problem solving method suitable for implementation as a computer program. [Sedgewick 2003] The A* algorithm Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Definicija Naziv ALGORITAM potječe od imena arapskog matematičara Muhamed ibn Musa al Horezmi. ALGORITAM je opis matematičkog ili drugog postupka, sastavljen od izvjesnog broja koraka ili akcija, dan u obliku niza uputa koje treba obaviti određenim redoslijedom. ALGORITAM je proces ili niz pravila za rješavanje nekog zadatka ili zadanog problema. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Primjeri algoritama Algoritam – uputa ili recept: Uputa za prelazak preko ulice Upute za uporabu kućanskih aparata Kuharski recept Upute za sijanje Uputa za zbrajanje brojeva Isti algoritam može biti predstavljen na niz različitih načina. Za rješavanje istog problema mogu postojati različiti algoritmi (načini). Algoritmi za isti problem mogu biti utemeljeni na vrlo različitim idejama i problem mogu rješavati sasvim različitim brzinama. Tehnička, industrijska i obrtnička škola Čakovec

Programiranje – sinteza algoritama RAČUNALNI PROGRAM predstavlja algoritam opisan uputama, operacijama koje računalo razumije, a služe rješavanju nekog problema. PISANJE PROGRAMA je proces izražavanja algoritama nizom naredbi u nekom jeziku za programiranje. Konvergentni algoritam se sastoji od konačnog broja koraka koji sigurno vode do rješenja (ako ono uopće postoji). Tehnička, industrijska i obrtnička škola Čakovec

Karakteristike algoritma Ima početne objekte (ulazni podaci) Ima završne objekte (izlazni podaci, rezultati) Ima konačni broj koraka (mogu se opisati uputama, naredbama, instrukcijama) Mogu biti općeniti ili specijalizirani Mogu biti uporabljivi i neuporabljivi Imaju izvoditelja Postoji jezik za njihovo zapisivanje (koji može biti umjetni – programski jezik ili govorni) Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Opis postupka Nakon formulacije problema treba precizno opisati algoritam, a zatim ga izraziti notacijom programskog jezika i to se onda daje računalu na izvršenje. Definiraju se koraci koji će dovesti do rješenja Tehnička, industrijska i obrtnička škola Čakovec

Primjeri različitih algoritama za rješenje istog problema Nalaženje riječi u rječniku Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Algoritam 1. 1. korak: otvoriti stranu rječnika prije prve. 2. korak: otvoriti slijedeću stranu. 3. korak: ako posljednja riječ na otvorenoj strani nije po abecedi prije tražene riječi ili ako je otvorena strana posljednja, nastaviti sa 4. korakom, inače ponoviti 2. korak. 4. korak: potražiti traženu riječ na otvorenoj strani i zapisati njeno značenje. Ako tražena riječ nije nađena, zapisati da je nema u rječniku. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Algoritam 2. 1. korak: napraviti snop iz svih listova rječnika. 2. korak: dok je tražena riječ po abecedi iza posljednje riječi prve strane snopa i prije prve riječi posljednje strane snopa, ili dok nije u snopu samo jedan list, ponavljati 3. i 4. korak, inače napraviti 5. korak. 3. korak: razdjeliti snop u dva dijela. 4. korak: ako je tražena riječ ispred posljednje riječi prvog snopa, nastaviti rad sa tim snopom, u suprotnom uzeti za novi snop drugi dio. 5. korak: potražiti traženu riječ na prvoj ili posljednjoj strani snopa i zapisati njeno značenje. Ako tražena riječ nije nađena, zapisati da je nema u rječniku. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Algoritam 3. 1. korak: napraviti snop iz listova rječnika koji leže između oznake s prvim slovom tražene riječi i slijedeće oznake. 2. korak i ostali jednaki su kao i u algoritmu 2. Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Primjer: Izračunati z=xy (x i y su cijeli pozitivni brojevi) - napraviti algoritam za potenciranje Rješenje 1.: Ako računalo “zna” potencirati, onda se može napisati npr. z=pow(x,y); ili z:=x^y; Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Primjer – nastavak: Rješenje 2.: Ako računalo “zna” samo osnovne računske operacije, treba sastaviti algoritam za potenciranje koji će tu operaciju raščlaniti na niz množenja, npr.: z:=1; u:=y; ponavljaj z:=z*x; u:=u-1 dok ne bude u=0; Tehnička, industrijska i obrtnička škola Čakovec

Matematička logika u programiranju Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Uvod Izvođenje programa ne mora biti pravocrtno, bezuvjetno, već se program može GRANATI kod grananja obično ISPITUJEMO NEKI UVJET (može biti ispunjen ili ne) i DONOSIMO ODLUKU o daljnjem tijeku izvođenja programa Ostvarenje PROGRAMSKIH GRANANJA, ali i PROGRAMSKIH PETLJI zasniva se na POZNAVANJU LOGIKE koje olakšava razumijevanje i stvaranje programa LOGOS – riječ, misao, zakon, razlog, razum LOGIKA - grana filozofije Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Logika koja se bavi utvrđivanjem razložnosti rasuđivanja Nešto je logično ako se može obrazložiti nekim dokazima Osnovni pojam u logici je LOGIČKI SUD - TVRDNJA koja se ocjenjuje s gledišta ISTINITOSTI ili LAŽNOSTI VALJANI sudovi mogu biti ISTINITI (TRUE) ILI LAŽNI (FALSE) Istraživanjima sudova bavi se posebna grana matematike: MATEMATIČKA LOGIKA Osnovu matematičke logike čini ALGEBRA SUDOVA (LOGIČKA, BOOLEOVA ALGEBRA) Operacije sa sudovima su LOGIČKE ili BOOLEOVE Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec George Boole 1815-1864 Matematičar koji se bavio logikom Razvio logičku algebru (Boolean Algebra) Uveo operatore and (konjunkcija) or (disjunkcija) not (negacija) nor (exclusive or) Tehnička, industrijska i obrtnička škola Čakovec

Složeni sudovi i označavanje sudova Za označavanje sudova koriste se logičke varijable koje mogu poprimiti vrijednost 0 ili 1 (laž ili istina) od jednostavnih sudova stvaramo složenije Istinitost ili lažnost složenijih sudova može se utvrditi temeljem formula koje uključuju logičke operatore: negacija, konjunkcija, disjunkcija sudovi često uključuju i relacijske simbole ili operatore: <, >, =, <=, >=, <> relacijski simboli opisuju odnose među vrijednostima napisanim sa lijeve/desne strane operatora Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Tablice istinitosti A B !A !B A && B A || B 1 Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Istraži… Utvrdi istinitost ili lažnost sudova: Sud Vrijednost 5>2 3>6 4=4 7<=6 Napiši tablicu istinitosti za: (A||B)&&(A&&B) (A||C)||(A&&B)&&(B||C) Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec IZRADA PROGRAMA Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Faze u izradi programa Planiranje, definiranje, analiza i opisivanje problema, određivanje algoritma, oblikovanje rješenja Kodiranje i prevođenje Testiranje i ispravljanje, kontrola programa na formalne (sintaktičke, semantičke) i logičke greške Održavanje programa Dokumentiranje programa – faza koja se provodi usporedo sa ostalim fazama (odvojeno i/ili u kodu) Tehnička, industrijska i obrtnička škola Čakovec

Metode programiranja i predstavljanje algoritama Tehnička, industrijska i obrtnička škola Čakovec

Modularno programiranje Program se sastoji od modula (procedura, funkcija, potprograma...) koji se mogu nezavisno razvijati i zatim koristiti u više programa prednost: olakšano pisanje, testiranje, unošenje izmjena. Strukturirano programiranje Program je građen pomoću elementarnih (osnovnih) logičkih struktura: sekvence-niza, grananja i ponavljanja odvijanje programa: pravocrtno, temeljeno na rezultatima (odlukama, izboru, uvjetima) prethodne obrade petlja. Tehnička, industrijska i obrtnička škola Čakovec

Osnovne programske strukture Pravocrtan tijek programa, sekvenca Programska grananja if (ako) if-else (ako-onda) switch (višestruko grananje) Programske petlje for (poznati broj ponavljanja) do-while (ispitivanje uvjeta ponavljanja na kraju) while (ispitivanje uvjeta ponavljanja na početku) Tehnička, industrijska i obrtnička škola Čakovec

Neki načini opisa algoritama Kod opisa algoritma i objašnjenja koda pomaže upotreba Blok dijagrama – simbolički prikaz algoritma/programa Pseudokoda – strukturirani opis u prirodnom jeziku Blok dijagrami - grafički Pseudokod – riječima ako, onda, za, učitaj, ispiši, dok je... Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Blok dijagrami POČETAK I=1, S=0 BROJ NE BROJ>0 DA S=S+BROJ I<10 && S<99 DA I=I+1 NE S, I KRAJ Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Pseudokod i=1, s=0; učitaj broj radi ako je (broj>0) onda s+=broj; dok je (i++<=10&&s<99); ispiši s, i i=1, s=0; read broj do if (broj>0) s+=broj; while (i++<=10&&s<99); write s, i Tehnička, industrijska i obrtnička škola Čakovec

Tehnička, industrijska i obrtnička škola Čakovec Primjer napraviti program za zbrajanje dva cijela broja napraviti program koji će zbrojiti, oduzeti, pomnožiti i podijeliti dva cijela broja. Pri tome izbjegnuti dijeljenje s nulom. napraviti program koji će zbrojiti pet brojeva, pa ispisati kakav je zbroj (jednak, veći ili manji od nule). Koristiti najviše tri varijable. Ispisati sve djelitelje za deset učitanih brojeva iz intervala [100, 1000]. Tehnička, industrijska i obrtnička škola Čakovec