dum | žák

Programování C#

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu VY_32_INOVACE_23_PRG_458
Název tématické oblasti (sady) Programování
Název materiálu Práce s textem
Anotace Komplexnější cvičení na program shrnující všechny dosavadní znalosti. Prezentuje klasický vývojový diagram, na němž demonstruje rozfázování programu na dílčí části. Dále popisuje způsob implementace programu.
Autor Ivan Pomykacz Jazyk čeština
Očekávaný výstup Provádí základní analýzu programu. Čte vývojový diagram. Implementuje postupně program dle vývojového diagramu.
Klíčová slova implementace, vývojový diagram, analýza, metody string, logické operátory
Druh výukového zdroje Pracovní list Věková skupina žáků 15+
Typ interakce aktivita Ročník 1.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) 13.11.2013 Celková velikost

pdf icon
Práce s textem

Obsah

Pig Latin translator

Pig Latin je jazyková hra pro anglický jazyk. Používá se pro pobavení i pro zachování "soukromí" mezi mluvčími. Princip hry spočívá v úpravě slov přidáním atypických přípon nebo přesunutím první souhlásky na konec původního slova.

Naším úkolem bude vytvořit překladač z angličtiny do Pig Latin.

Pravidla

  • Začíná-li slovo samohláskou, připojíme na konec slova way.

  • Začíná-li slovo souhláskou, pak první písmeno přesuneme na konec slova a přidáme ay.

Implementace

U takto rozsáhlejšího programu je potřeba si jednotlivé části rozfázovat a realizovat postupně.

Vstup

Začněme kódem, který umožní uživateli napsat slovo, které pak budeme překládat.

string slovo;
 
slovo = Console.ReadLine();
 

Následně provedeme test, zda-li zadané slovo není prázdný řetězec.

if (slovo != "") {
    Console.WriteLine(slovo);
    //...
}
else {
    Console.WriteLine("Chyba! Prázdný řetězec.");
}
 
Úpravy

Nyní potřebujeme znaky ve slovo převést na malá písmena a oříznout o případné bílé znaky. Vytvořme proto novou proměnnou, do které změny uložíme.

upravene_slovo = slovo.Trim().ToLower();
 
Počáteční písmeno

Pak budeme potřebovat z upraveného slova vytáhnout počáteční písmeno, abychom mohli zjistit, zda-li je to samohláska.

Bude nezbytné deklarovat novou proměnnou char prvni;.

prvni = upravene_slovo[0];
 
Detekce samohlásky

Pro detekci samohlásky použijeme podmínku, která zjistí, zda-li první písmeno slova je jedno ze samohlásek (a,e,i,o,u).

A protože nám stačí, aby ze všech možností (a,e,i,o,u) vyhověla alespoň jedna, použijeme logický součet ||.

if (prvni == 'a' || prvni == 'e' || prvni == 'i' || prvni == 'o' || prvni == 'u') {
    // jde o samohlásku
}
else {
    // je to souhláska
}
 

Pozor! Porovnáváme char, proto musíme použít jednoduché uvozovky.

Překlad

Pokud počáteční písmeno není samohláskou, pak stačí na konec slova připojit text "way".

nove_slovo = upravene_slovo + "way";
 

Ano, v kódu je použitá nová proměnná nove_slovo, která ještě nebyla deklarována.

V opačném případě, je-li první písmeno slova souhláska, musíme ji přesunout na konec slova.

Je možné k tomu využít metodu Substring() objektu string. Substring() totiž dokáže z řetězce vykopírovat určitou jeho podmnožinu. Podíváme-li se na parametry metody, pak zjistíme, že má jeden povinný parametr a druhý volitelný.

Povinný parametr je počáteční index, tedy číslo, od kolikátého znaku se má začít kopírovat nový řetězec (počítáno od nuly).

Volitelný parametr je délka, tj. kolik znaků se má kopírovat. Nevyplníme-li tento parametr, použije se zbývající délka původního řetězce.

nove_slovo = upravene_slovo.Substring(1) + prvni + "ay";