3. lekce - PRÁCE S ČÍSELNÝMI HODNOTAMI
Příklad 3.1. Sestavme program pro přečtení dvou hodnot ze standardního vstupního zařízení a jejich přiřazení proměnným x a i.
První řádek programu je příkazem pro tzv. předpřekladač, který před překladem programu v tomto případě zajistí, aby byl zahrnut (anglický termín include) tzv. hlavičkový soubor iostream.h, který v jazyku C++ (obvykle) umožňuje proudové funkce pro vstup a výstup používat.
Řešení:
1. varianta:
/*------------------------------------------------*/
#include <iostream.h>
main()
{
float x; // Definice realne promenne x
int i; // Definice celociselne promenne i
cout << "Cti x, i\n";
// Cteni hodnoty a x a i (zleva doprava)
cin >> x >> i;
// Tisk hodnoty promenne x a i (zleva doprava)
cout << "\nx = " << x << " i = " << i << '\n';
}
/*------------------------------------------------*/
V zápisu se objevuje příkaz cin. Je to obdoba cout, avšak vykonává úkol úplně opačný, posílá řetězec nebo číslo, které napíšete, do proměnné stojící hned za dvojicí šipek. Podmínkou pro správnou funkci příkazu cin je užití knihovny iostream.h.
Tento program mně hlásí po kompilaci několik (3) chyb, avšak je funkční.
- varianta:
/*------------------------------------------------*/
#include <stdio.h>
main()
{
float x;int i;
printf("Cti x, i\n");
// Ctení hodnoty x a i
scanf("%f %d",&x,&i);
// Tisk hodnoty x a i
printf("x = %f i = %d \n",x,i);
}
/*------------------------------------------------*/
Tento program opět proběhne velmi rychle.
Zde je nová funkce scanf, která zajišťuje vstup hodnot, zdánlivě složitějším způsobem než cin. Právě tak jako funkce printf využívá tzv. formátu. Zde konverze f zajistí vstup reálné hodnoty a konverze i zajistí vstup celočíselné hodnoty. U proměnných x a i je povinný symbol &. Pamatujme si prozatím, že tento znak ve funkci scanf musí být u jednoduchých proměnných a indexovaných proměnných. Vysvětlení bude možné, až se naučíme pracovat s ukazateli.
Pro správnou funkci příkazu scanf je nutné užití knihovny stdio.h.
Příklad 3.2. A nakonec jeden program bezproblémový. Po zadání dvou rozměrů obdélníku nám spočítá jeho obsah.
/*------------------------------------------------*/
#include <stdio.h>
#include <conio.h>
/*knihovna conio.h je třeba pro použití příkazu getch();, který způsobí zastavení programu*/
int main(void){
float sirka=0, delka=0;
printf("Program na výpoèet obsahu obdélníka");
printf("\n Zadej šíøku obdélníka v cm: ");
scanf("%f",&sirka);
printf("\n Zadej délku obdélníka v cm: ");
scanf("%f",&delka);
printf("\n Obsah obdelnika je %.2f cm2.",sirka*delka);
getch();
// pockame na shlednuti vysledku
return 0;
}
/*------------------------------------------------*/
Možnosti definice číselných proměnných:
a) nejběžnější
Definice | Rozsah | Kolik zaberou místa v paměti |
int i; | celočíselná proměnná i (−2 147 483 648 až 2 147 483 647) | 4 bajty |
float x; | reálná proměnná x (1,2 × 10−38 až 3,4 × 1038) | 4 bajty |
char h; | 256 znakových hodnot | 1 bajt |
b) další
Definice
| Rozsah | Kolik zaberou místa v paměti |
unsigned short int a; | 0 až 65 535 | 2 bajty |
short int b; | −31 768 až 32 767 | 2 bajty |
unsigned long int c; | 0 až 4 294 967 295 | 4 bajty |
long int j; | −2 147 483 648 až 2 147 483 647 | 4 bajty |
unsigned int a; | 0 až 4 294 967 295 | 4 bajty |
double b; | 2,2 × 10−308 až 1,8 × 10308 | 8 bajtů |
bool a; | true nebo false (pravda / nepravda) | 1 bajt |
Typ proměnné by se měl volit podle použití a tak, aby zabíral co nejméně místa v paměti.