NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.
IT rekvalifikace s podporou uplatnění. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Avatar
pcrewik
Člen
Avatar
pcrewik:24.5.2012 21:57

Nazdar, neviete mi niekto pls. vysvetliť trochu z funkcii? Na nete som nasiel takuto funkciu, s ktorou som sa trocha hral, no nechápem ako pocitac vie ktoru premennu mam na mysli, keď raz je nazvaná a,b a potom i,j ?

 #include <stdio.h>
#include <stdlib.h>
int nacitaj(int *a, int *b)
{
printf("\nzadaj dve cele cisla:");
return scanf("%d %d", a, b);
}



float daj_podiel(int i, int j)
{
return((float) i / (float) j);
}


int main()
{
int i, j;
if (nacitaj(&i, &j) );
printf("podiel je : %f\n", daj_podiel(i, j));


system("PAUSE");
return 0;

} /* main */

predem ďakujem, láme mi to hlavu 8|

 
Odpovědět
24.5.2012 21:57
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na pcrewik
David Jančík:24.5.2012 22:15

Ahoj,
jazyk C nepoužívej. Co se fcí týče: a,b,c,i,j jsou parametry daných fcí. Chceš fci na podíl:

float daj_podiel(int i, int j)// vyžádá si dvě celočíselné hodnoty
{
return((float) i / (float) j);// přetypuje na float (aby tam byla desetinná čárka) a vrátí podíl těchto čísel
}

Ale nedělej v C je to nízkoúrovňový jazyk - nemá objekty, v kódu co jsi poslal jsou dokonce pointery :X
Mrkni na tutoriály k C#, na kterých se v současné době tvrdě pracuje rovněž tak na Javě. Viz příslušené sekce.

Nahoru Odpovědět
24.5.2012 22:15
Zapomeň, že je to nemožné a udělej to ;)
Avatar
matesax
Tvůrce
Avatar
Odpovídá na David Jančík
matesax:25.5.2012 5:59

Nemůžu říci, že jsem do této problematiky plně zasvěcen, ale bratr ano a tvrdí, že některé jazyky, které tu někteří pohřbývají se stále pužívají. Tedy - Může se vrhnout i na Ruby. Stejně tak na Objektového Pascala - Delphi. Zrovna u nás ve městě je velká firma pro webový desing a informační technologie - dělají v Delphi,...

 
Nahoru Odpovědět
25.5.2012 5:59
Avatar
Odpovídá na matesax
Drahomír Hanák:25.5.2012 7:51

Ty jazyky tu nikdo nepohřbívá, jen se zdůrazňuje, že nemá cenu se zbytečně učit nízkoúrovňový jazyk, když zrovna neprogramuješ operační systém nebo nějaký 3D engine pro hru, kde potřebuješ velmi vysoký výkon. Vysvětlení najdeš třeba v tomto článku: http://www.itnetwork.cz/index.php?… a říká se to tu pořád dokola. Jazyky jako již zmíněný C# nebo Java jsou pro klasické aplikace nejlepší a můžu je doporučit. Nemusíš vůbec řešit něco jako pointery a spousta dalších úloh je vyřešená. Navíc jsou tyto jazyky plně objektově orientované. A například pro Windows phone už nemáš jinou volbu než C#. Pro android zas Java. Z těch nízkoúrovňových jazyků se třeba Céčko taky ještě používá, ale jen pro specifické případy. Osobně si ale nedokáži představit psát větší aplikaci v neobjektovém céčku.

 
Nahoru Odpovědět
25.5.2012 7:51
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:25.5.2012 7:56

Které máš na mysli? Rád ti vysvětlím, proč jsme který pohřbili.

C - Starý a nízkoúrovňový, používá se defakto již jen proto, že v něm je napsané jádro Linuxu. Ve Windows pro něj již dokonce prakticky neexistuje IDE.

Ruby - Velmi kvalitní jazyk, bohužel naprosto nerozšířený a bez zájmu. Navíc s ním nejde nic moc dělat kromě webů kvůli jeho povaze.

Delphi - Delphi bylo populární někdy před 20ti lety, Borland ho již odpískal, firmy si ho předávají jako horký brambor. Návrh jazyka je velmi zastaralý, komponenty obsahují ještě kód pro Windows 3.11. Samozřejmě, že jsou firmy, které v tom mají systém, nevyplatilo by se jim ho přepisovat. To však neznamená, že je ten jazyk kvalitní. V Delphi jsem dělal intenzivně asi 5 let a už se k nim nikdy nevrátím.

Nahoru Odpovědět
25.5.2012 7:56
New kid back on the block with a R.I.P
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na matesax
David Hartinger:25.5.2012 8:00

Navíc jak píše Drahoš nikdy jsme neřekli, že se nějaký jazyk již nepoužívá, pouze jsme ty nezajímavé dali stranou.

Nahoru Odpovědět
25.5.2012 8:00
New kid back on the block with a R.I.P
Avatar
pcrewik
Člen
Avatar
Odpovídá na David Jančík
pcrewik:25.5.2012 8:30

ok, ďakujem, no ja som začinal pôvodne v c++ (cin >> , cout << ...), potom som si ale uvedomil, že na maturite z informatiky asi buďem potrebovať klasicke c (printf,scanf ...). Ja som sa do programovania v c pustil kôli tomu, že na škole nas z tohto zatial nič neučia, tak v tom mam trochu stale zmätok.

Hlavne mi ide o to vedieť aké c-éčko sa používa na Vysokých školách? Napriklad na infromatike na MUNI -masarykova univerzita , viem že sa tam učí c-éčko a java, tak ak mi viete niekto poradiť bol by som rád.

 
Nahoru Odpovědět
25.5.2012 8:30
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na pcrewik
David Hartinger:25.5.2012 15:17

Buď učí to staré céčko ve kterém děláš (což je bohužel způsobené zastaráním našeho školství) nebo učí C#.

Nahoru Odpovědět
25.5.2012 15:17
New kid back on the block with a R.I.P
Avatar
pcrewik
Člen
Avatar
Odpovídá na pcrewik
pcrewik:25.5.2012 18:45

A viete mi poradiť prečo po tejto úprave to nejde?

 #include <stdio.h>
#include <stdlib.h>
int nacitaj(int i, int j)
{
printf("\nzadaj dve cele cisla:");
return scanf("%d %d", i, j);
}



float daj_podiel(int i, int j)
{
return((float) i / (float) j);
}


int main()
{
int i, j;
if (nacitaj(i, j) );
printf("podiel je : %f\n", daj_podiel(i, j));


system("PAUSE");
return 0;

} /* main */

v podstate som sa chcel zbaviť pointeru, nechapem prečo pri funkcii nacitaj maju byť použité pointery a pri funkcii daj_podiel nemusia byť použité pointery.

Da sa nejako zbaviť v tomto prípade tých pointerov?

 
Nahoru Odpovědět
25.5.2012 18:45
Avatar
Odpovídá na pcrewik
Drahomír Hanák:25.5.2012 19:01

scanf vrací, kolik bylo uložených dat do proměnných. V tomto případě vrátí 2.
Musíš buďto psát načítání proměnných pořád znovu nebo si je tou funkcí uložit do globálních proměnných.
Zápis if podmínky je úplně jiný. Je to

if (podmínka) {
  // podmínka splněna
} else if (podminka2) {
  // pokud neni splněna první, ověří druhou podmínku
} else {
  // jinak se zavolá else
}
 
Nahoru Odpovědět
25.5.2012 19:01
Avatar
pcrewik
Člen
Avatar
Odpovídá na Drahomír Hanák
pcrewik:25.5.2012 19:07

musim sa priznať, že teraz vôbec neviem o čom hovoriš

stále mám v tom dosť velky zmätok ;(

 
Nahoru Odpovědět
25.5.2012 19:07
Avatar
Odpovídá na pcrewik
Drahomír Hanák:25.5.2012 19:15

Tak tady to máš celé. Je to okomentované, tak to snad pochopíš.

#include <stdio.h>

int main()
{
  // Deklarujeme proměnné
  int i, j;
  // Vypíšeme zprávu
  printf("Zadej dve cela cisla: ");
  // Načteme proměnné
  scanf("%d %d", &i, &j);
  // Vypíšeme: % = výpis proměnné, .2 = počet desetinných míst, f = datový typ (float - desetinné číslo)
  printf("Podil je: %.2f", (float)i/(float)j);

  system("PAUSE");
  return 0;
}
 
Nahoru Odpovědět
25.5.2012 19:15
Avatar
Odpovídá na pcrewik
Drahomír Hanák:25.5.2012 19:25

Jo mimochodem, při scanf musíš před názvy proměnných psát & (ampercent). Vyjímky jsou textové řetězce. To je otázka pointerů, ale tím se zatím nezatěžuj. A možná by bylo dobré ty proměnné načítat rovnou jako float, aby se nemuseli převádět. Na ten podíl můžeš klidně použít tu tvou funkci "daj_podiel", ta je správně. Jen je to asi zbytečné. Jinak nepoužíváš v kódu nic z knihovny stdlib.h, tak jsem ji ani nezahrnul. Stačí jen stdio.h ;)

 
Nahoru Odpovědět
25.5.2012 19:25
Avatar
pcrewik
Člen
Avatar
Odpovídá na Drahomír Hanák
pcrewik:25.5.2012 19:27

Ok ďakujem

 
Nahoru Odpovědět
25.5.2012 19:27
Avatar
pcrewik
Člen
Avatar
Odpovídá na Drahomír Hanák
pcrewik:25.5.2012 19:47

No ja použivam devc++ a stdlib.h tu slúži pre system("PAUSE");

Ty v čom píšes/ kompiluješ?

 
Nahoru Odpovědět
25.5.2012 19:47
Avatar
Odpovídá na pcrewik
Drahomír Hanák:25.5.2012 19:53

Taky v DevC++ a vše mi funguje, jak má.

 
Nahoru Odpovědět
25.5.2012 19:53
Avatar
pcrewik
Člen
Avatar
pcrewik:25.5.2012 20:04

8| mne nie

citujem z : http://www.bloodshed.net/dev/faq.html

 How do I emulate the MS-DOS pause function?

#include <stdlib.h>

int main()
{
   system ("pause"); // execute M$-DOS' pause command
   return 0;
}
 
Nahoru Odpovědět
25.5.2012 20:04
Avatar
Don
Člen
Avatar
Odpovídá na pcrewik
Don:25.5.2012 21:53

Pokud mám správné informace tak se tam prochází více jazyků a každý ať si vybere. Je pravda že se tam ale preferuje hodně ze začátku C a poté Java. Toť to jsem pochytil od studenta 3ho ročníku

 
Nahoru Odpovědět
25.5.2012 21:53
Avatar
Don
Člen
Avatar
Odpovídá na pcrewik
Don:25.5.2012 21:56

system("pause") se používá na to aby se nezavřela hned konzole (jen by problikla). Proto se tam čeká na stisk nějakého talčítka. Na linuxu takového nic nemáme.

 
Nahoru Odpovědět
25.5.2012 21:56
Avatar
Odpovídá na Don
Neaktivní uživatel:25.5.2012 22:04

na linuxu to není, protože program spouštíš z terminalu a pak se zase vracis do terminalu.. kdybys to tak spustil ve windowsu, tak tam taky nemusis mit to pause :D

Nahoru Odpovědět
25.5.2012 22:04
Neaktivní uživatelský účet
Avatar
Don
Člen
Avatar
Don:25.5.2012 22:13

Ano je to tak. Chci ale říci že v knihovně vůbec system{"pause") néni

 
Nahoru Odpovědět
25.5.2012 22:13
Avatar
Odpovídá na Don
Neaktivní uživatel:25.5.2012 22:32

system ti zavola nejake funkce systemu... takze system("pause") ti ceka na klavesu.. schvalne si zkus zadat do prikazove rady jen pause.. bude to to same... :)

Nahoru Odpovědět
25.5.2012 22:32
Neaktivní uživatelský účet
Avatar
Don
Člen
Avatar
Odpovídá na Neaktivní uživatel
Don:25.5.2012 22:40

Nevím ale příkaz pause prostě termínal nezná.

 
Nahoru Odpovědět
25.5.2012 22:40
Avatar
David Jančík
Vlastník
Avatar
Odpovídá na Neaktivní uživatel
David Jančík:25.5.2012 22:57

system("pause"); a další příkazy volané touto fcí fungují pouze na Windows, protože používají fce z CMD. Proto pro multiplatformní využití tuto fci nepoužívej...

Nahoru Odpovědět
25.5.2012 22:57
Zapomeň, že je to nemožné a udělej to ;)
Avatar
Odpovídá na David Jančík
Neaktivní uživatel:26.5.2012 11:27

Souhlasím,seznam příkazů viz. tutoriály Batch http://www.itnetwork.cz/index.php?…
Mimochodem příkazy se mění podle systému,třeba ve Win XP HOME normálně používám třeba

sleep 10

a little_wolf si stěžoval že mu to ve win XP Prof nejede..

Nahoru Odpovědět
26.5.2012 11:27
Neaktivní uživatelský účet
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 25 zpráv z 25.