Programovací jazyk "C".
Moderátor: Moderátoři
- flyingbird
- Příspěvky: 59
- Registrován: 09 říj 2008, 00:00
- Bydliště: ValMez
- Kontaktovat uživatele:
#include <stdio.h> // pro funkcnost printf(), prip. scanf()
#include <stdlib.h> // pro funkcnost srand() a rand()
#include <time.h> // pro funkcnost time()
int
main ()
{
int c;
printf ("Hazim kostkou...\n\n");
srand (time (NULL));
c = rand () % 6 + 1;
printf (c);
switch (c)
{
case 1:
printf ("Padla jednicka\n");
break;
case 2:
printf ("padla dvojka\n");
break;
case 3:
printf ("padla trojka\n");
break;
case 4:
printf ("padla ctyrka\n");
break;
case 5:
printf ("padla petka\n");
break;
case 6:
printf ("padla sestka\n");
break;
}
return 0;
}
printf("%d",c);
Alebo môžeš použiť jednoduchšiu funkciu
putc(c);
Každopádne si vyhľadaj použitie funkcie printf a putc. Nejdem tu kopírovať knihy alebo internety.
Priznám sa však, že ešte stále neviem, ako môže mať funkcia printf ľubovoľný počet parametrov. Raz si na to možno nájdem čas a zistím si, jak to nakódili.
samec píše:Zjednodušene, percento označuje miesto v reťazci, kam sa vloží hodnota z premennej, ktorá je za čiarkou ako ďalší parameter funkcie printf. Percent v reťazci a premenných odelených čiarkami môže byť viac. Za percentom následuje znak, ktorý definuje tvar, v ktorom sa hodnota vypíše. Napríklad d je celočíselný dekadický tvar, f je float alebo desatinný tvar, e- je exponenciálny tvar, s je reťazec, c je jeden znak, h je hexadecimálny tvar a ešte nejaké ďalšie... Potom ešte môže následovať číslo označujúce počet platných miest a za bodkou počet desatinných miest... V reťazci môžu byť aj špeciálne znaky napríklad \n je nový riadok, \t je tabelátor, \b je backspace... Áno, funkcia printf je takto zložitá, ale aj veľmi užitočná. Nuž ale už kto by si to všetko pamätal. Stačí vedieť, kde to nájsť. A na to sú internety.
man 3 printf
Priznám sa však, že ešte stále neviem, ako môže mať funkcia printf ľubovoľný počet parametrov. Raz si na to možno nájdem čas a zistím si, jak to nakódili.
man 3 va_start
putc(c); je blbost, to by vytisklo cislo jako znak s odpovidajicim ascii kodem, takze pro 1-6 bys toho na obrazovce moc nevidel. Kdyz uz tak putc(c+'0'); bude fungovat aspon pro cisla 0-9
Jinak s printf sem mel pri prechodu z Pascalu taky velke problemy a presne sem mel tyhle remcy, na co nejaka % atd., a ted sem za mocny printf rad...
Řešili jsme s vnukem toto zadání:
"Vytvořte jednoduchou kalkulačku s operacemi sčítání, odčítání, násobení a dělení. Načtěte dvě čísla x1 a x2 a zadejte aritmetickou operaci. Podle zadaného znaku aritmetické operace (+, -, *, /) program vypočítá a vypíše výsledek."
Napsali jsme funkční řešení toho zadání, ale větvení podle znaků + - * / jsme nahradili tak, že se znaky zadají číslem "z", a podle něj se provede příslušná operace.
Jak se přečte zadání znaku + - * / na klávesnici podle znaku jak se zadá ten SWITCH?
Tady je naše řešení:
#include <stdio.h>
int main()
{
int x1,x2,z;
printf ("zadej cislo x1 \n");
scanf ("%d\n", &x1);
printf ("zadej cislo x2 \n");
scanf ("%d\n", &x2);
printf ("zadej znamenko 1=+ 2=- 3=* 4=/\n");
scanf ("%d\n", &z);
if (z > 4)
printf("Neplatne znamenko");
if (z < 1)
printf("Neplatne znamenko");
switch (z)
{
case 1:
printf ("vysledek x1 + x2 je: %d\n ", x1 + x2);
break;
case 2:
printf ("vysledek x1 - x2 je: %d\n ", x1 - x2);
break;
case 3:
printf ("vysledek x1 * x2 je: %d\n ", x1 * x2);
break;
case 4:
printf ("vysledek x1 / x2 je: %d\n ", x1 / x2);
break;
}
return 0;
}
- flyingbird
- Příspěvky: 59
- Registrován: 09 říj 2008, 00:00
- Bydliště: ValMez
- Kontaktovat uživatele:
Dík za odkaz. Je tam vše potřebné, co jsem potřeboval. Některé příkazy jsem mechanicky opsal a funují. Nedokáži je však rozklíčovat, co znamenají jednotlivá "písmenka" v příkazu. V té učebnici od Kremlina v EN se nedokáži orientovat při nahodilém hledání, muselo by se to studovat systematicky stránku po stránce. Např. co mi říkají znaky "%.1lf + %.1lf = %.2lf" v tomto řádku programu pro kakulačku (x1 a x2 jsou proměnné):
case 1:
printf ("%.1lf + %.1lf = %.2lf", x1, x2, x1 + x2);
break;
Při proměnných X1=8.546 a x2=8.352 "printf" napíše 8.5 + 7.4
= 15.90 .
Ta čísla znamenají počet desetinných míst, ale nechápu, jak a proč celý tento řádek vytvoří 8.5 + 7.4 = 15.90 .
koukni sem https://www.sallyx.org/sally/c/c07.php
Dík, to je výborný popis.
Šíleně mi jde na nervy ta učitelka programování mého vnuka. Nutí studenty psát cvičné programy v C zcela zpaměti, klasické šprtání. Lituji vnuka, že má rozumět syntaxi a konstrukcí programu a ještě mít v hlavě ty parametry příkazů a instrukcí. Psával jsem programy v Basic a pro Excel ve VBA, a vždy jsem u toho opisoval sám od sebe co jsem napsal dříve, nebo z příruček a také podle vzorů jak co napsali jiní. Programy jsem si vytvářel jako potřebu pro vlastní technickou činnost, nejsem Ajťák.
Ne každý student bude pracovat jako programátor. Pro studenty není potřeba vše našprtat, ale měli by se v tom orientovat a vědět kde co najít a použít.
O moderní výuce jako tvůrčí činnosti se hodně mluví, ale skutek utek. Pořád vede to šprtání.