Uživatelský vstup
Uživatelský vstup, proč? No protože je na H, když bych chtěl počítat obsahy obdélníků a pořád dokola bych musel měnit hodnoty stran obdelníka přímo ve zdrojovém kódu.
Proto je tu libovka a jmenuje se vstup. Vstupem ze začátku budem myslet jen vstup z klávesnice, pak si můžu napsat kód, kde budu rovnou číst data z klávesnice a nebudu muset měnit hodnoty přímo v programu.
Takže třída System.Console obsahuje metodu ReadLine(). Metodu voláme bez parametrů, přečte se ze standardního vstupu celý řádek jako řetězec. Pak si takový řetězec můžu uložit do knihovní třídy string.
Takže berme, že to co jsme napsali na konzoli se nám někam uložilo.
Teď vím, že to co jsem uložil mám někde kdesi a chtěl bych s tím pracovat jako s hodnotou, tak to musím převést do kódu na srozumitelnej tvar. Uložilo se to jen jako řetězec - string.
Dále zbývá řetězec převést, respektive překonvertovat.
V metodě volamKlavesnici se nám jak již jsem řekl vrátil řetězec ze vstupu a uložil se do string (string je typem, ale ne číselným jako jsou int, double).
Dále je zapotřebí převést tento řetězec na nějaký typ, se kterým můžeme počítat, tak např. int či double. Konvertovat musíme pomocí klíčového slova
Convert.To(jménoTypu)();. Zde řetezec (string) s je návratová hodnota z metody volamKlavesnice. Dále si deklaruju proměnnou i jako double a zkonvertuju s do této proměnné.
Poté jako návratovou hodnotu zvolím tu, co jsem převedl na double. Lepší je druhý příklad, tam vše dělám v jednom kroku.
using System;
class zakladniVstup
{
static string volamKlavesnici()
{
return Console.ReadLine();
}
static double prevedNaDouble()
{
string s = volamKlavesnici();
double i = Convert.ToDouble(s);
return i;
}
static void Main()
{
Console.WriteLine("Zadej číslo:");
double i = prevedNaDouble();
Console.WriteLine("Tvoje zadané číslo je: {0}", i);
}
}
Zde je tentýž příklad, akorát je srozumitelnější. Vypíši řetězec Zadej číslo a pak jen řeknu do proměnné i typu double
přiřaď hodnotu, kterou získáš tím, že typ double vyndáš, rozebereš (parse) z načteného řádku (Console.ReadLine()).
using System;
class zakladniVstup
{
static void Main()
{
Console.WriteLine("Zadej číslo:");
double i = double.Parse(Console.ReadLine());
Console.WriteLine("Tvoje zadané číslo je: {0}", i);
}
}
V metodě Main použiji metodu WriteLine k výpisu řetězce Zadej číslo a čeká se na vstup. Jestli chci zadat hodnotu s desetinnou čárkou, musím použít čárku (nikoliv tečku)
a hodnota se vypíše.
Načtení jména a věku, následně jeho vypsání
Nejdříve vypíši pomocí Console.WriteLine řetězec. Čekám na vstup. Vstupní řetězec s přiřadím do s a pak ho vypíšu atd.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Napiště své křestní jméno: ");
string s = Console.ReadLine();
Console.WriteLine("Ahoj {0}", s);
Console.WriteLine("Napište kolik vám je let: ");
s = Console.ReadLine();
Console.WriteLine("Je vám {0} let ", s);
}
}
Obsah, obvod obdélníka se vstupem
Nyní jsem chtěl vypočíst obsah a obvod obdélníka, vytvořil jsem si pomocí metody hodnotaDouble čtení znaku typu double. Pak jsem dvakrát zavolal, abych měl dvě hodnoty.
A v metodě WriteLine jsem zadal výpočet. Všiměte si, že jsem zde použil řádkovou sekvenci (escape sekvenci) \n (čti backslash n), ta mi zaručí odřádkování. Píše se hned k textu, nevynechává se mezera.
using System;
class vypocetObdelnika
{
static string volamKlavesnici()
{
return Console.ReadLine();
}
static double hodnotaDouble()
{
return Convert.ToDouble(volamKlavesnici());
}
static void Main()
{
Console.WriteLine("Zadejte čísla pro výpočet obsahu a obvodu obdélníka, oddělte je klávesou Enter: ");
double a = hodnotaDouble();
double b = hodnotaDouble();
Console.WriteLine("\n
Zadali jste čísla {0} a {1}\n\n
Obsah = {2}\n
Obvod "+"= {3}", a, b, a*b, (a+b)*2);
Console.ReadLine();
}
}
Kompaktnější verze
using System;
class vypocetObdelnika
{
static void Main()
{
Console.WriteLine("Zadejte čísla pro výpočet obsahu " + " a obvodu obdélníka, oddělte je klávesou Enter: ");
double a = double.Parse(Console.ReadLine());
double b = double.Parse(Console.ReadLine());
Console.WriteLine("\n Zadali jste čísla {0}" + "a {1}\n\n Obsah = {2}\n Obvod = {3}", a, b, a*b, (a+b)*2);
Console.ReadLine();
}
}