TlačiťTlačiť Slovenčina English Hľadať RSS

© 2005 – 2024 Roman Horváth, všetky práva vyhradené. Dnes je 19. 4. 2024.

Stránka sa načítava, prosím čakajte…

Dátum: 15. 3. 2013, pred viacerými rokmi, aktualizované: 3. 1. 2020, pred štyrmi rokmi

Zadanie

Zostavte algoritmus na nakreslenie grafickej tabuľky znakov podľa predlohy. Ide o časť ASCII tabuľky. Riešenie musí byť efektívne.

 
obrázok

Podstatná časť riešenia

Nasledujúci kód obsahuje iba telo konštruktora, ktoré je potrebné vložiť do šablóny hlavnej triedy, ktorú môžete nájsť buď pod príkladom, alebo v dokumentácii programovacieho rámca GRobot. otvárané v novom okne
(obvykle ide o externý odkaz)

(Poznámka: Šablónu generuje aj generátorom projektov BlueJ, odporúčaný typ projektu – Jednoduchý, ale ten je v súčasnosti zastaraný. Nie je kompatibilný s najnovšou verziou programovacieho rámca.)

~

skry();
Svet.nekresli();

final int rozostupX = 40;
final int rozostupY = 24;
skoč(-rozostupX * 5.5, rozostupY * 7.5);

for (char ch = 32; ch <= 126; ++ch)
{
	// Nasledujúci príkaz obsahuje „trik,“ ktorý je v Jave často
	// používaný. Ide o pripojenie prázdneho reťazca k premennej
	// primitívneho údajového typu:
	//
	//    premenná + ""
	//
	// Na čo je to dobré? Metóda text vyžaduje reťazec. Iný objekt
	// neakceptuje! Keby sme pracovali s ľubovoľnou inštanciou (t. j.
	// s objektom), použili by sme na prevod na reťazec metódu
	// toString, napríklad:
	//
	//    môjRobot.toString()
	//
	// Pri primitívnych údajových typoch to však takto nejde. Je síce
	// pravda, že premennú ch by sme mohli previesť na reťazec aj
	// takto:
	//
	//    String.valueOf(ch)
	//
	// ale „pripojenie prázdneho reťazca,“ ktoré je v tomto riešení
	// použité, je ľahšie zapamätateľné (a efekt je prakticky rovnaký)…
	//
	// Ak pred pripojením reťazca pretypujeme premennú ch na typ
	// int, tak vo výpise nezískame znak, ale ASCII kód (rovnako
	// dobre by poslúžil aj iný celočíselný typ, napr. short).

	text((int)ch + "");
	// text(String.valueOf((int)ch)); // dlhšia verzia predchádzajúceho
		// príkazu

	obdĺžnik((rozostupX / 2) - 2, (rozostupY / 2) - 2);
	skoč(rozostupX, 0);

	text(ch + "");
	// text(String.valueOf(ch)); // dlhšia verzia predchádzajúceho
		// príkazu

	obdĺžnik((rozostupX / 2) - 2, (rozostupY / 2) - 2);
	skoč(-rozostupX, -rozostupY);

	if (ch % 16 == 15)
		skoč(rozostupX * 2, 16 * rozostupY);
}

Svet.kresli();

 


Šablóna hlavnej triedy

~

import knižnica.*;

public class HlavnáTrieda extends GRobot
{
	private HlavnáTrieda()
	{
		/*# «sem vložte kód príkladu» #*/
	}

	public static void main(String[] args)
	{
		new HlavnáTrieda();
	}
}