Priklady C - pre zaciatocnikov
Moderátori: psichac, Moderátori
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
dneska mi to vobec nepali, mal som tazky den a uz som si dal 2 piva (Postřižinské ležáky)
to zadanie som pochopil tak, ze budem tukat do klavesnice nahodne znaky do vtedy, az zmacknem x a vtedy program skonci a nieco vypise
ale neviem jak to urobit ze ked stlacim napr.: x (bez enter) aby to nieco vypisalo
to zadanie som pochopil tak, ze budem tukat do klavesnice nahodne znaky do vtedy, az zmacknem x a vtedy program skonci a nieco vypise
ale neviem jak to urobit ze ked stlacim napr.: x (bez enter) aby to nieco vypisalo
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: Priklady C - pre zaciatocnikov
Urob to tak, že ten enter budeš stláčať... bez toho by to bolo myslím komplikované.
0
- scd
- Stály člen
- Príspevky: 150
- Dátum registrácie: 17 Apr 2009, 00:00
- Bydlisko: Dubnica nad Váhom
- Vek: 35
Re: Priklady C - pre zaciatocnikov
Ak chces nacitat znak bez potvrdenia enterom pouzi funkciu getch() alebo getche(). Popis rozdielov medzi nimi:
http://www.c-lang.thiyagaraaj.com/archi ... tchar-in-c
To nacitavanie znaku zaobal do cyklu 'do while' v ktorom budes spocitavat znak 'a' a v podmienke testovat ci uzivatel nenapisal 'x'. po dokonceni cyklu vypises pocet znakov 'a'.
http://www.c-lang.thiyagaraaj.com/archi ... tchar-in-c
To nacitavanie znaku zaobal do cyklu 'do while' v ktorom budes spocitavat znak 'a' a v podmienke testovat ci uzivatel nenapisal 'x'. po dokonceni cyklu vypises pocet znakov 'a'.
0
Keyboard not present. Press ENTER to continue...
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
ani getch() ani getche() mi nefunguje
hadze mi to chybu na 7. riadku - undefined reference to 'getch'
hadze mi to chybu na 7. riadku - undefined reference to 'getch'
Kód: Vybrať všetko
#include <stdio.h>
main()
{
char ch;
ch = getche();
printf("Input Char Is :%c",ch);
}
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- scd
- Stály člen
- Príspevky: 150
- Dátum registrácie: 17 Apr 2009, 00:00
- Bydlisko: Dubnica nad Váhom
- Vek: 35
Re: Priklady C - pre zaciatocnikov
asi pozivas linux a getch nieje standard, tak asi nieje obsiahnuta v tvojich knizniciach.
Funkcie si asi este neprebral al ak hej, tak si ju skus naimplementovat sam, toto by ti mohlo fungovat:
ak nie tak sa na to vykasli, pouzi standardny getchar() a potvrdzuj to entrom, aj tak tu funkciu asi velmi nevyuzijes v buducnosti.
Funkcie si asi este neprebral al ak hej, tak si ju skus naimplementovat sam, toto by ti mohlo fungovat:
Kód: Vybrať všetko
#include <stdio.h>
#include <unistd.h>
#include <termios.h>
int getch ( void ) {
int ch;
struct termios origterm, tmpterm;
tcgetattr ( STDIN_FILENO, &origterm );
tmpterm = origterm;
tmpterm.c_lflag &= ~( ICANON | ECHO );
tcsetattr ( STDIN_FILENO, TCSANOW, &tmpterm );
ch = getchar();
tcsetattr ( STDIN_FILENO, TCSANOW, &origterm );
return ch;
}
0
Keyboard not present. Press ENTER to continue...
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
no jo no, mam ubuntu, vyskusam to na win...
zatial vdaka
edit: skusal som to vo W7 > code::blocks vsetko chodi jak ma
hadam sa to da rozchodit aj v Linuxe pod code::blocks
getch() a getche() su udajne nejake prastare, DOSovske volania tak preto to nefunguje
po doinstalovani nejakych (?) kniznic to hadam rozchodim
zatial vdaka
edit: skusal som to vo W7 > code::blocks vsetko chodi jak ma
hadam sa to da rozchodit aj v Linuxe pod code::blocks
getch() a getche() su udajne nejake prastare, DOSovske volania tak preto to nefunguje
po doinstalovani nejakych (?) kniznic to hadam rozchodim
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
tak som si zas nasiel trochu casu
bola to dost fuska ale konecne mi to funguje
dlho som na to nemohol prist, stale to ratalo nejake tycoviny az ked som "vynuloval" premennu int i=0;
isiel som nato podla rady od csd, vychadzal som z tohoto prikladu
daval som tam stale ==, ale potom som to odkukal z toho prikladu a zacalo to fungovat
PS: ta logika mi dava zabrat idem si to este postudovat....
bola to dost fuska ale konecne mi to funguje
Kód: Vybrať všetko
#include <stdio.h>
main()
{
char c;
int i=0;
printf("napis nieco a nakoniec stlac znak ''x'' \n");
do
{
c = getche();
if (c == 'a')
i++;
}
while (c != 'x');
{
printf("\n\n");
printf("\nacko bolo stlacene %d krat :-)\n",i);
printf("\n\n");
}
return 0;
}
isiel som nato podla rady od csd, vychadzal som z tohoto prikladu
co ale nechapem je ten negativny operator v podmienke while (c != 'x');Kód: Vybrať všetko
char pis; printf("Napis A!\n"); do { pis = getchar(); if (pis != 'A') printf("Hovoril som A!!! Takze znovu: Napis A!\n"); } while (pis != 'A'); printf("Hura, naozaj je to A!\n");
daval som tam stale ==, ale potom som to odkukal z toho prikladu a zacalo to fungovat
PS: ta logika mi dava zabrat idem si to este postudovat....
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
-
- Ultimate člen
- Príspevky: 2328
- Dátum registrácie: 25 Jún 2013, 21:06
- Bydlisko: Krajné
- Vek: 57
- Kontaktovať používateľa:
Re: Priklady C - pre zaciatocnikov
Cyklus sa opakuje dovtedy dokiaľ je podmienka pravdivá.
je nepravdivá pre všetky znaky okrem x takže cyklus skončí na akékoľvek písmeno okrem x. Keby si stláčal x tak by sa pri tejto podmienke neukončil. Preto je použitá opačná podmienka nerovná sa.
Ďalej si objavil že lokálne premenné nie sú inicializované na žiadnu hodnotu a ich obsah je náhodný. Dokonca aj keď by si nejakú funkciu volal viackrát tak tá hodnota nemusí byť rovnaká.
Fungovanie terminálu je to dlhšia pesnička. Skús si prečítať rozdiel medzi kanonickým a nekanonickým módom. Ale ako písali predo mnou zatiaľ to nerieš.
Kód: Vybrať všetko
c =='x'
Ďalej si objavil že lokálne premenné nie sú inicializované na žiadnu hodnotu a ich obsah je náhodný. Dokonca aj keď by si nejakú funkciu volal viackrát tak tá hodnota nemusí byť rovnaká.
Fungovanie terminálu je to dlhšia pesnička. Skús si prečítať rozdiel medzi kanonickým a nekanonickým módom. Ale ako písali predo mnou zatiaľ to nerieš.
0
Ukáž múdremu chybu a on sa ti poďakuje. Ukáž chybu hlupákovi a on sa urazí.
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
neviem ci sme sa rozumeli
myslel som riadok c.15 - while (c != 'x');
prelozim to do slovenciny ze ci to spravne chapem:
---------------------------------------------------------------
vyzva "napis niecoo...
(do) vykonaj co je v kuceravych zatvorkach,
{
do premennej c nacitaj znak
(if) ak je to 'a'
inkrementuj premennu i
}
toto rob az dovtedy, (while) kym je pravda co je vzatvorke, cize premenna c nerovna sa 'x'
v opacnom pripade
{vytlac vysledok i }
az teraz ked som to prepisoval com si uvedomil ze je to spravne
myslel som riadok c.15 - while (c != 'x');
prelozim to do slovenciny ze ci to spravne chapem:
---------------------------------------------------------------
vyzva "napis niecoo...
(do) vykonaj co je v kuceravych zatvorkach,
{
do premennej c nacitaj znak
(if) ak je to 'a'
inkrementuj premennu i
}
toto rob az dovtedy, (while) kym je pravda co je vzatvorke, cize premenna c nerovna sa 'x'
v opacnom pripade
{vytlac vysledok i }
az teraz ked som to prepisoval com si uvedomil ze je to spravne
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
jo
ked clovek ziska nejake navyky, uz to ide lahsie a tak nejak automaticky, pre ludi co uz programuju napr. 5 rokov to moze byt smiesne co tu riesim
dalsia lekcia:
ked clovek ziska nejake navyky, uz to ide lahsie a tak nejak automaticky, pre ludi co uz programuju napr. 5 rokov to moze byt smiesne co tu riesim
dalsia lekcia:
Napíšte program, ktorý načíta znak z klávesnice.
Ak tento znak nie je písmeno, tak ho vypíše,
ak je to malé písmeno, vypíše k nemu zodpovedajúce veľké písmeno
a ak je to veľké písmeno, vypíše k nemu zodpovedajúce malé písmeno.
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: Priklady C - pre zaciatocnikov
Skús si najprv predchádzajúci program prerobiť tak, že miesto 'x' dáš 120 a miesto 'a' dáš 97. Skús či funguje. Potom si pozri túto tabuľku, a nájdi tam prečo to funguje. A potom sa pozri na nové zadanie.
getchar() pracuje s premennymi typu int a nie char, takze pri deklarácii premenných napíš int c; Teraz Ti to nevadí, ale pri spracovaní súborov by mohlo... tak aby si si na to zvykol.
getchar() pracuje s premennymi typu int a nie char, takze pri deklarácii premenných napíš int c; Teraz Ti to nevadí, ale pri spracovaní súborov by mohlo... tak aby si si na to zvykol.
0
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
maka to spravne,
je mi to jasne ze kazdy znak ma nejake cislo (v desiatkovej a sesnastkovej sustave) a=97, x=120 ....
napisal som si program co vypisuje decim. cislo ku kazdemu znaku a ked zmackes enter (13) tak skonci
docital som sa ze float uklada desatinne cislo, int uklada cele cisla a char jednotlive znaky
tak nechapem ze preco int ked idem pracovat so znakmi...
-- Spojený príspevok 29 Apr 2016, 22:33 --
podmienka pre dalsiu ulohu, pre male pismena by mohla vyzerat takto nejak:
alebo
ch je premenna
je mi to jasne ze kazdy znak ma nejake cislo (v desiatkovej a sesnastkovej sustave) a=97, x=120 ....
napisal som si program co vypisuje decim. cislo ku kazdemu znaku a ked zmackes enter (13) tak skonci
docital som sa ze float uklada desatinne cislo, int uklada cele cisla a char jednotlive znaky
tak nechapem ze preco int ked idem pracovat so znakmi...
-- Spojený príspevok 29 Apr 2016, 22:33 --
podmienka pre dalsiu ulohu, pre male pismena by mohla vyzerat takto nejak:
Kód: Vybrať všetko
(ch >= 'A' && ch <= 'Z')
alebo
Kód: Vybrať všetko
(ch >= 65 && ch <= 90)
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: Priklady C - pre zaciatocnikov
Pretože funkcia getchar pracuje s premennými typu int, proste tak je definovaná. Char je tiež len celočíselný typ, ale nadobúda hodnoty od 0..255. Znak konca súboru (teda nie je to znak, ale neviem ako to nazvať... príznak), má int hodnotu -1. To je už mimo char
-- Spojený príspevok 29 Apr 2016, 22:45 --
c -= ' ' Ti z veľkého písmena spraví malé. (v úvodzovkách je medzera ASCII 32 )
edit: char += ' ';
a ešte doplním... kvôli prehľadnosti je možno fajn napísať c -= ('a'-'A') pre premenu z malých na veľké a c -= ('A'-'a') veľkých na malé.
-- Spojený príspevok 29 Apr 2016, 22:45 --
výraz bude pravda, keď budú písmená veľké. Tou tabuľkou som Ti chcel naznačiť, že aj písmená môžeš sčitovať a odčitovať.Loloone napísal: podmienka pre dalsiu ulohu, pre male pismena by mohla vyzerat takto nejak:Kód: Vybrať všetko
(ch >= 'A' && ch <= 'Z')
aleboch je premennaKód: Vybrať všetko
(ch >= 65 && ch <= 90)
edit: char += ' ';
a ešte doplním... kvôli prehľadnosti je možno fajn napísať c -= ('a'-'A') pre premenu z malých na veľké a c -= ('A'-'a') veľkých na malé.
0
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
to ma presne napadlo ze budem musiet odcitavat a pricitavat
tu je ten kod co vypisuje ASCII
edit: opravil som tu deklaraciu int a rozsiril, teraz vypisuje aj dec aj hex cislo
a presne jak si vravel, niektore znaky hadzu zaporne cisla
ked zmenim deklaraciu char na int je to v poriadku
ak to nieje tajne, ako dlho programujes?
tu je ten kod co vypisuje ASCII
edit: opravil som tu deklaraciu int a rozsiril, teraz vypisuje aj dec aj hex cislo
Kód: Vybrať všetko
#include <stdio.h>
main()
{
int c;
do
{
c = getche();
{
printf(" %d dec. %X hex.\n",c,c);
}
}
while (c != 13);
printf("\nadios :-)\n");
return 0;
}
ked zmenim deklaraciu char na int je to v poriadku
ak to nieje tajne, ako dlho programujes?
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: Priklady C - pre zaciatocnikov
Tajomstvo to nieje Ale programátor nie som. Len taký kutil. Prvý program sme s bratrancom naťukali na Didaktik kompakt v Basic-u pred vyše 20 rokmi
0
- Loloone
- Zaslúžilý člen
- Príspevky: 1369
- Dátum registrácie: 29 Aug 2010, 00:00
- Bydlisko: the Sered DC
- Vek: 51
Re: Priklady C - pre zaciatocnikov
tak fajn v sestdesiatke mozno budem vediet slusne programovat ja sa chcem naucit Cecko hlavne kvoli mikroprocesorom...
teraz na to min. dva dni nesiahnem a v pondelok mozem zacat od znova
inak ak by niekto mal nejaky kurz "C pre AVR" aj s prikladmi, vhodne pre zaciatocnika, ocenim (nieco pre atmega alebo attiny... mam aj nejake PICka), mam e-knihu od Zawina tu na fore ju chvalia neviem ale ci je uplne pre zaciatocnika ako ja
teraz na to min. dva dni nesiahnem a v pondelok mozem zacat od znova
inak ak by niekto mal nejaky kurz "C pre AVR" aj s prikladmi, vhodne pre zaciatocnika, ocenim (nieco pre atmega alebo attiny... mam aj nejake PICka), mam e-knihu od Zawina tu na fore ju chvalia neviem ale ci je uplne pre zaciatocnika ako ja
0
"sukani je pro decka ...chlapi si vypijou"
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
DPS pre stavbu programatora - UsbPicProg alebo AVR-USBasp
Re: Priklady C - pre zaciatocnikov
Jde to i jinak -naučit se Pascal a přejít na C (C++).Ono je to o syntaxi a v C je to trochu i jinak.Z Pascalu na C se jednodušeji přechází.
Pokud si někdo vystačí s PIC (případně koupí licenci pro AVR ap.),může u Pascalu zůstat.
Pokud si někdo vystačí s PIC (případně koupí licenci pro AVR ap.),může u Pascalu zůstat.
0
- scd
- Stály člen
- Príspevky: 150
- Dátum registrácie: 17 Apr 2009, 00:00
- Bydlisko: Dubnica nad Váhom
- Vek: 35
Re: Priklady C - pre zaciatocnikov
Ak to učenie myslíš vážne tak by som ti odporučil takýto postup:
1-Nájdi si na nete nejaký dobrý tutoriál (C v konzole) cez ktorý sa budeš snažiť prelúskať + oplatí sa nejaká knižka, ktorá ti môže byť dobrým poradcom (Pavel Herout)
2-pokús sa spraviť nejaký vlastný jednoduchý projekt, na ktorom sa budeš vlastne učiť a keď sa ti ho podarí dokončiť, tak ťa to povzbudí
3-opakuj krok 2, opakuj krok 2... musíš si proste vysedieť mozole na zadku
4-odporúčam knižku resp. seriál C++ pod lupou (cca do prvej polovice je to rovnaké pre C aj C++) Je to asi zo začiatku ťažšie čítanie pretože sa tam ide úplne do podrobnosti. Ale stačí si to viac krát celé prečítať a začne ti to všetko do seba zapadať. Nájdeš tam odpoveď asi na akúkoľvek maličkosť a nezrovnalosť ktorú potrebuješ vysvetliť.
5-začni za pomoci knižky od Zawina programovať AVR a už ti to zaručene nebude robiť problémy pochopiť.
Ak to vážne nemyslíš a chceš len niečo rýchlo naprogramovať, tak sa pusti rovno do Arduina a čosi už pozliepaš, aj keď tomu nebudeš dokonale rozumieť. Ale odporúčam prvý zdĺhavý postup, lebo ak sa raz naučíš C, tak napríklad aj iný jazyk sa zmákneš naučiť behom chvíľky.
1-Nájdi si na nete nejaký dobrý tutoriál (C v konzole) cez ktorý sa budeš snažiť prelúskať + oplatí sa nejaká knižka, ktorá ti môže byť dobrým poradcom (Pavel Herout)
2-pokús sa spraviť nejaký vlastný jednoduchý projekt, na ktorom sa budeš vlastne učiť a keď sa ti ho podarí dokončiť, tak ťa to povzbudí
3-opakuj krok 2, opakuj krok 2... musíš si proste vysedieť mozole na zadku
4-odporúčam knižku resp. seriál C++ pod lupou (cca do prvej polovice je to rovnaké pre C aj C++) Je to asi zo začiatku ťažšie čítanie pretože sa tam ide úplne do podrobnosti. Ale stačí si to viac krát celé prečítať a začne ti to všetko do seba zapadať. Nájdeš tam odpoveď asi na akúkoľvek maličkosť a nezrovnalosť ktorú potrebuješ vysvetliť.
5-začni za pomoci knižky od Zawina programovať AVR a už ti to zaručene nebude robiť problémy pochopiť.
Ak to vážne nemyslíš a chceš len niečo rýchlo naprogramovať, tak sa pusti rovno do Arduina a čosi už pozliepaš, aj keď tomu nebudeš dokonale rozumieť. Ale odporúčam prvý zdĺhavý postup, lebo ak sa raz naučíš C, tak napríklad aj iný jazyk sa zmákneš naučiť behom chvíľky.
0
Keyboard not present. Press ENTER to continue...
- lh
- Pokročilý člen
- Príspevky: 715
- Dátum registrácie: 23 Mar 2013, 14:02
- Bydlisko: z južnej strany Poľany
- Vek: 46
Re: Priklady C - pre zaciatocnikov
Úplne súhlasím s scd. Vlastný projekt a mozole na zadku a mozgu by som podčiarkol
k Pascalu: Do toho by som sa nepúšťal, má inú syntax, a zbytočne by ťa to mýlilo. Dobre si pamätám, keď som začal s PHP(bližšie k C), a predtým som robil s Delphi (pascal) tak ma to stálo veľa zbytočných chýb a času.
k Pascalu: Do toho by som sa nepúšťal, má inú syntax, a zbytočne by ťa to mýlilo. Dobre si pamätám, keď som začal s PHP(bližšie k C), a predtým som robil s Delphi (pascal) tak ma to stálo veľa zbytočných chýb a času.
0
-
- Podobné témy
- Odpovedí
- Zobrazení
- Posledný príspevok
-
- 14 Odpovedí
- 5109 Zobrazení
-
Posledný príspevok od používateľa Mishung
-
- 2 Odpovedí
- 2026 Zobrazení
-
Posledný príspevok od používateľa om0aao
-
- 94 Odpovedí
- 11100 Zobrazení
-
Posledný príspevok od používateľa 03601
-
- 2 Odpovedí
- 2442 Zobrazení
-
Posledný príspevok od používateľa yuslav
-
- 3 Odpovedí
- 1317 Zobrazení
-
Posledný príspevok od používateľa Ďuri12