C++

<<

wandrika

Príspevky: 8

Registrovaný: Str Nov 15, 2006 11:23 am

Poslať Pon Dec 04, 2006 3:58 pm

C++

Tento príspevok je o predmete PAZ, hoci začnem trochu zoširoka... Príhodou zo života, ktorá sa môže stať aj vám (ak už ste ju nezažili):
Predstavte si, že stretnete kolegu informatika (alebo kolegyňu, ale tie sú zriedkavejšie), možno z úplne iného mesta a úplne inej školy a dáte sa do reči. Samozrejme padne aj otázka: "V čom vieš programovať?"
A vy odpoviete: "No, v Jave, Delphi, Pascale..."
"A čo céčko?"
"Ehm, no, vieš, na našej škole sa céčko neučí..."
Pointa je v tom, že ten druhý si vás hneď zaradí o kategóriu nižšie...

A práve o tom chcem hovoriť. Nechýba vám na tejto škole výuka C? Pravdaže si uvedomujem všetky výhody Pascalu - je jednoduchý, ľahko sa na ňom učí, väčšina študentov ho pozná zo strednej školy a navyše má na UPJŠ dlhú tradíciu. Ale C je v praxi predsa len výhodnejšie ovládať.
Niektorí učitelia by namietli, že základy programovania študenti dostanú a nikto im nebráni sa C naučiť. Ale tento prístup sa mi nepáči. Nikto mi napríklad nebráni naučiť sa molekulárnu biológiu, lenže viem, že na to v živote nebudem mať čas. Škola je podľa mňa na to, aby sme sa v nej naučili to, čo budeme potrebovať vedieť v našej profesii. V tomto prípade (väčšinou) v IT. A céčko by sa mnohým z nás zišlo.

Čo si o tom myslíte vy?
<<

gursky

Site Admin

Príspevky: 353

Registrovaný: Pon Nov 13, 2006 3:32 pm

Poslať Pon Dec 04, 2006 4:15 pm

ja som niekedy okolo 20.10.2006 ucil toto:

ja som niekedy okolo 20.10.2006 na operacnych systemoch ucil toto:
  Kód:
#include <stdio.h>
#include <conio.h>
#include <malloc.h>

class Prvok {
       public:
       int vyska, odkial, kam, pomocou, vnorenie;
       
       Prvok (int vyska,int a,int b,int c,int vnorenie) {
        this->vyska = vyska;
        this->odkial = a;
        this->kam = b;
        this->pomocou = c;
        this->vnorenie = vnorenie;
       }
};

struct bunka {
       Prvok *p;
       struct bunka *dalsia;
};

class Zasobnik {
      public:
      struct bunka *vrchol;
     
      void vloz(Prvok *p) {
           struct bunka *pom;
           pom = (struct bunka*) malloc(sizeof(struct bunka));
           pom->p = p;
           pom->dalsia = vrchol;
           vrchol = pom;
      }
     
      struct Prvok* vyber() {
             struct bunka *pom;
             pom = vrchol;
             vrchol = vrchol->dalsia;
             return pom->p;
      }
     
      int prazdny() {
          if (vrchol == NULL) {
                     return 1;
          }
          else {
               return 0;
          }
      }
};
Zasobnik *z = new Zasobnik();

void prenesVezu(int vyska, int odkial, int kam, int pomocou) {
     if (vyska>0) {
        prenesVezu(vyska-1, odkial, pomocou, kam);
        printf("%3d => %3d\n",odkial,kam);
        prenesVezu(vyska-1, pomocou, kam, odkial);
     }
}

void nerekurzivne(int vyska, int odkial, int kam, int pomocou) {
     int vnorenie = 1;
     Prvok *p;
     p = new Prvok(vyska,odkial,kam,pomocou,vnorenie);
     z->vloz(p);
     while (! z->prazdny()) {
           p = z->vyber();
           switch (p->vnorenie) {
                  case 1:
                       if (p->vyska>1) {
                          z->vloz(new Prvok(p->vyska,  p->odkial,p->kam,p->pomocou,2));   // moj uzol cakajuci na druhe vnorenie
                          z->vloz(new Prvok(p->vyska-1,p->odkial,p->pomocou,p->kam,1)); // prvy syn
                       } 
                       else {
                          z->vloz(new Prvok(p->vyska,  p->odkial,p->kam,p->pomocou,2));
                       }             
                  break;
                  case 2:
                       printf("%3d => %3d\n",p->odkial,p->kam);
                       if (p->vyska>1)
                          z->vloz(new Prvok(p->vyska-1,p->pomocou,p->kam,p->odkial,1)); // druhy syn
                  break;       
           }
     }
}

