Karel Says Goodbye, NetBeans Says Hello
Ciele
- Oboznámiť sa so základnými údajovými typmi jazyka C.
- Naučiť sa pracovať s aritmetickými cyklami.
- Naučiť sa pracovať s premennými.
- Zoznámiť sa s vývojovým prostredím NetBeans IDE a naučiť sa v ňom ladiť program.
- Osvojiť si funkcie pre prácu so štandardným vstupom a výstupom.
Úvod
Na tomto cvičení sa naučíte pracovať s funkciami pracujúcimi so štandardným vstupom (čítanie z klávesnice) a štandardným výstupom (písanie na obrazovku). Tieto funkcie si osvojíte počas implementácie jednoduchých hier s názvom: Koľko je hodín? a Uhádni číslo, ktoré si myslím. Naučíte sa pracovať s vývojovým prostredím NetBeans IDE, ladiť v ňom programy, a nakoniec budete riešiť ďalšie Karlove problémy, pri riešení ktorých sa naučíte pracovať s premennými, ktoré Karlovi v mnohých prípadoch značne uľahčia prácu.
Postup
Krok č. 1
Úloha 1.1:
Úloha 1.2:
srand(time(NULL)); int randomNumber = (rand() % 100) + 1;
Úloha 1.3:
Úloha 1.4:
- hráčov tip je menší, ako je myslené číslo,
- hráčov tip je väčší, ako je myslené číslo,
- hráčov tip je zhodný s hodnotou mysleného čísla.
Úloha 1.5:
Úloha 1.6:
Úloha 1.7:
Úloha 1.8:
Krok č. 2
Úloha 2.1:
Poznámka:
Úloha 2.2:
Poznámka:
Poznámka:
Úloha 2.3:
Úloha 2.4:
Poznámka:


Poznámka:
Úloha 2.5:
Doplňujúce úlohy
- Modifikujte program GuessTheNumber tak, aby počítač hádal číslo, ktoré si myslíte vy ako hráč.
- Modifikujte program GuessTheNumber nasledovne: Nech A si myslí číslo a B háda myslené číslo. Používateľ nech zadá interval, na ktorom je číslo hádané. Výstupom nech je konverzácia medzi A a B. Počítač teda bude komunikovať sám so sebou.
-
Naprogramujte jednoduchú hru s názvom Koľko je hodín?
Pomôcť vám môžu nasledujúce pomocné kroky:
- Celočíselná premenná clock pre uchovávanie aktuálneho času.
- Výzva pre hráča, aby zadal aktuálny čas, napr. otázkou Koľko je hodín?
- Načítanie hodnoty aktuálneho času zo štandardného vstupu do premennej clock.
- Na základe hodnoty aktuálneho času výpis pozdravu na štandardný výstup: Good morning!, Good day!, Good afternoon!, Good evening! alebo Good night!.
- Upravte program Koľko je hodín? tak, aby program vedel načítať rôzne formáty času.
-
Precvičte si ladenie programu v prostredí NetBeans IDE
na jednoduchej matematickej úlohe pre umocnenie čísla zadaného
zo vstupu. Stiahnite si preto projekt
Debug Me a otvorte ho
v prostredí NetBeans.
Porovnajte výstup programu s výstupom uvedeným na nasledujúcom obrázku (na vstupe bola zadaná hodnota 2). Výstupy sú rozdielne, pretože v programe sa nachádzajú tri sémantické chyby.
Obr.: Koncová situácia po zadaní hodnoty 2Pokúste sa nájsť chybu ladením programu. Urobte preto analýzu, kde je vhodné do programu umiestniť body prerušenia (Breakpoints), ktoré sú potrebné pre ladenie programu.
-
Upravte program pre výpočet mocniny použitím funkcie
pow().
Prototyp funkcie pow():
double pow( double base, double exp );
Obr.: Koncová situácia po zadaní hodnoty 2Poznámka:
Pre použitie danej funkcie je potrebné do programu vložiť nasledujúci riadok:#include <math.h>
Poznámka:
V prípade, že prekladač ohlásil chybu aj napriek math.h, pridajte ku prekladu prepínač -lm. V prostredí NetBeans otvorte vlastnosti projektu a v okne Project Properties v kategórii C Compiler pridajte do Additional Options prepínač -lm.Poznámka:
V prípade, že na výstupe neboli vypísané správne hodnoty, otvorte v prostredí NetBeans vlastnosti projektu a v okne Project Properties v kategórii C Compiler nastavte Warning Level na More Warnings, prípadne pridajte do Additional Options prepínač -Wall. Preložte program a sledujte varovania prekladača. - Upravte riešenie programov stairs, stairsbuilder, treasuremap a mirror z predošlého cvičenia s využitím poznatkov nadobudnutých na tomto cvičení.
- Upravte riešenie programu olympics z druhého cvičenia tak, aby Karel zistil, akú najvyššiu prekážku vo svojom behu zdolal. Po nájdení značky, ktorá znamená koniec behu, položí Karel na jeho miesto taký počet značiek, ktorý bude rovný výške najvyššej zdolanej prekážky. Karel ukončí svoj beh krokom na ďalšiu pozíciu.
- Vytvorte program, pomocou ktorého načítate zo vstupu postupnosť čísiel, pričom načítavanie ukončíte zadaním hodnoty 0. Na obrazovku vypíšte najväčšie zadané číslo, najmenšie zadané číslo, súčet všetkých zadaných čísiel a ich aritmetický priemer.
- Stiahnite si projekt printf() Examples a naštudujte si rôzne spôsoby formátovania výstupu. Popis k projektu nájdete v súbore printf.pdf.
Ďalšie zdroje
- www.netbeans.com - Domovská stránka prostredia NetBeans
- Cygwin - Domovská stránka programu Cygwin
- PDCurses - verzia knižnice curses pre operačný systém Windows (pdcurses.lib, pdcurses.dll)
- Knižnica Karel the Robot (Hlavičkový súbor, Windows, Linux 32b, Linux 64b)
- Rudolf Pecinovský: Základy algoritmizace
- Pavel Herout: Učebnice jazyka C (1. díl) - kapitoly 3.1 a 4.3
Poznámka: