Kurz programovania - lekcia 2. Podmienka if

Sekcia o programovaní, programovacích jazykoch...
Používateľov profilový obrázok
RP
Administrátor
Administrátor
Príspevky: 2539
Dátum registrácie: St 21. Mar, 2001, 20:00
Bydlisko: Kosice

Kurz programovania - lekcia 2. Podmienka if

Príspevok od používateľa RP »

Pokracujeme v kurze programovania pre vsetky jazyky.
vid. http://www.pretaktovanie.sk/modules.php ... ic&t=22117

Pascal

if - podmienka

Syntax if (vyraz-podmienka) then (prikaz_1) else (prikaz_2);


Prikaz_1 sa vyplni ked plati podmienka, vo vsetkych ostatnych pripadoch sa vyplni Prikaz_2.

Kód: Vybrať všetko

Program Podmienka;
var i,j:integer;
Begin
i := 10; 
j := 20;   {i a j skuste menit aby ste si overili ako podmienka pracuje}

writeln(' j =',j,'    i =',i);    {vypis i a j}

if (i<j) then writeln(' j je vacsie ako i') else writeln(' j je mensie alebo rovne ako i');

End.
Vysvetlivky :
{} - medzi tento typ zatvoriek sa umiestnuju komentare v programe, sluziace na popis/poznamku ku kodu. Komentar je kompilatorom odignorovany, sluzi len na orientaciu programatora pri citani kodu. Pozor tento typ zatvoriek pouziva Pascal, ine programovacie jazyku pouzivaju ine znaky na oznacenie komentarov.
- kod je jednoduchou ukazkou porovnania dvoch celych cisel pomocou podmienky if
- je mozne pouzit if bez else so syntaxou if (i<j) then writeln(' j je vacsie ako i'); potom program vypise na obrazovku len oznacenie pripadu ked j je vacsie ako i.

Iny priklad : podmienka urci ci je sucin i a j mensi nez cislo 300

Kód: Vybrať všetko

Program Podmienka;
var i,j:integer;
Begin
i := 10; 
j := 20;        {i a j skuste menit aby ste si overili ako podmienka pracuje}

writeln('j =',j,'    i =',i);    {vypis i a j}

if ((i*j)<300) then writeln(' i*j je mensie ako 300') else writeln(' i*j je vacsie alebo rovne ako 300');

End.
Otazky a verzie rovnakych kodov v inych programovacich jazykoch s popisom a vysvetleniami su vitane :)
fobos
Pokročilý používateľ
Pokročilý používateľ
Príspevky: 3686
Dátum registrácie: Št 22. Feb, 2007, 08:00
Bydlisko: Turčianske Teplice

Príspevok od používateľa fobos »

Ta a tu je podobny priklad v C++

Kód: Vybrať všetko

#include "stdafx.h"

int main(int argc, char* argv[])
{
    int a,b;            
	
	printf("zadaj cislo a: \n");
	scanf("%d",&a);
	printf("zadaj cislo b: \n");
	scanf("%d",&b);

    if (a>b)
		printf("a je vacsie ako b \n");
	else 
		printf("a je mensie ako b \n");



	return 0;

}

Kde:
int a,b; - deklaracia premennych (int - integer/cele cislo )
printf,scanf- vypis na obrazovku/nacitanie cisiel do premennych
\n - vypise na novy riadok
if podmienka - ak(if) plati to co je v zatvorke program vypise to co je napisane pod touto podmienkou
else - ak neplati horeuvedene tak program vypise to co napiseme do zatvoriek za prikazom printf



Edit:\\RP nemohol by si do tejto lekcie zahrnut aj vetvenie, myslim ze to su tak jednoduche veci ze nie je potrebne zakladat dva samostatne thready....
Xbox Series X...
Samsung S24 ...
Intel Core 8600K ...
Používateľov profilový obrázok
RP
Administrátor
Administrátor
Príspevky: 2539
Dátum registrácie: St 21. Mar, 2001, 20:00
Bydlisko: Kosice

Príspevok od používateľa RP »

Takto, pre nas to moze byt jednoduche, neviem ci aj pre uplneho zaciatocnika. Vlastne sme si nepovedali pre koho je tento "kurz" primarne urceny.

Kazdopadne, teraz tu viac nez tyzden nebudem, takze sorry, ak tak to doplnim potom. Dik za pochopenie :)
Používateľov profilový obrázok
kami_sama
Používateľ
Používateľ
Príspevky: 362
Dátum registrácie: Po 05. Sep, 2005, 20:00
Bydlisko: Bratislava

Príspevok od používateľa kami_sama »

Meloon: preco to riesis cez C?

ked uz C++, tak potom asi takto:

Kód: Vybrať všetko

#include <iostream>

int main(int argc, char* argv[]) 
{ 
    int a,b;            
    
   cout << "zadaj cislo a: \n"; 
   cin >> a;
   cout << "zadaj cislo b: \n"; 
   cin >> b; 

    if (a>b) 
      printf("a je vacsie ako b \n"); 
   else 
      printf("a je mensie ako b \n"); 

   return 0; 

}
vysvetlivky:

"iostream.h" - zakladna kniznica, ktora ma za ulohu riadit in/out streamy (prudy).
cin/cout - zakladne objekty kniznice iostream.h.
viac info tu: http://www.cplusplus.com/reference/iostream/

pre koderov, ktori pouzivaju dev C++:
bude problem s includovanim kniznice iostream.h. pridanie extra riadku:

Kód: Vybrať všetko

using namespace.std;
sa to da vyriesit.

program by mal vyzerat takto:

Kód: Vybrať všetko

#include <iostream>
using namespace std ;
... //zvysok kodu
meloon: plz, ked uz C++, tak potom nech tam maju vsetky vyhody.
Používateľov profilový obrázok
Rusty
Používateľ
Používateľ
Príspevky: 793
Dátum registrácie: Ne 05. Jún, 2005, 02:00
Bydlisko: Bratislava (29)

Príspevok od používateľa Rusty »

JAVA

kod :

Kód: Vybrať všetko

import javax.swing.*;

public class podmienkaIF {
	public static void main(String[] arg){
		String cislo="0";
		int cislo2=0;
		
		cislo = JOptionPane.showInputDialog("Zadaj cislo, ktore chces porovnat :");
		
		cislo2=Integer.parseInt(cislo);
		
		if (cislo2 == 0){
			System.out.println("Zadal si nulu.");
		}
		else if (cislo2 < 0){
			System.out.println("Zadal si zaporne cislo");
		}
		else {
			System.out.println("Zadal si kladne cislo");
		}		
	}
}
Vysvetlenie :

Java nema klasicke prikazy readln(),scanf() alebo im podobne jednoduche prikazy na nacitanie znaku alebo cisla. A nechcel som tu pouzivat io.stream-y, ktore mi zatial pripadaju prilis komplikovane na druhu lekciu.

1. V programe sa zadefinuje retazec znakov "cislo" a cislo typu integer "cislo2".

2. riadok :

Kód: Vybrať všetko

cislo = JOptionPane.showInputDialog("Zadaj cislo, ktore chces porovnat :");
vyhodi taketo pekne dialogove okienko :

Obrázok

a nacitany retazec znakov, ktory mu zadame vlozi do retazca "cislo".

3. retazec znakov premenime na cislo typu integer a vlozime ho do premennej "cislo2" co je tiez integer a mozeme ho pekne porovnavat ako cislo, co by s retazcami bol problem.

Kód: Vybrať všetko

cislo2=Integer.parseInt(cislo);
4.

Poslednou castou kodu je samotna podmienka. If moze mat aj 10 podmienok ktore overujeme. Vzdy zaciname podmienkou "if". Pokial chceme overit viacero moznosti, nepiseme uz "if", ale "else if". Pokial ziadna podmienka nevyhovela, vykona sa kod nachadzajuci sa v casti "else".

5.

Kód: Vybrať všetko

import javax.swing.*;
jednoducho povedane, tento riadok spristupni funkcie, na zobrazenie "input dialogu" - co je to okno do ktoreho zadavame udaje.


Poznamka :

Tento kod nieje osetreny na 100%. Program predpoklada ze mu nezadame do vstupu pismena, ale cisla v rozsahu integer (co je od -2147483647 do 2147483647).

EDIT :

Osetreny kod :

Kód: Vybrať všetko

import javax.swing.*;

public class cyklusIf {
	public static void main(String[] arg){
			
		String cislo="0";
		int cislo2=0;
		
		cislo = JOptionPane.showInputDialog("Zadaj cislo, ktore chces porovnat :");
		
		try {	
			cislo2=Integer.parseInt(cislo);
		} catch (Exception vynimka){
			System.out.println("Nezadal si cislo, ktore viem porovnat.");
			System.exit(0);
		}
		
		if (cislo2 == 0){
			System.out.println("Zadal si nulu.");
		}
		else if (cislo2 < 0){
			System.out.println("Zadal si zaporne cislo");
		}
		else {
			System.out.println("Zadal si kladne cislo");
		}		
	}
}
Naposledy upravil/-a Rusty v Št 24. Máj, 2007, 20:36, upravené celkom 3 krát.
fobos
Pokročilý používateľ
Pokročilý používateľ
Príspevky: 3686
Dátum registrácie: Št 22. Feb, 2007, 08:00
Bydlisko: Turčianske Teplice

Príspevok od používateľa fobos »

kami_sama napísal:Meloon: preco to riesis cez C?
:?: ten priklad co som uviedol je pisany v C++ ...
kami_sama napísal:meloon: plz, ked uz C++, tak potom nech tam maju vsetky vyhody.
:?: Tak teraz ta uz nechapem vobec :?
Xbox Series X...
Samsung S24 ...
Intel Core 8600K ...
Používateľov profilový obrázok
kami_sama
Používateľ
Používateľ
Príspevky: 362
Dátum registrácie: Po 05. Sep, 2005, 20:00
Bydlisko: Bratislava

Príspevok od používateľa kami_sama »

Meloon napísal:
kami_sama napísal:Meloon: preco to riesis cez C?
:?: ten priklad co som uviedol je pisany v C++ ...
kami_sama napísal:meloon: plz, ked uz C++, tak potom nech tam maju vsetky vyhody.
:?: Tak teraz ta uz nechapem vobec :?
C++ ako take je plne kompatibilne s C. rozdiel je v triedach, ale to asi vies.

program, co si napisal v nicom sa nelisi od kodu z C, aj keby sa to dalo aj jednoduchsie, a'la C++. tou vyhodou som len chcel naznacit, aby si uviedol moznosti a vylepsenia v C++ oproti C. lebo takto moc velky vyznam nema (v podstate identicky kod nazvany C-ckovy aj C++-kovy), aby sme pisali aj ty, aj ja. resp. ja to necham tak a pokracuj pod menom C/C++. :wink:
kane77

Re: Kurz programovania - lekcia 2. Podmienka if

Príspevok od používateľa kane77 »

Ruby
takisto ako vo vacsine ostatnych jazykov, podmienka je if/else (v ruby je aj elsif, co je v podstate dalsia podmienka v else vetve - cize to iste co v C/C++/Jave "else if")
Ak je podmienka v jednom riadku je klucove slovo then povinne (rovnako ako end na konci), viacej prikazov sa v jednom riadku oddeluje bodkociarkou, else vetva moze ale nemusi byt.

Kód: Vybrať všetko

if podmienka then prikaz1; prikaz2; prikaz3 end
Ak je na viac riadkov then sa pisat nemusi:

Kód: Vybrať všetko

if podmienka
  prikaz1
else
  prikaz2
end
Pre samostatne statementy sa podmienka moze presunut za prikaz:

Kód: Vybrať všetko

puts "i je mensie ako j" if i<j
Ruby ma aj klucove slovo unless co je to iste ako if !podmienka (ak neplati podmienka) da sa pouzit rovnako ako if

Kód: Vybrať všetko

puts "j je vacsie ako i" unless i>=j

Program:

Kód: Vybrať všetko

i=10
j=20

puts "j = #{j}, i = #{i}"
if i<j then puts " j je vacsie ako i" else puts "j je mensie alebo rovne ako i" end
Vysvetlivky
v retazci (retazec je zvacsa ohraniceny " " alebo ' ') sa da pouzit #{premenna} pre nahradenie hodnoty premennej, alebo sa da pouzit metoda + (ano v ruby je to naozaj metoda - da sa volajt aj takto "janko".+("hrasko") ), ale vyrazy na obidvoch stranach musia byt string (konvertovanie na string metodou .to_s)...

Kód: Vybrať všetko

puts "j = #{j}, i = #{i}"
#to iste ako
puts "j = "+j.to_s+", i = "+i.to_s
znakom # sa zacinaju jednoriadkove komentare...

Program 2:

Kód: Vybrať všetko

i=10
j=20

puts "j = #{j}, i = #{i}"     #vypis 
if i*j > 300 then puts " i*j je vacsie ako 300" else puts "i*j je mensie alebo rovne ako 300" end

Návrat na "Programovanie"