Dneska si ukážeme, jak používat výjimky if/else/elseif a cyklus for.
If/Else/ElseIf
If slouží jako podmínka, „Pokud něco platí, tak udělej tohle“.
Použití:
Visual Basic:
If podmínka Then
tak udělej tohle
End If
C#:
if(podmínka){
tak udělej tohle;
}
Příklad:
Visual Basic:
If x = 6 Then
Response.Write("x je 6!")
End If
C#:
if(x == 6){
Response.Write("x je 6");
}
Tady si musíte dávat pozor u C#, v podmínce if je 2× rovná se, to z toho důvodu, že proměnné x nepřiřazujete žádné číslo, ale pouze srovnáváte hodnoty!
Else nám poslouží, když se nekoná podmínka. Je nepovinný, a pokud nebude v kódu uveden, kód v podmínce if bude přeskočen.
Příklad:
Visual Basic:
If x = 6 Then
Response.Write("x je 6")
Else
Response.Write("x není 6")
End If
C#:
if(x == 6){
Response.Write("x je 6");
}
else{
Response.Write("x není 6");
}
Visual Basic.NET nabízí ještě jednu vychytávku, a to příkaz ElseIf:
If x = 6 Then
Response.Write("x je 6")
ElseIf x = 7 Then
Response.Write("x je 7")
Else
Response.Write("x není ani 6, ani 7!")
End If
ElseIf bohužel C# nemá, ale to moc nevadí, jelikož se dá nahradit vložením příkazu if do příkazu else:
int x = 5;
if(x == 6){
Response.Write("x je 6!");
}
else{
if(x == 7){
Response.Write("x je 7");
}
else{
Response.Write("x neni 6 ani 7!");
}
}
Někdy určitě budete potřebovat zjistit podmínkou, jestli platí to a to, popřípadě to nebo to. V tom případě je na místě použít logické operátory. Ve VB to jsou and (a) a or (nebo), v C# to je && (a) a || (nebo).
Příklad:
Visual Basic:
Dim x as Integer = 6
Dim y as Inreger = 7
If x = 8 or y = 8 Then
Response.Write("X nebo Y je 8!")
End If
C#:
If(x == 8 || y == 8){
Response.Write("X nebo Y je 8!");
}
Cyklus For
Cyklus for použijeme, když chceme něco opakovat, než nějaká proměnná nabude určité hodnoty:
Visual Basic:
For promenna = pocatecni hodnota To konec hodnota
prikazy v Cyklu….
Next promenna
C#:
for(promenna = pocatecni hodnota;ukoncovaci podmínka;zvetseni/zmenseni promenne){
prikazy v Cyklu….
}
Příklad:
Visual Basic:
Dim i as Integer
For i = 1 To 6
Response.Write("Zdravím vás, dnes už po "+i.toString()+".<br>")
Next i
Nastavíme proměnnou i hodnotu 1 a necháme ji opakovat, dokud není rovna hodnotě 6. Poté necháme vypsat text a nakonec zvětšíme proměnnou o 1.
C#:
int i;
for(i = 1;i <= 6;i++){
Response.Write("Zdravím vás, dnes už po "+i+".<br>");
}
Nejdříve nastavíme proměnnou i na 1, poté ji necháme opakovat dokud není menší nebo rovna 6 a pak nastavíme, že se má hodnota i zvětšovat (i++ znamená i = i + 1). Následně už jen vypíšeme text.
Není pro nás problém nastavit, aby se hodnota zmenšovala:
Visual Basic:
For i=6 To 1 Step -1
Response.Write("Zavodník už jede "+i.toString()+". kolo<br>")
Next i
A v C#:
for(i = 6;i >= 1;i--){
Response.Write("Závodník už jede "+i+". kolo<br>");
}
A nakonec jeden lehký příklad, kdybyste něco nepochopili:
Visual Basic:
<%@ Page Language="VB" %>
<script runat="server">
Sub ukazJmena(sender As Object, e As EventArgs)
Dim i as Integer
Dim kolik as Integer
Dim jmeno as String
Dim opacne as String
jmeno = txtJmeno.Text
opacne = txtOpacne.Text
kolik = Int32.Parse(txtKolik.Text) //prevedeme ze String na Integer
for i=1 To kolik
Response.Write("("+i.toString()+"): Jmenujete se "+jmeno+"!<br>")
Next i
Response.Write("<br>")
if opacne = "0" Then
for i=kolik To 1 Step -1
Response.Write("("+i.toString()+"): Jmenujete se "+jmeno+"!<br>")
Next i
ElseIf opacne = "1" Then
Response.Write("::nepral jste si vypsat cyklus opacne::")
End If
Response.Write("<hr>")
End Sub
</script>
<html>
<head>
</head>
<body>
<form runat="server">
Kolikrát chcete jméno vypsat: <asp:TextBox id="txtKolik" runat="server" /><br>
Zadejte jméno, které chcete vypsat: <asp:TextBox id="txtJmeno" runat="server" /><br>
Chcete nechat cyklus vypsat opacne(0=ano,1=ne): <asp:TextBox id="txtOpacne" runat="server" /><br>
<asp:button id="pozdravit" onclick="ukazJmena" runat="server" text="pozdrav" /><br>
</form>
</body>
</html>
A to samé v C#:
<%@ Page Language="C#" %>
<script runat="server">
void ukazJmena(object sender,EventArgs e){
int i,kolik;
string jmeno,opacne;
jmeno = txtJmeno.Text;
opacne = txtOpacne.Text;
kolik = Int32.Parse(txtKolik.Text); // prevedeme ze string na int
for(i=1;i<=kolik;i++){
Response.Write("("+i+"): Jmenujete se "+jmeno+"!<br>");
}
Response.Write("<br>");
if(opacne == "0"){
for(i=kolik;i>=1;i--){
Response.Write("("+i+"): Jmenujete se "+jmeno+"!<br>");
}
}
else{
if(opacne == "1"){
Response.Write("::nepral jste si vypsat cyklus opacne::");
}
}
Response.Write("<hr>");
}
</script>
<html>
<head>
</head>
<body>
<form runat="server">
Kolikrat chcete jmeno vypsat: <asp:TextBox id="txtKolik" runat="server" /><br>
Zadejte jméno, které chcete vypsat: <asp:TextBox id="txtJmeno" runat="server" /><br>
Chcete nechat cyklus vypsat opacne(0=ano,1=ne): <asp:TextBox id="txtOpacne" runat="server" /><br>
<asp:button id="pozdravit" onclick="ukazJmena" runat="server" text="pozdrav" /><br>
</form>
</body>
</html>
Doufám, že je vám to vše jasné, příště se podíváme na cykly while, do-while a příkaz switch.