A J# programozási nyelv

Példaprogramok

Példaprogramok

Hello Világ!

Minden programozási nyelvben írt első program a "Hello Világ" program, ez most sem legyen másképp. Az alábbi kód üdvözli a környezetét standard outputon (Konzolon) és Windows-os ablakban (MessageBox) is.

import System.Console; import System.Windows.Forms.*; public final class Program extends Object { /** * statikus String konstans létrehozása */ public final static String HelloVilag= "Hello, Világ!"; /** * futtatáskor ezt a fv-t futtatja a környezet */ public static void main(String[] args) { (new Program()).Run(args); } /** * "Hello, Világ!" a standard kimeneten */ private void DefOutput() { System.Console.WriteLine("Kimenet a konzolon...\n"); Console.get_Out().WriteLine(HelloVilag); System.Console.WriteLine("Nyomjon ENTER-t a folytatáshoz...\n"); Console.ReadLine(); } /** * a Program osztály Run fv-e, ami meghívásra kerül */ private void Run(System.String[] args) { // Konzol this.DefOutput(); // Windows WinOutput(); } /** * "Hello, Világ!" a Windows form kimeneten */ private void WinOutput() { System.Console.WriteLine("Kimenet a Windows ablakon..."); // statikus adattag osztályszintű hivatkozása MessageBox.Show(Program.HelloVilag, "MessageBox kimenet."); System.Console.WriteLine("Nyomjon ENTER-t a folytatáshoz...\n"); Console.ReadLine(); } }

Legfontosabb kulcsszavak

A honlap böngészése során megismerkedhettünk a legfontosabb kulcsszavakkal. A következő program ezek egy-egy alkalmazását hivatott bemutatni. Megtalálhatóak benne a legegyszerűbb vezérlési szerkezetek, alprogramok hívása, kivételek dobása, elkapása, láthatósági kulcsszavak stb..

import System.*; public class Exercise { // osztály adattagja // static kulcsszóra szükség van, mert a main is static és ott is használjuk public static int number; public static void main() { String customerName; int temp; String strNumber; // Hátul tesztelő ciklus do { // Menu Console.Write( "\n(1) Stringet szeretne beolvasni" + "\n(2) Intet szeretne beolvasni" + "\n(3) Kivételt szeretnék dobni" + "\n(4) Ciklust szeretnék használni" + "\n(5) Kilép\n"); Console.Write("\nAdjon meg egy opciót: "); temp = Integer.parseInt(Console.ReadLine()); // switch vezérlési szerkezet switch (temp) { // string beolvasása inputról case 1: Console.Write("Neve: "); customerName = Console.ReadLine(); Console.WriteLine(); Console.Write("Neve: "); Console.WriteLine(customerName); break; // integer beolvasása inputról case 2: Console.Write("Kérek egy természetes számot: "); strNumber = Console.ReadLine(); number = Integer.parseInt(strNumber); Console.WriteLine("Szám: " + number); break; // kivételkezelés case 3: // metódus hívása kivételek(); break; case 4: Console.Write("\nMeddig szeretné kiíratni a számokat: "); number = Integer.parseInt(Console.ReadLine()); // metódus hívása paraméterrel ciklus(number); break; case 5: Console.WriteLine("\nViszontlátásra!\n"); break; default: Console.Write("Nincs ilyen opció!\n"); continue; // vezérlés átadó kulcsszó } } while(temp!=5); } // osztály metódusa public jogokkal public static void kivetelek() { try { Console.Write("Hány éves vagy?: "); number = Integer.parseInt(Console.ReadLine()); // elágazás vez. szerk. if (number < 20) throw new NullPointerException(); else throw new IndexOutOfRangeException(); } catch (NullPointerException e) { Console.Write("\nA kivétel, amit elkaptam: \n" + e); } catch (IndexOutOfRangeException e) { Console.Write("\nA kivétel, amit elkaptam: \n" + e); } finally // finally block!!! { Console.Write("\nA finally ág mindenképpen lefut\n"); } } // osztály metódusa private jogokkal private static void ciklus(int top) { for (int i = 0; i < top; i++) Console.Write(" " + i); } }

Egy összetettebb feladat

Most pedig egy összetettebb feladat megoldásán keresztül megmutatjuk, milyen egy Visual J# projekt. A megoldandó feladat nem teljesen triviális, ámde látványos. Azaz a megoldás megértéséhez kissé bele kell ásni magunkat a problémakörbe. Ez pedig a digitális képelemzés, és az éldetektálás. Aki érdeklődik ez iránt, annak a Grafika sáv Bevezetés a digitális képelemzés c. előadást ajánlom.

Feladat:
Adott egy szürkeárnyalatos kép. Meg kell keresni a képen, hogy hol találhatóak benne élek.

Megoldás:
Prewitt féle gradiens alapú éldetektálás, és a pontos lokalizációhoz a nem maximális élek elnyomása.

Futtatási/fejlesztői környezet:

A programban több fejezetből is található példa. Néhány olyan példa, ami az előző példaprogramokban nem fordult elő: A teljes példaprogram és a Visual J# (Visual Studio 2005) project megtalálható a programs alkönyvtárban a Digikep.zip fájlban.

Egy másik összetett feladat

A következő linken található program bemutatja, hogyan lehet C#-os osztályokat,interfészeket és sablonokat felhasználni egy J# programban, továbbá mutat példát szálkezelésre és kivételkezelésre. A program Visual Studio 2005 alatt készült.

A példaprogram jól kommentezett, de ha nem elegendő az ottani segítség, akkor ezen nyelvleírás megfelelő részén taláhat bővebb információt.

ColorBricks

A következő linken egy Tetris klón forráskódja található. A program Microsoft Visual J# 2005 Express Edition alatt készült.