Hogyan értelmezzem ezt a c++ programot? (Nagyon kezdő)
Sajnos ebből szinte semmit sem értek. A könyv magyarázata nem sokat mond. Csak mégjobban összezavar... pl: ezzel a float-al most találkoztam először. Nem is írt róla a könyv semmit...
Remélem tudtok segíteni.
#include <iostream>
float Convert(float);
int main()
{
float TempFer;
float TempCel;
std::cout << "ird be a szamot fahrenheit-ben";
std::cin >> TempFer;
TempCel = Convert(TempFer);
std::cout << "itt van a szam Celsius-ban";
std::cout << TempCel;
return 0;
}
float Convert(float Fer)
{
float Cel;
Cel = ((Fer - 32) * 5) / 9 ;
return Cel;
}
Én is ebből a könyvből tanulok és írt róla a könyv de úgy tűnik hogy te nem figyelsz oda eléggé és át ugrasz bizonyos részeket.
A float olyan típus ami lebegőpontos értékeket tárol.
2.2,1.1,0.458 stb ezek a valós számok.
És mi az hogy semmit nem értesz bele.
Az butaság hogy semmit nem értesz írd le meik sor az amelyik nem tiszta.
#include <iostream>
float Convert(float); - Convert(float) ez mi?
int main()
{
float TempFer;
float TempCel;
std::cout << "ird be a szamot fahrenheit-ben";
std::cin >> TempFer;
TempCel = Convert(TempFer); - Itt mi történik?
std::cout << "itt van a szam Celsius-ban";
std::cout << TempCel;
return 0;
}
float Convert(float Fer) Ez miért?
{
float Cel;
Cel = ((Fer - 32) * 5) / 9 ;
return Cel; - Itt miért return cel?
}
Ezeket nem tudom. A többi rész nagyrészt tiszta.
Elölről kezd azt a könyvet mert nagyon nem maradtak meg benned az előző órák anyagai.
Figyelj ha programozni akarsz akkor azt a könyvet a lehető legprofibban kell vágnod.Egy anyag minden egyes szavát,mondatát példáit értened kell addig ne vegyél benne új anyagot.
A kód értelmezése:
A könyv írója ezen e példán be szeretné mutatni, hogy a függvényeket a main() ELŐTT kell megírni. Erre háromféleképpen van lehetőség: magát a függvényt a program elé tenni; külső headerben megírni, és be #include-olni; prototípust írni.
Az író itt a prototípust mutatja be. Ezzel megmondod a fordítónak, hogy van ott egy függvény, amit a kódban később szeretnél megírni.
// A kód soronként:
#include <iostream> // Alapvető ki/bemeneti függvények, képernyőre és fájlba írás engedélyezése.
float Convert(float); // A függvény prototípusa. Deklarál, de NEM DEFINIÁL egy Convert nevű, egy darab érték szerint átvett float paraméterrel rendelkező, érték szerint átadott float visszatérési értékű függvényt. Itt még nem kell megadni a bemeneti változók nevét, csak a típusát.
int main() // És NEM void! :)
{
float TempFer;
float TempCel; // 2 db float változó felvétele
std::cout << "ird be a szamot fahrenheit-ben"; // Kiíratás
std::cin >> TempFer; // Bekérés a billentyűzetről
TempCel = Convert(TempFer); // Meghívja a convert fv.-t az előbb felvett paraméterrel. A visszatérési értékét a TempCel-ben tárolja. Itt fordítási hiba NEM keletkezik, mert a függvény már deklarálva lett az elején, attól függetlenül hogy csak hívás után lesz definiálva.
std::cout << "itt van a szam Celsius-ban";
std::cout << TempCel;
return 0; // Mivel a main függvénynek int a visszatérési értéke, ezért azt be kell állítani! Szabvány szerint 0-val a hibátlan futást jelezzük.
}
float Convert(float Fer) // Definiálja a program elején megadott függvényt. Itt már a bemeneti változó nevére is szükség van.
// Lehetséges whitespace-t rakni fv. elé is.
{
float Cel; // Deklarálja a cel változót a függvényen belül. A függvény futása után ehhez nem fér hozzá senki. Ha előtte tanultál C-t, akkor tudod, hogyha malloc/calloc hívás, illetve konstruktor hívás történt, akkor meg kell hívni a free-t, vagy a destruktort, különben elveszik a memória.
Cel = ((Fer - 32) * 5) / 9 ; // Kiszámolja a celsius értéket Fahrenheit-ből.
return Cel; // Visszatér, visszaadva a celsius értéket.
}
Ehhez szólnék csak hozzá:
"return 0; // Mivel a main függvénynek int a visszatérési értéke, ezért azt be kell állítani! Szabvány szerint 0-val a hibátlan futást jelezzük."
Ezt épp nem kell beállítani, szabvány szerint, ellenben a szabvány SEMMIT nem mond arról, hogy mi a hibátlan futás. Az környezetfüggő, általában 0.
És még annyit:
"2.2,1.1,0.458 stb ezek a valós számok."
A 1, 2 is valós számok. A lényeg az, hogy a lebegőpontos számokkal TÖRTszámokat is tudunk ábrázolni, szemben az egészekkel (azokkal is, de ebbe ne menjünk bele). Tehát a racionális számok egy olyan részhalmazát ábrázolják a lebegőpontosak, ami nem részhalmaza az egész számoknak.
Köszönöm a válaszokat, még egy kérdés maradt. A Cel érték amit kíír de std::cout << TempCel; van a programban. Ezt valaki megmondaná hogy miért?
Egyébként, elkezdem elölről a könyvet... :)
A cel a Convert-ben lévő belső változó. Ennek az értékét visszatéréskor áttölti a TempCel-be, ami a main függvény változója. A main fv.-ből csak a TempCel-t tudod elérni a Cel-t nem, és fordítva.
iostream: bocsi a félreírásért, nekem úgy tanították, hogy int main() return 0. visual studio és gcc/MinGW is bármilyen 0-tól különböző értéket hibának vél, ezért gondoltam, hogy ez szabvány lehet. Ha a return elmarad, akkor a program meghatározatlan értékkel fog visszatérni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!