main (){
     int pocet;
     
     printf("zadaj pocet diskov: ");
     scanf("%d", &pocet);
     prenesVezu(pocet,1,2,3);
     printf("\n nerekurzivne:\n");
     nerekurzivne(pocet,1,2,3);
     
     getch();
}

Co viac z cecka by si este dala do obsahu cvika? Pole smernikov na funkcie? priamy pristup na disk alebo volanie assebleru?
Naposledy upravil gursky dňa Pon Dec 04, 2006 4:22 pm, celkovo upravené 1
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Pon Dec 04, 2006 4:19 pm

Pokial viem, tak Ccko sa momentalne cvici na Operacnych systemoch...

Neviem preco by ,,neznalec" Ccka mal byt automaticky zaradeny do nizsej kategorie. Ano, Ccko je istym sposobom sucast programatorskeho folkloru, ale postupom casu sa ukazuje, ze v praxi zacinaju medzi sebou bojovat jazyky vyssej urovne: a to hlavne <prihrievaniePolievocky>Java</prihrievaniePolievocky> a C# - staci sa poobzerat po aktualnych pracovnych ponukach.

Ale ano, iste zaklady by neboli od veci (aby clovek vedel, co je pointer).
Lorem ipsum dolor sit amet.
<<

janq

Príspevky: 54

Registrovaný: Str Nov 15, 2006 10:04 pm

Bydlisko: Earth (temporary)

Poslať Pon Dec 04, 2006 6:56 pm

Re: ja som niekedy okolo 20.10.2006 ucil toto:

Co viac z cecka by si este dala do obsahu cvika? Pole smernikov na funkcie? priamy pristup na disk alebo volanie assebleru?

Ostava este dodat, ze v C++ sa zvykne zasobnik implementovat takto:
  Kód:
#include<stack>
std::stack<Prvok> z;


Hlavnym dovodom druhej kategorie pre neznalych C je ale pravdepodobne syntax. Aj "jazyky vyssej urovne", ktore spomenul alef0, su odvodene od syntaxe jazyka C.
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Uto Dec 05, 2006 8:59 am

Technicky nic nebrani rozsirit sylaby o C++: teda objektovo-orientovane programovanie, STL a pod.

Otazkou je, kto to bude cvicit ;-)
Lorem ipsum dolor sit amet.
<<

tomi

Príspevky: 25

Registrovaný: Uto Dec 05, 2006 10:21 am

Poslať Uto Dec 05, 2006 11:02 am

???

(Sofer mercedesu 8) ): - Na akom aute jazdis?
(Sofer skodovky :? ): - Skoda.
A sofer mercedesu zaradil sofera skodovky do nizsej kategorie, ktory lutoval, ze ho v autoskole neucili jazdit na mercedese (ako aj na vsetkych ostatnych typoch aut).

Podla mna, miesto "V com programujes?" ta otazka by mala byt "Vies programovat?"

Suhlasim s tym, ze je uzitocne vediet C (ako spominal Alef0, patri to k folkloru), ale ak neprogramujem v PHP tak ma webdesigner zaradi nizsie, ak neprogramujem v Prologu tak ma zaradia nizsie ludia z umelej inteligencie, a tak isto je to aj s ostatnymi jazykmi.

Ak vidim, ze ma niekto "zaraduje" do nizsej kategorie kvoli tomu, ze neovladam to co on, hned viem ze je sprosty a spytam sa ho: "Pocuj, co si myslis o probleme usporiadania domen ordinalnych atributov pri indukcii generalizovanych anotovanych programov na hladanie riesenia fuzzy induktivneho logickeho programovania?"

Takze, vzdy majte vo vrecku nejaku dobru otazku :wink:
h.t.

PS: Ak dobre viem, u nas sa C "spomenie" aj na viacerych predmetoch (PAZ, 1.rocnik letny semester - aspon syntax, OPERACNE SYSTEMY - vid prispevok od Gurskeho, SYSTEMOVE PROGRAMOVANIE).
<<

bwpow

Príspevky: 634

Registrovaný: Str Nov 22, 2006 11:19 am

Bydlisko: Košice

Poslať Štv Dec 07, 2006 11:43 am

alef0 píše:Technicky nic nebrani rozsirit sylaby o C++: teda objektovo-orientovane programovanie, STL a pod.

Otazkou je, kto to bude cvicit ;-)


Co tak ~novotnyr, nech sa nauci pouzivat aj nejaky poriadny jazyk, nie len tie Java hatlaniny :)

Ale taktiez som za to, aby sa miesto Pascalu vyucovalo C++ a STL, uz len kvoli tomu, ze clovek sa nemusi pri implementacii algoritmov zaoberat zakladmi ako dynamicke polia, zasobnik, fronta a pod. Zaklady treba vediet, ale naco stracat cas pri ich kazdom pouziti.

Dalsia vyhoda C++ oproti Pascalu je, ze ide o omnoho cistejsi jazyk oproti Pascalu. Ale to je uz zaklad na flamewar, ktory sa ovela lepsie zivy na inych diskusnych forach.
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Štv Dec 07, 2006 12:07 pm

... Java hatlaniny

.. a C# hatlaniny a Python hatlaniny. Obrázok

Ale spat k teme: prednasa sa na niektorej z ceskoslovenskych univerzit C++ ako uvodny jazyk do programovania? (Urcite ano, ale mate nejake klebety z druhej ruky?)
Lorem ipsum dolor sit amet.
<<

wandrika

Príspevky: 8

Registrovaný: Str Nov 15, 2006 11:23 am

Poslať Štv Dec 07, 2006 12:15 pm

flamewar

Calm down! V žiadnom prípade nechcem vyvolávať vojny. Išlo mi len o to, aby sa ľudia vyjadrili, aké programovacie jazyky by sa chceli učiť na tejto škole. Hlavne tí, ktorých sa to ešte týka.
<<

balky

Príspevky: 10

Registrovaný: Uto Dec 12, 2006 10:16 am

Poslať Uto Dec 12, 2006 10:19 am

Re: flamewar

wandrika píše:aby sa ľudia vyjadrili, aké programovacie jazyky by sa chceli učiť na tejto škole. Hlavne tí, ktorých sa to ešte týka.


Mna sa to uz velmi netyka, ale urcite by sa mal ucit miesto zastaraleho pascalu PYTHON, ktory ho nahradza vo vsetkych ohladoch a zaroven to je moderny jazyk.
<<

alef0

Site Admin

Príspevky: 621

Registrovaný: Štv Nov 16, 2006 8:57 am

Poslať Uto Dec 12, 2006 10:42 am

Ad python: nuz, mozno by naozaj stalo za hriech vyskusat s experimentalnou skupinou prvakov v prvom semestri Python namiesto Pascalu.

V kazdom pripade si myslim, ze Pascal ako prvy programovaci jazyk ma z didaktickeho hladiska stale nejednu vyhodu oproti ostatnym jazykom.
Lorem ipsum dolor sit amet.
<<

quisutdeus

Príspevky: 16

Registrovaný: Pia Nov 17, 2006 2:02 am

Poslať Uto Dec 12, 2006 10:54 am

Súhlasím s Alefom0. Pascal je z didaktického hľadiska vhodnejší, pretože jeho syntax sa viac približuje k prirodzenému jazyku (odhliadnuc od faktu, že je ním angličtina) i k zaužívanému algoritmickému metajazyku. Predmet sa nazýva programovanie, algoritmy a zložitosť a myslím, že ťažisko je práve na algoritmoch. V súvislosti s touto témou sa možno treba aj zamyslieť nad koncepčnou otázkou, koho vlastne má študijný program informatika vychovať.
<<

bwpow

Príspevky: 634

Registrovaný: Str Nov 22, 2006 11:19 am

Bydlisko: Košice

Poslať Uto Dec 12, 2006 11:08 am

alef0 píše:
... Java hatlaniny

.. a C# hatlaniny a Python hatlaniny. Obrázok

Dufam, ze si pochopil, ze islo o zart :)

Teraz k teme. Moj nazor je taky, ze by sa algoritmy mali ucit vo viacerych jazykoch. Kazdy ma svoje pre a proti a je vhodny na nieco ine. Zial, ten pascal je vhodny asi iba na edukacne ucely.

Python je naozaj velmi vynimocny jazyk. Je velmi cisty a svojim navrhom nuti programatorov aspon odsadzovat zdrojak, co je podla mna velkym problemom dnesnych studentov.

C, resp. jeho objektovy bracek je "slobodny" jazyk. Pre zaciatocnika je asi prilis nezrozumitelny a nebezpecny, ale skusenejsim programatorom poskytuje obrovsku slobodu a neexistuje nad neho ziaden jazyk.

Java, C#, Delphi nie su asi zle jazyky a urcite by sa mal v nich kazdy student orientovat. Ved nikto nevie, v com sa bude o 5 rokov programovat. Mozno Microsoft vymysli jazyk Gates## a SUN skrachuje a hned sa vsetci na tento novy jazyk budu hrnut.

Programovanie je proste umenie. Tak ako si uvedomujeme, ze nie kazdy ma sancu byt dobrym spevakom (a mnohi ani zlym) alebo maliarom, treba si priznat, ze nie kazdy ma na to byt programatorom. Preto by skola nemala vychovavat programatorov ale mala by poskytnut studentovi dostatocny prehlad, jemny uvod do problematiky a hlavne ho pri jeho tazkej ceste podrzat. Programovat sa proste musi clovek naucit sam tvrdym treningom, ina cesta neexistuje. A skola by do tohto procesu mala zasiahnut, ked si dany clovek uz nevie rady a niekde sa zasekne.

Preto by programatorske/algoritmicke predmety nemali byt zamerane na jazyk, ale skor na algoritmy. Ved algoritmus funguje rovnako v kazdom jazyku. Ale kedze treba aj v niecom implementovat, postupne by sa mohli prejst zaklady vsetkych rozsirenych jazykov, vysvetlit rozdiely, spomenut vyhody a nevyhody a nech si uz studenti vyberu ten ich.

Dobrym prvym krokom by bolo si pripustit, ze proste nie je sanca urobit z kazdeho studenta programatora a aj tak koncipovat vyuku. A na cviceniach miesto zakladnych prikazov Pascalu preberat radsej algoritmy a studenti nech si programuju v com chcu a ked si nevedia rady, tak by cviciaci mal vediet pomoct v ktoromkolvek programovacom jazyku (z tych 5 az 6 najrozsirenejsich).

Sice by sme sa po prvom semestri rozlucili s 50 az 60% studentov, no ti, co by ostali by boli ovela schopnejsi a rozhladenejsi. Mozno by nam dokonca zacali nasi absolventi robit vo svete dobre meno a na skolu sa tym padom prihlasilo aj viac schopnych studentov.

Toto riesenie nie je ani jednoduche, ani rychle, ale na rozdiel od inych je spravne :)
<<

janq

Príspevky: 54

Registrovaný: Str Nov 15, 2006 10:04 pm

Bydlisko: Earth (temporary)

Poslať Uto Dec 12, 2006 11:32 am

Re: flamewar

balky píše:ucit miesto zastaraleho pascalu PYTHON, ktory ho nahradza vo vsetkych ohladoch a zaroven to je moderny jazyk.

alef0 píše:stalo za hriech vyskusat s experimentalnou skupinou prvakov v prvom semestri Python namiesto Pascalu.

Python je jazyk v ktorom sa premenne nedeklaruju, tj. typ premennej sa urcuje az priradeni hodnoty. Pri praci s Pythonom sa takmer vobec nepracuje s typmi. Niekedy je pretypovanie nutne, kedze "2"*3=="222".
Minimalne z tohodo dovodu je tento jazyk nevhodny. Predmet, na ktorom by ste to chceli ucit sa vola Programovanie Algoritmy Zlozitost. Python ako jazyk na zapis algoritmov, uff.

Pri odhliadani od typov premennych je potom dost tazke vysvetlit nasledujuce spravanie programu v Pythone:
  Kód:
>>>print 1.1*6==6.6;
False

Ja by som nedoporucoval zacinat pri programovani prave s Pythonom.
Naposledy upravil janq dňa Uto Dec 12, 2006 11:47 am, celkovo upravené 2
<<

quisutdeus

Príspevky: 16

Registrovaný: Pia Nov 17, 2006 2:02 am

Poslať Uto Dec 12, 2006 11:37 am

To bwpow

V mnohom sa dá s tvojim príspevkom súhlasiť, ale...
Naozaj si myslím, že výuka čistých algoritmov a slobodná voľba v otázke implemetnácie by bola ideálnym stavom. Mal som možnosť učiť prvákov i maturantov programko, čo ma v tomto smere privádza k miernej skepse. Obávam sa, že percentuálny podiel, ktorý uvádzaš, by bol vyšší. Je však tiež pravdou, že nakoniec aj tak k veľkému úbytku dôjde (analýza, TVY), len sa trošku opozdí. Každá minca má dve strany (fanklub geometrie nech mi láskavo prepáči). Možno by to tiež chcelo verejnú diskusiu. Je jednoduché robiť reformy tu na fóre, no omnoho ťažšie implementovať v praxi, ktorá sa potýka s kvantom študentov v prvom ročníku a nedostatkom času.
Ďalší

Späť na Pripomienky k predmetom

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 1 hosť

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software.
Slovenský preklad.