C programozás alapismeretek

A C programozás iránt érdeklődőknek, kezdőknek és kalandoroknak indítottam egy kis alapozót.
Jelenleg videó csak az első 9 témakörhöz érhető el, de folyamatosan fogom készíteni a többi bejegyzéshez is és akkor vesszük betűről betűre, hogy mit is csinál minden egyes példa program.

Fogadjátok nagy szeretettel, én is azzal készítettem:
https://skamilinux.hu/phpBB3/viewforum.php?f=66

Videók:
https://www.youtube.com/playlist?list=PLTwvqf_atuc2Mcvgi8wTwPLBM-8r7xudq

Hozzászólások

bookmark

-----
„Egy jó kapcsolatban a társunkat az ő dolgában kell támogatni, nem a miénkben.”
rand() a lelke mindennek! :)
Szerinted…

köszi, megnézzük
--
Én TUDOM, hogy igazam van. És ha nincs is, akkor is NEKEM van igazam, mert én vagyok az Admin. Ennyi!

Ha jöhet konstruktív kritika, akkor azt javasolnám, hogy egy más platformot használj a tutorialhoz, ne egy phpBB-s fórumot, amit nem erre találtak ki. Először is a leckék sorrendje kb. véletlenszerű, mert az utolsó aktivitás szerint rendezi a fórum, nem ahogy logikailag egymásra épülnének. Ezen felül a forráskódhoz nincs színezés és csak egy kis ablakban jelennek meg, görgetni kell őket, nem lehet egyben átlátni.

Alkalmasabb lenne akár simán a githubot használni erre: egy markdown fájl egy lecke, rendes színezéssel, a repó elején meg a tartalomjegyzék. A forráskódok meg ott lennének közvetlen a lecke mellett egy klónozásra. (Bónuszként egy-egy lecke lehetne a gitről és a githubról/gitlabról/stb). De lehet akár egy minimál (opcionálisan statikusan generált) weboldal is, ahol tudnál már rendes forráskód színezést használni, de emellett be tudod rakni a videókat/reklámokat is, amit a github saját oldalára nem lehet.

Na igen, ha a topicok sorrendje fix lenne, akár jó is lehetne, mert úgy lehet, hogy nem lennék lusta regelni és hozzászólásként javaslatokat tenni, hogy mire érdemes figyelni a kódokban (ami egyébként pedagógiai szempontból is előnyös lehet: ha elsőre a javított kód lesz ott, akkor a miért-ek nagy része eltűnik, viszont így, hogy van egy kód, azt meg lehet vitatni, így fokozatosan követhető, hogy hogyan lesz egyre jobb).

Pl. a "Maximum érték meghatározása - FOR és IF használata" kódnál az "int"-re felhívni a figyelmet majd a maximum=0 kezdőértékre, hogy akkor ez a kód csak addig jó, amíg csak pozitív számokat kap inputnak.

De a sorrend tényleg problémás.

BlackY
--
"en is amikor bejovok dolgozni, nem egy pc-t [..] kapcsolok be, hanem a mainframe-et..." (sj)

Nagyon szépen köszönöm mindenkinek a hozzászólásokat!
Igen, erre nagyon jó lenne valamit kitalálni, viszont a fórum mindenképpen kell, hiszen ezért indítottam egyesével az adott témakörökhöz az adott programokat, hogy egy adott feladat, mint a dobókocka program teljesen saját szálat kap, így végig lehet beszélgetni az a lehetőségeket, variációkat és a problémákat.

Minden eset konkrét kibeszélési lehetőséget kap, viszont ez a színezés tényleg gond, ez jó lenne máshogy....

Egyelőre akkor megcsinálom a sorszámokat az adott témakörökhöz és aztán kitalálunk valamit a forráskódok minőségi megjelenítéséhez az olvashatóság javítására....

Puppy linux, mert megérdemlem. http://skamilinux.hu

mondjuk lehetne azzal kezdeni, hogy megnezed valamelyik opensource projekt syntax guidejat, es azt koveted, mert a mostani kod eleg ronda (es nem a phpBB miatt)?

olyan ez mint a zongora: lehet szar tartassal is kezdeni meg hogy az ujjaid rosszul csinaljak a dolgokat, akkor is el fogsz pompogni valamit, de nem a legjobb.

