[Cvičení 3] | [Obsah] | [Cvičení 5] |
Napíšeme program, který vypíše na obrazovku adresy paměti, kde jsou umístěny jednotlivé položky jednak statického, jednak dynamického pole.Řešení:
Dev C++: adresy.dev, adresy.c CodeBlocks: adresy.cbp, adresy.c
Napište dvě funkce pro převod úhlu zadaného ve stupních na radiány a naopak. Přepište je také jako procedury s výstupními proměnnými.
Funkce a procedury napište nejprve do jednoho souboru se zdrojovým kódem, potom si vyzkoušejte tvorbu vlastní knihovny a hlavičkového souboru (stačí pouze pro funkce).Postup, jak vytvořit v překladači Dev C++ (resp. CodeBlocks) a připojit k projektu vlastní knihovnu a hlavičkový soubor, který bude obsahovat zmíňované funkce, si popíšeme.
- V hlavní nabídce zvolíme Soubor - Nový - Zdrojový kód. Vytvoří se nový soubor Beze jména 1.
- Uložíme si soubor pod názvem
uhly.c
.- V hlavní nabídce opět zvolíme Soubor - Nový - Zdrojový kód.
- Uložíme si soubor pod názvem
uhly.h
(hlavičkový soubor) .- Do hlavičkového souboru
uhly.h
napíšeme prototypy funkcí (nezapomeneme na středník):float deg2rad(float u); float rad2deg(float u);- Implementaci napíšeme do souboru
uhly.c
, resp. zkopírujeme z předchozího programu.- Vytvoříme nový projekt: Soubor - Nový - Projekt a uložíme jej např. pod názvem prevody.
- Na začátek hlavního programu vložíme pomocí direktivy hlavičkový soubor:
#include "uhly.h"
- Do projektu vložíme naši knihovnu: stiskneme pravé tlačítko myši na názvu projektu a zvolíme položku Připojit k projektu.
- Přeložíme knihovnu (Zkompilovat tento soubor). Všimněte si, že v adresáři je přeložená knihovna -
uhly.o
.- Doplníme hlavní program a vyzkoušíme knihovnu.
V překladači CodeBlocks je postup obdobný. Pořadí kroků lze i obrátit, tj. nejprve vytvoříme projekt a teprve potom nové soubory
uhly.h
auhly.c
.Pokud si soubory
uhly.c
auhly.h
, resp.uhly.o
uložíme do archivu, můžeme obě funkce použít např. za půl roku v jiném programu, aniž bychom je znovu programovali. V tom je výhoda deklarace procedur a funkcí v knihovnách.Chceme-li někomu poskytnout naši knihovnu a přitom utajit implementaci (zdrojový kód), poskytneme uživateli pouzé soubory
uhly.h
auhly.o
. Pak musíme nastavit parametry překladače tak, aby sestavovací program používal při sestavení knihovnuuhly.o
. V prostředí Dev C++ to provedeme následovně: Zobrazíme vlastnosti projektu (stiskem pravého tlačítka myši na názvu projektu) a zvolíme Vlastnosti projektu. Zobrazíme kartu Parametry a do posledního editačního okénka Linker přidáme pomocí tlačítka Připojit knihovnuuhly.o
. V prostředí CodeBlocks také stiskneme pravé tlačítko na názvu projektu, zvolíme Build options... a pak kartu Linker settings. Do okénka Link libraries přidáme pomocí tlačítka Add přeloženou knihovnu (pokud jde o soubor s příponou .o, musíme vybrat všechny soubory).Řešení:
Kompletní kód v jediném souboru Dev C++: stupne.dev, stupne.c CodeBlocks: stupne.cbp, stupne.c Funkce pro převod v samostatné knihovně Knihovna: uhly.c, uhly.h Dev C++: stupne2.dev, stupne2.c
Napište funkci, která zjistí, zda je zadaný prvek v neseřazeném poli. Funkce má tři parametry: pole, počet prvků pole a hledaný prvek. Pokud je prvek nalezen, funkce vrátí jeho index, jinak vrátí hodnotu -1. Dále naprogramujte dvě procedury, které seřadí prvky pole. První procedura seřadí pole vzestupně bublinkovým řazením, druhá procedura seřadí pole sestupně výběrem maximálního prvku.Prezentace s popsanými algoritmy řazení a vyhledávání: algoritmy_vyhledavani_razeni.ppt
Polotovar:Řešení:
Dev C++: hledani_vzor.dev, hledani_vzor.c CodeBlocks: hledani_vzor.cbp, hledani_vzor.c
Dev C++: hledani.dev, hledani.c CodeBlocks: hledani.cbp, hledani.c
Úloha slouží k procvičení definic procedur a funkcí.
Zadání:
Napište interaktivní program, který počítá obsah kruhu a obsah obdelníka.
Na obrazovku vypíše následující nabídku:Nabidka: --------------------- 1 ... Obsah kruhu 2 ... Obsah obdelnika 3 ... Konec --------------------- Volba:Při volbě 1 se program dotáže na poloměr, pak vypočítá a vytiskne obsah kruhu. Při volbě 2 se program dotáže na velikost stran obdélníka a vytiskne jeho obsah. Po provedení výpočtu se opět na obrazovku vypíše nabídka.
Při tvorbě programu ošetřete zadání záporných hodnot.Hotový program pro inspiraci je ke stažení zde: obsahy.exe
Úlohu naprogramujte pomocí procedur a funkcí. Napište zejména tyto procedury a funkce:
Návod: výpis nabídek a výpočet provádějte v cyklu (s podmínkou na konci). Pro rozhodování typu operace využijte příkaz
- procedura vypisující nabídku
- funkce, která čte volbu z klávesnice (doporučuji nabídku uchovat jako číslo typu int) a vrací ji
- funkce, která má jako parametr zvolenou funkci (1 nebo 2) a provede příslušný výpočet
switch
. Nezapomeňte nabreak
.Hlavní program bude mít tuto kostru:
int volba; do { tisk_nabidky(); volba = nacteni_volby(); vypocet(volba); } while (); /* vymyslete podmínku ukončení */Polotovar:
Řešení:
Dev C++: obsahy_vzor.dev, obsahy_vzor.c CodeBlocks: obsahy_vzor.cbp, obsahy_vzor.c
Dev C++: obsahy.dev, obsahy.c CodeBlocks: obsahy.cbp, obsahy.c
[Cvičení 3] | [Obsah] | [Cvičení 5] |