A kommentben azt irtad, hogy uj szamot huzol, de nem latom az ujrahuzast a kodban.

Valoszinuleg en igy oldanam meg:


int main(){
    // ...
    for(int i = 0; i < 5; i++) {
        do {
            huzas = (rand() % 90) + 1;
        } while (bennevan(huzas, lottoszam, i))
        lottoszam[i] = huzas;
    }
    // ...
}

bool bennevan(int szam, int[] tomb, int hossz) {
    for(int i = 0; i < hossz; i++) {
        if (tomb[i] == szam) return true;
    }
    return false;
}

disclaimer: regen irtam C kodot telefonon, lehetnek benne hibak. ;)
---
Lambda calculus puts the fun into functional programming

A 19-es lottósnál van egy ilyen rész:


for (j=0; j<=i; j++) //megnézzük,...

helyette lehetne:


vane=0;
for (j=0; j<i; j++) //megnézzük,...

A 17-esben:


    printf("\n\t Szia! Mi a beceneved ?  ", becenev);

helyett:


    printf("\n\t Szia! Mi a beceneved ?  ");

Fúúú...
Köszi, a 17 -es javítva !

A 19 -es téma teljesen elvadult ötlet volt bevezetni egy plusz változót, teljesen fölösleges eltárolni azt, hogy van e már ilyen szám kihúzva.
Egyszerűen ha van, akkor húzunk másikat "oszt kész" :)

Puppy linux, mert megérdemlem. http://skamilinux.hu

Ilyesmit lehetne belőle csinálni:


        lottoszam[i]= huzas;
        i++; // ezt még esetleg vissza kell vonni
        for (j=0; j<i-1; j++) //megnézzük, hogy volt-e már, ha igen, akkor ez nem vált be
        {
            if(lottoszam[j]==huzas)
            {
                i--;
                break;
            }
        }

De inkább a legelső állapotot kellene visszaállítani, azzal a javítással, amit először írtam.

esetleg valamelyik online compilert nem akarod "bevetni"?

azt ne kérdezd, hogy melyiket javaslom a kismillió közül, mert annyira nem ismerem őket,

én a "fapados" ideone.com-ot szoktam néhanapján használni, a hátrányai: 1 "fájlba" kell írni mindent, parancssori argumentumokat nem kezel, nincs interaktív stdin ("textarea-ból olvas"), ..., de kis kódokra szerintem jól használható,

a repl.it-nél több fájlból is lehet "épitkezni", fájlból is tud olvasni, sőt írni is, van automatikus kódkiegészítés, de ha jól értem/látom, akkor a megosztáshoz be kell jelentkezni (google/github/facebook account valamelyikével), és csak a fizetős verziónál lehet privát kódot írni...

meg persze van csillió másik, most csak ezt a kettőt néztem...

Még a telefont szoktam bevetni, de az online fordítókat, amikből tényleg sok van azért,
mindenképpen meg kell említeni, hiszen sokan nem is gondolnak rá, hogy van lehetőség ilyesmire is.
Köszi, jó ötlet!

A telefon:

Puppy linux, mert megérdemlem. http://skamilinux.hu

Sok munkád lehet benne. Köszönjük!
Hátha tudod használni, a Rust egyik oktatóvideó sorozata jó vázat adhat a C oktatófilmjeid témájához.

C esetén egy egyszerű Makefile bemutatása és vele együtt a több fájlba szervezett programírás is hasznos lehet.

Amikor tanultam valamikor C-ben programozni, az alábbi segítségek voltak:
Debian/Ubuntu: apt install manpages-dev glibc-doc gcc-doc make-doc

A header fájlokat kevésbé kell bújni, a man lapokban szépen le van írva minden.

Például:
$ man 3 printf
$ man 2 poll

További segítség:
$ info libc - PDF-ben
$ info make - PDF-ben
$ info gcc - PDF-ben

bug report: A 19-nel irod, hogy kinezhetne rondan formazva is.
Szerintem a C eloforditok a #-kal kezdodo parancsokat csak sor elejen hajlandoak megenni, a tobbit meg eldobjak. GCC is szol miatta (warning: extra tokens at end of #include directive). Emiatt a main is eltunik a forditaskor, es a 2. sor elejere mar szintaktikai hibat okoz.
Ha az include-os sorokat kulonveszed, es a maint is uj sorban kezded, mar mukodik.

--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin