Jazyk C patří mezi tzv

Transkript

Jazyk C patří mezi tzv
Pomocný text pro výuku výpočetní techniky
Stručný úvod do základů programovacího jazyka
C++
-pk-
1
Dva motivační programy namísto úvodu
1. Jak se jmenuješ … ?
/*
* Prvni program v jazyce C++
* ==========================
*/
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main (void)
{
char Jmeno[30];
Alt + 92
Alt + 35
Alt + 39
Alt + 62
Alt + 123
Alt + 125
Alt + 40
Alt + 41
Alt + 91
Alt + 93
Alt + 37
Alt + 179
Alt + 124
Alt + 60
… \
… #
…‘
… >
… {
… }
… (
… )
… [
… ]
… %
…|
…¦
… <
printf("Jak se jmenujes ?");
scanf("%s", Jmeno);
printf("\n");
printf("Tak at zije %s ! \n", Jmeno);
printf("A tady je Tvuj prvni program v jazyce C++. \n");
printf("\n");
printf("Dobry den, overil jsem si Vaši totožnost. Jste opravdu %s...
\n", Jmeno);
printf ("Vážený pane %s, \n", Jmeno);
printf ("Je vysloveně otázkou času, kdy jméno %s vstoupi do dějin ! \n",
Jmeno);
printf ("Jméno %s bude slavné! \n", Jmeno);
printf (" %s ! \n", Jmeno);
printf (" %s !! \n", Jmeno);
printf (" %s !!! \n",Jmeno);
printf(„\n\n konec = ENTER“);
whilw(toupper(getch()) == ‚A‘);
(void) getch ();
return 0;
}
2. Program pro převod ze stupnice Fahrenheitovy do Celsiovy
A)
#include <stdio.h>
int main()
{
short dolniMez, horniMez, krok;
float Fahr, Cels;
dolniMez = 0; horniMez = 100; krok = 10;
printf ("Fahrenheit
Celsius\n");
Fahr=dolniMez;
while (Fahr<=horniMez)
{
Cels = (5.0f/9.0f)*(Fahr-32.0f);
printf("%4.0f
%6.1f\n", Fahr, Cels);
Fahr=Fahr+krok;
}
2
return 0;
}
B)
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main (void)
{
short dolniMez, horniMez, krok;
float Fahr, Cels;
do
{
clrscr();
printf("Zadej teplotu v Celsiove stupnici : "); scanf("%f", &Cels);
Fahr = (( Cels * 20.0f - Cels * 2.0f)/10) + 32;
printf ("Teplota pýevedena do Fahrenheitovy stupnice je %f řF", Fahr);
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
(void) getch();
return 0;
}
-------------------------------------------------------------------------C)
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
int main (void)
{
short dolniMez, horniMez, krok;
float Fahr, Cels;
do
{
clrscr();
printf("Zadej teplotu ve Fahrenheitově stupnici : "); scanf("%f",
&Fahr);
Cels = ((Fahr - 32) / 9) * 5;
printf ("Uveden teplota prevedena do Celsiovy stupnice je %f řC", Cels);
printf("\n\n Dalsi vypocet? [A/N]");
while(toupper(getch())=='A');
(void) getch();
return 0;
}
3
Jazyk C patří mezi tzv. kompilační jazyky. Nemá příkazy jako interpretační jazyky – např.
TurboBasic. C++ má asi dvacet klíčových slov. Na každou operaci voláme funkci, která je
v některé z knihoven. Název knihovny je nutno v programu uvést, aby bylo možno zadanou
funkci najít. Program je hledá v hlavičce. Každý program se skládá z několika základních
prvků. Jsou jimi klíčová slova (např. char, for nebo return), která tvoří množinu, která
představuje slovní zásobu jazyka. Dále se v programu objevují různé názvy proměnných
(např. Jmeno), případně názvy funkcí. Nedílnou součástí programu jsou výrazy jako např.
a=b+c , kdy pomocí operací zpracováváme potřebná data. K provedení operací patří také
množina operátorů, mezi které řadíme i operátor + sloužící k sečtení dvou čísel. Další součástí
programu v jazyce C jsou interpunkční znaky – např středník ukončující příkaz, nebo složená
závorka vymezující např. tělo funkce.
Program v jazyce C tedy obsahuje:
 klíčová slova
 jména (identifikátory)
 konstanty
 řetězové proměnné (literály)
 operátory
 interpunkční znaky
Jazyk C rozlišuje mezi velkými a malými písmeny. Jako příklad uveďme slovo while.
Ve spojení s nějakou podmínkou – (může jí být v motivačním programu použité
Fahr<=horniMez) představuje jednoznačný příkaz „opakuj vše, co následuje ve složených
závorkách, dokud je podmínka splněna“ (zde: dokud proměnná Fahr menší nebo rovna
proměnné horniMez). Zapíšeme-li však do programu wHiLe nebo WhilE, nebude je
kompilátor C chápat jako klíčové slovo, ale jako názvy dvou různých proměnných.
Pro oddělování jednotlivých klíčových slov užíváme vhodných mezer, aby bylo možno
zdrojový text dobře číst.
Ukázka dobře čitelného kódu
Ukázka hůře čitelného kódu
for(i=0; i<0; i=i+1)
{
y=y+1;
}
for(i=0;
i<0;
i=i+1) {y=y+1}
(zapsano zacatecnikem)
nebo
for(i=0; i<10; i++) y++;
(zapsano profikem).
Součástí zdrojového kódu jsoou také komentáře programátora. Uvádí jej lomítko a hvězdička.
printf („Tisk výsledku:“)
/*Tiskne informaci na obrazovku */
případně dvě lomítka
printf („Tisk výsledku:“)
//Tiskne informaci na obrazovku
4
Komentáře jsou kompilátorem považovány za oddělovací znaky Mohou se vyskytovat i
uprostřed výrazu a kompilátor je vypustí… Například:
int /*nazev typu / pocitadlo / idetifikator promenne*/;
k = i /* radek*/ + j /* sloupec*/
Klíčová slova v jazyce C
těchto slov nesmí použít programátor jako identifikátorů – tedy jako jmen funkcí,
proměnných nebo symbolických konstant.
Seznam klíčových slov v jazyce C
auto
const
double
float
int
short
struct
unsigned
break
continue
else
for
long
signed
swich
void
case
default
enum
goto
register
sizeof
typedef
volatile
char
do
extern
if
return
static
union
while
Identifikátor
Všem typům jmen se v jazyce C říká idetifikátory. Pro vytvoření jména lze použít pouze:
1) písmene a…z a A…Z
2) číslice 0…9
3) znak podtržítka (_)
4) prvním znakem nesmí být číslice
Délka identifikátoru je omezena na 6 u externího identifikátoru a pro tzv. interní
identifikátory na hodnotu 31.
int toto_je_velmi_dlouhy_identifikator_promenne_typu_int;
float toto_je_velmi_dlouhy_identifikator_promenne_typu_float;
Podle normy ANSI C je zpracováno z uvedeného řetězce pouze prvních 31 znaků. Poněvadž
se názvy proměnných liší až za úrovní 31. znaku, bude je ANSI identifikátor považovat za
stejné a bude hlásit chybu. Použijeme-li Visual C, identifikátor bude řetězce rozlišovat,
protože rozpoznává 247 znaků. Použitím Visual C by chybové hlášení nenásledovalo, řetězce
by byly odlišeny.
Konstanta.
Konstatnta je číslo, znak nebo řetězec znaků, který můžeme použít v programu jako hodnotu.
Jazyk C podporuje čtyři typy konstant:
 Reálné konstanty
 Celočíselné konstanty
 Výčtové konstanty
5
 Znakové konstanty
Konstanty mají svůj typ určený syntaxí jejich zápisu.
Ukázka použití konstanty v programu
#include <stdio.h>
int main()
{
double PI =3.1415926535892384636433832795;
/*realna konst, konst v plovouci radove carce*/
double polomer, obvod, obsah;
printf ("Zadej polomer kruhu: ");
/*Konstantni retezec*/
scanf ("%lg", &polomer);
if (polomer<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Polomer musi byt cislo vetsi nez nula !");
return 1;
}
obvod = 2 * PI * polomer;
obsah = PI * polomer * polomer;
printf ("\n Obvod kruhu = %g, Obsah kruhu = %g\n", obvod, obsah);
return 0;
}
Toto ovšem není ukázka použití konstanty v pravém toho slova smyslu, nýbrž proměnné, jejíž
hodnota se běhen programu náhodou nemění. Konstanta v pravém slova smyslu se použije
následovně:
#include <stdio.h>
#define PI 3.1415926535892384636433832795
int main()
{
double polomer, obvod, obsah;
printf ("Zadej polomer kruhu: ");
/*Konstantni retezec*/
scanf ("%lg", &polomer);
if (polomer<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Polomer musi byt cislo vetsi nez nula !");
return 1;
}
obvod = 2 * PI * polomer;
obsah = PI * polomer * polomer;
printf ("\n Obvod kruhu = %g, Obsah kruhu = %g\n", obvod, obsah);
return 0;
}
Zde PI není deklarovaná proměnná, ale všude v programu, kde je napsáno PI, překladač
nahradí tento řetězec řetězcem 3,141592654.
Celočíselné konstanty
Celočíselné konstanty mohou být v jazyce C vyjádřeny ve třech různých číselných
soustavách: desítkové (dekadické), osmičkové (oktalové) a šestnáctkové (hexadecimální).
Oktalová a hexadecimální soustava mají za základ mocninu čísla 2. Desítkové konstanty jsou
zadávány pomocí číslic 0….9. Oktalové číslice mohou používat čísel 1.…7.
6
Desítkové číslo, které běžně používáme představuje posloupnost řádů.
Kupř. 625 v desítkové soustavě představuje zápis 6 . 102+ 2 . 101 + 5 . 100
Jedná se tedy vlastně o zápis cifer „6“ „2“ „5“ v místech přiřazujících jim určitý řád.
Obdobně konstruujeme číslo ve dvojkové soustavě :
převádíme-li tedy (625)10 do dvojkové soustavy, pak si musíme uvědomit, že řád takového
čísla určuje vhodná mocnina ne už čísla „deset“, ale čísla „dvě“.
29 = 512
28 = 256
27 = 128
26 = 64
25 = 32
24 = 16
23 = 8
22 = 4
21 = 2
20 = 1
1 . 29 0 . 28 0. 27 1 . 26 1 . 25 1 . 24 0 . 23 0 . 22 0 . 21 1 . 20
512 + 0 + 0 + 64 + 32 + 16 + 0 + 0 + 0 + 1
576 608
624
625
83 = 512
82 = 64
81 = 8
80 = 1
1.83 + 1.82 + 6.81 + 1.80 = 625
162 = 256
161 = 16
160 = 1
2.162 + 7.161 + 1.160 = 625
Hledané dvojkové číslo je tedy
(1 0 0 1 1 1 0 0 0 1)2
(1011100001)2
Hledané osmičkové číslo je (1161)8
Hledané šestnáctkové číslo je tedy (271)16
Šestnáctková soustava má oproti předchozím soustavám z principu dané symboly navíc.
Písmenu A odpovídá hodnota 10, B=11, C=12 D=13, E=14 a F=15.
Použijme nyní ke zpětnému převodu do desítkové soustavy šestnáctkové číslo215E.
(215E)16 = (2.163) + (1.162) + (5 . 161) + (14.160) = (2 . 4096) + (1 . 256) + (5 . 16) + (14 . 1) = (8542)10
Nebo
(37BC)16 = (3.163) + (7.162) + (11 . 161) + (12.160) = (3 . 4096) + (7 . 256) + (11 . 16) + (12 . 1) = (14268)10
V následujícím textu se nachází výpis programu, který řeší převod z desítkové do dvojkové,
osmičkové a šestnáctkové soustavy.
/*
Prevod cisla do dvojkove soustavy
*/
#include <conio.h>
#include <stdio.h>
#include <ctype.h>
void Prevod(unsigned long X, int Z);
7
void main(void)
{
char c;
unsigned long X10;
do
{
clrscr();
printf("Zadej cele cislo v desitkove soustave\n");
scanf("%lu",&X10);
printf("Hledane dvojkove cislo je
"); Prevod(X10,2);
printf("Hledane osmickove cislo je
"); Prevod(X10,8);
printf("Hledane sestnactkove cislo je ");
Prevod(X10,16);
printf("\nDalsi prevod? (A/N)");
c=toupper(getch());
}
while(c=='A');
}
void Prevod(unsigned long X, int Z)
/*
Funkce pro prevod cisla z desitkove soustavy do jine
X...prevadene cislo
Z...zaklad pozadovane soustavy
*/
{
int *Y,i=0;
while(X)
{
Y[++i]=X%Z;
// % = modulo
X/=Z;
}
for(;i>0;i--)
{
if(Y[i]<10) printf("%c",Y[i]+48);
else
printf("%c",Y[i]+55);
}
printf("\n");
}
A nyní již opravdu začínáme …
Po úvodní motivaci do práce s C++ si předvedeme některé ze základních funkcí.
Další program ukazuje způsob použití C++ k zobrazení prostého textu. Naučíme se používat
funkci printf a formátování textového výstupu. Dalším prvkem k vysvětlení je použití
knihovny. Příkazy, kterých bude v programu použito, se načítají z knihovny, kde mají své tzv.
prototypy. Naší knihovnou je „Standart input output“ hlavičkový soubor, který se jmenuje
stdio.h a slouží k informování překladače jazyka C, že budeme používat existující
8
knihovní funkce pro načtení dat z klávesnice a následný výpis výsledků na obrazovku. Dále si
povšimněme, že /*
Každý program v jazyce C musí obsahovat alespoň jednu funkci, která se jmenuje
main. Tato funkce nemá žádné parametry.
Proto jsou za ní uvedeny prázdné kulaté závorky. Případně v nich může být klíčové slovo
void. Deklarace main jako funkce typu int (celé číslo) souvisí s příkazem return na
konci programu (funkce main vrací hodnotu 0, ovšem v tomto případě nikoli jiné (volajici)
funkci, ale systému – v našem případě (DOSu).
V zásadě platí, že návratová hodnota 0 znamená bezchybné ukončení programu.
Vyšší hodnoty jsou ruzné druhy předpokládaných chyb, které lze takto vygenerovat.
Osobní zkušenost autora:
Já obvykle deklaruji main jako void, tj. bez návratové hodnoty. V mém podání by tedy prvni řádek programu
zněl: void main(void)
/*
program v jazyce C++
Zobrazeni latinskych citatu
*/
#include <stdio.h>
int main()
{
printf ("\n");
// vynechame radek v textu
printf ("\n Slavne vyroky mudrcu z reckych spisovatelu,\n");
printf ("ktere se zachovaly v prekladu Erasma Rotterdamskeho\n\n");
printf ("Periandres z Korinthu... \n\n\n");
printf ("Veritati adhaereto ............Pravdy se pridrz \n");
printf ("Laudato honesta .............Chval poctive veci \n");
printf ("A vitiis abstine ..Od neslechetnosti se vzdaluj \n");
printf ("Beneficium repende ....Za dobrodini se odplacuj \n");
printf ("Litem oderis ............Svar mej v nenavisti\n
");
printf ("Magistratum metue ................Ouradu se boj \n");
printf ("Litem oderis ..............Svar mej v nenavisti \n");
printf ("Ne quavis de re doleas..Nermut se pro kazdou vec\n");
printf (" \n");
printf ("Periandres z Ausonia \n ");
printf ("\n");
printf ("Multis terribilis, caveto multos ..Koho se mnozi
boji, ten se mnohych boji \n ");
printf (" \n");
printf (" \n");
return 0;
}
Použití textů v hlavičkách programů -text lze pomocí grafických znaků
snadno orámovat.
9
/*Text, ktery vyuziva grafickych znaku k oramovani */
/*Program v jazyce C++ */
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
/*
/*
/*
alt + 35 = #
alt + 62 = >
alt + 60 = <
*/
*/
*/
int main()
{
clrscr(); /* prototyp funkce clrscr(); je v knihovne #include
<conio.h> */
/* alt + 123 = {
*/
/* alt + 125 = }
*/
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
printf
("\n"); /* vynechany radek */
(" * * * * * * * * * * * * * * * * * * * * * * * *
(" *
(" *
Program – vyuzivajici oramovani
(" *
--------------------------------(" *
(" *
(" * Pomoci grafickeho znaku – napr. hvezdicky byl
(" *
(" * tento text na obrazovce monitoru oramovan.
(" *
(" * Tak lze napr. zviditelnit hlavicky programu.
(" *
(" * Program je pres veskerou svou narocnost zatím
(" *
(" * volne siritelny. Pripadny zajemce mi vsak
(" *
(" * muze presto zaslat libovolnou financni
(" *
(" * castku. :o)
(" *
(" * * * * * * * * * * * * * * * * * * * * * * * *
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
*\n");
return 0;
}
Následující programy ukazuje použití jednoduchých výpočtů v C++
/* Plocha obdelnika */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
float a, b, plocha, obvod;
10
int main
{
// zde zacina
do
{
clrscr();
printf("Zadej
printf("Zadej
(void)
vypocet
a : "); scanf("%f", &a);
b : "); scanf("%f", &b);
plocha = a*b;
printf("\n Plocha obdelnika je
= %f",
plocha);
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
(void) getch();
return 0;
}
/* Potencialni energie */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
float m, g, h, energie;
int main (void)
// zde zacina vypocet
{
do
{
clrscr();
printf("Zadej hmotnost : "); scanf("%f", &m);
printf("Zadej tihove zrychleni : "); scanf("%f", &g);
printf("Zadej vysku nad nulovou hladinou : ");
scanf("%f", &h);
energie = m*g*h;
printf("\n Potencialni energie je = %f", energie);
printf("\ J");
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
(void) getch();
return 0;
}
/* Hranol */
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<ctype.h>
float a, b, c, objem;
int main (void)
11
{
// zde zacina vypocet
do
{
clrscr();
printf("Zadej a : "); scanf("%f", &a);
printf("Zadej b : "); scanf("%f", &b);
printf("Zadej c : "); scanf("%f", &c);
objem = a*b*c;
printf("\n Objem = %f", objem);
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
(void) getch();
return 0;
}
/* Vypocet elektrickeho odporu */
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<ctype.h>
float i, u, r;
int main (void)
{
// vypocet
do
{
clrscr();
printf("Zadej proud v amperech : "); scanf("%f", &i);
printf("Zadej napeti ve voltech : "); scanf("%f", &u);
r = u/i;
printf("\n Odpor = %f", r);
printf("\ Ohm");
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
(void) getch();
return 0;
}
Program pro výpočet spotřeby s logickou kontrolou reálné konstatnty
/* Spotreba paliva automobilu na 100 km jizdy */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
float cenab,litry,kilometru,spotreba,cenaj,cenak,cenaz,cenav;
int main (void)
{
do
12
{
printf("\n\n\n");
printf("Cena 1 litru paliva : "); scanf("%f", &cenab);
if (cenab<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Sporeba musi byt cislo vetsi nez nula !");
return 1;
}
printf("Kolik bylo ujeto kilometru : "); scanf("%f",
&kilometru);
if (kilometru<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Vzdalenost musi byt cislo vetsi nez nula !");
return 1;
}
printf("Spotreba benzinu na uvedenou vzdalenost : ");
scanf("%f", &litry);
if (litry<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Spotrebovany benzin musi byt cislo vetsi nez nula
!");
return 1;
}
spotreba = 100*litry/kilometru;
cenaj = cenab*litry;
cenak = cenab*litry/kilometru;
cenaz = 30*cenak;
cenav = 200*cenak;
printf("\n Spotreba vozu = %f litru na 100 km", spotreba);
printf("\n Celkova cena jizdy = %f Kc", cenaj);
printf("\n Cena jednoho kilometru jizdy = %f Kc", cenak);
printf("\n Cena cesty do Zlina a zpet = %f Kc", cenaz);
printf("\n Cena cesty na 200 km = %f Kc", cenav);
printf("\n\n Dalsi vypocet? [A/N]");
}
while(toupper(getch())=='A');
(void) getch();
return 1;
}
Barevný text na barevném pozadí – program řešící goniometrické funkce
povšimněme si, že C++ zpracovává goniometrické funkce z míry zadané v radianech. Na tuto
skutečnost je třeba brát zřetel. Proto je proveden převod ze stupňů na radiany.
/* Goniometricke funkce */
{
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
float x, x1, x2, x3, a, b, c;
int main (void)
// zde zacina vypocet
13
do
{
textbackground(LIGHTCYAN);
textcolor(BLUE);
// “BLACK","BLUE","GREEN","CYAN","RED","MAGENTA","BROWN","LIGHTGRAY",
//“DARKGRAY","LIGHTBLUE","LIGHTGREEN","LIGHTCYAN","LIGHTRED",
//“ LIGHTMAGENTA","YELLOW","WHITE"
clrscr();
printf("\n\n\n\n\n\n\n");
printf("
Uhel (stupne) : "); scanf("%f", &x1);
printf("
Uhel (minuty) : "); scanf("%f", &x2);
printf("
Uhel (vteriny): "); scanf("%f", &x3);
if (x1<0.0)/*realna konstanta - logicky test*/
{
printf("\n\n");
printf("
Uhel musi byt cislo vetsi nez nula !\n");
printf("
--------------------------------------");
}
if (x2<0.0)
{
printf("\n\n");
printf("
Uhel musi byt cislo vetsi nez nula !\n");
printf("
--------------------------------------");
}
if (x3<0.0)
{
printf("\n\n");
printf("
Uhel musi byt cislo vetsi nez nula !\n");
printf("
--------------------------------------");
}
x = ((3600*x1+60*x2+x3)/3600);
a = sin (3.1415926535892384636433832796 * x/180);
b = cos (3.1415926535892384636433832796 * x/180);
c = tan (3.1415926535892384636433832796 * x/180);
printf("\n\n\n
SIN X = %f", a);
printf("
COS X = %f", b);
printf("
TAN X = %f", c);
printf("
-------------------");
printf("
------------------");
printf("
-----------------");
printf("\n\n\n\n\n
Dalsi vypocet? [A/N]");
}
while(toupper(getch())=='A');
(void) getch();
return 0;
}
Výpočet velikosti úhlu ze známé hodnoty goniometrické funkce
/* Urceni velikosti uhlu z hodnoty goniometricke funkce */
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<ctype.h>
float x, x1, x2, x3, a, b, c, alfa, beta, gama;
void Hlavicka(void);
int main (void)
{
Hlavicka();
do
{
14
clrscr();
printf("\n\n\n\n\n\n\n");
printf("
sinus : "); scanf("%f", &x1);
printf("
cosinus : "); scanf("%f", &x2);
printf("
tangens : "); scanf("%f", &x3);
if (x1<0.0)/*realna konstanta - logicky test*/
{
printf("\n\n");
printf("
printf("
}
if (x2<0.0)
{
printf("\n\n");
printf("
printf("
}
if (x3<0.0)
{
printf("\n\n");
printf("
printf("
}
Uhel musi byt cislo vetsi nez nula !\n");
--------------------------------------");
Uhel musi byt cislo vetsi nez nula !\n");
--------------------------------------");
Uhel musi byt cislo vetsi nez nula !\n");
--------------------------------------");
x = ((3600*x1+60*x2+x3)/3600);
a = asin (x1);
b = acos (x2);
c = atan (x3);
alfa=a*(180/3.1415926535897932384626433832795);
beta=b*(180/3.1415926535897932384626433832795);
gama=c*(180/3.1415926535897932384626433832795);
printf("\n\n\n
printf("
printf("
printf("
printf("
printf("
printf("\n\n\n\n\n
alfa
beta
gama
= %f", alfa);
= %f", beta);
= %f", gama);
-----------------");
-----------------");
-----------------");
Dalsi vypocet? [A/N]");
}
while(toupper(getch())=='A');
(void) getch();
return 0;
}// ohraniceni hlavicka(void)
void Hlavicka(void)
// zahlavi nove funkce
{// ohraniceni hlavicka(void)
clrscr();
// prototyp funkce clrscr() je v knihovne conio.h
printf ("\n"); // vynechany radek
printf ("
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
| Program pro vypocet funkci sin, cos, tan
|\n");
printf ("
| ---------------------------------------|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
| Nejprve zadame zvoleny uhel ve stupnich
|\n");
printf ("
| pak se program dotazuje na hodnotu v minutach |\n");
printf ("
|
a nakonec ve vterinach.
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
| Stisknete libovolnou klavesu, program
|\n");
printf ("
|
bude pokracovat ...
|\n");
printf ("
|
Free, only for you... :o)
|\n");
printf ("
|
Program byl vytvoren v jazyce C++.
|\n");
printf ("
| ZS Komenskeho 78 Zlin - Malenovice; tel.: 57 710 21 87
|\n");
printf ("
|
|\n");
printf ("
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
getch();
}// uzavrena prvni
15
Okénko pro text – příkaz if – podmínka ohraničující výběr v intervalu
#include<stdio.h>
main()
{
int c;
if ((c = getchar()) >='A'&& c <= 'Z')
/* if ((c = getchar()) >='a'&& c <= 'z') */
printf("%d\n", c);
/*
/*
/*
/*
/*
&& je logicky soucin AND*/
povel printf("%d\n", c); zabezpeci psani ordinarniho cisla*/
pro vsechna velka pismena od A do Z*/
pro kontrolu lze v textovem editoru napsat Alt + ordinarni cislo*/
vysledek sve práce muzeme spatřit v prostředí DOS-Shell*/
}
Počítáme cenu hovoru v síti T- Mobile
/* nazev programu C++: Mobil */
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <ctype.h>
void Hlavicka (void);
void main (void)
{
// prvni
Hlavicka();
do
{// druha uvozuje cyklus do
float x, y, rozdil;
textbackground(LIGHTCYAN);
textcolor(BLUE);
clrscr();
char jmeno[30];
char cislo[11];
char prijmeni[30];
printf("\n\n
Zadejte Vase jmeno:
printf("\n
Zadejte Vase prijmeni:
"); scanf("%s", jmeno);
"); scanf("%s", prijmeni);
printf("\n
Zadejte (prosim bez mezer) cislo sveho T-Mobile: "); scanf ("%s", cislo);
printf("\n
-------------------------------------------------------------- ");
printf("\n\n
Tak at zije %s %s s mobilem cislo %s ! \n", jmeno, prijmeni, cislo);
printf("\n\n\n
Zavolejte *101# a zadejte konto pred hovorem (pred odeslanim SMS): ");
scanf("%f", &x);
16
printf("\n
Zavolejte *101# a zadejte stav konta po hovoru (po odeslani SMS):
scanf("%f", &y);
");
printf(" \n
------------------------------------------------------------------------- ");
printf("\n\n
Cena hovoru z Vaseho mobilu cislo %s je %f Kc", cislo, rozdil);
printf("\n\n\n
Dalsi vypocet? [A/N]");
} // druha uyavrena - ukonceni cyklu do
while(toupper(getch())=='A');
}// ohraniceni hlavicka(void)
void Hlavicka(void)
// zahlavi nove funkce
{// ohraniceni hlavicka(void)
clrscr();
// prototyp funkce clrscr() je v knihovne conio.h
printf ("\n"); // vynechany radek
printf (" |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf ("|
|\n");
printf (" |
|\n");
printf ("|
|\n");
printf ("|
Program pro vypocet ceny hovoru popr. SMS
|\n");
printf ("|
----------------------------------------|\n");
printf (" |
|\n");
printf (" |
Zejmena pri komunikaci mezi T-Mobile *
Eurotel, nebo
|\n");
printf (" |
T-Mobile * Oskar dochazi k nepresnostem v urcovani ceny
|\n");
printf (" |
hovoru ci odeslane SMS.
|\n");
printf (" |
Tento program resi problem zadanim vyse konta, ktere si
|\n");
printf (" |
uzivatel site T-Mobile bezplatne vyvola na cisle *101#
|\n");
printf (" |
a zjisti stav konta pred hovorem a po hovoru.
|\n");
printf (" |
Z rozdilu stavu konta pred a po cinnosti naseho telefonu
|\n");
printf (" |
urci program skutecnou cenu, kterou nam uctuje operator.
|\n");
printf (" |
|\n");
printf ("|
Program byl vytvoren v jazyce C++.
|\n");
printf ("|
ZS Komenskeho 78 Zlin - Malenovice; tel.: 57 710 21 87
|\n");
printf (" |
|\n");
printf ("
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
getch();
}// uzavrena prvni
Rozměry koule určené z měření na jejím povrchu
/* nazev programu C++ Planetka */
#include
#include
#include
#include
<stdio.h>
<conio.h>
<math.h>
<ctype.h>
void Hlavicka (void);
void main (void)
{
// prvni
Hlavicka();
do
{// druha uvozuje cyklus do
float x, w, polomer, polomerkm, objem, hmotnostzul, hmotnostfe, hmotnostvod, zrychlenizul,
zrychlenife, zrychlenivod, objemkm, zrychleniz, hmotnostzem;
textbackground(LIGHTCYAN);
textcolor(BLUE);
clrscr();
printf("\n
scanf("%f", &x);
Zadej vzdalenost L v metrech, odkud vidis tycku vysky H: ");
if (x<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Vzdalenost musi byt cislo vetsi nez nula !");
}
printf("
Zadej vysku tycky H (v metrech): "); scanf("%f", &w);
17
if (w<=0.0) /*realna konstanta - logicky test*/
{
printf ("%s", "Polomer musi byt cislo vetsi nez nula !");
}
polomer = (((x/2*x/2)-(w*w)) + w*w)/(2*w);
polomerkm = polomer/1000;
objem = 4/3 * 3.1415926535892384636433832795 * (polomer * polomer * polomer);
objemkm = objem/1000000000;
hmotnostzul = 2500 * objem;
hmotnostfe = 7800 * objem;
hmotnostvod = 1000 * objem;
hmotnostzem = 5520 * objem;
zrychleniz = hmotnostzem/(polomer*polomer)*0.0000000000667;
zrychlenizul = hmotnostzul/(polomer*polomer)*0.0000000000667;
zrychlenife = hmotnostfe/(polomer*polomer)*0.0000000000667;
zrychlenivod = hmotnostvod/(polomer*polomer)*0.0000000000667;
printf("
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
printf("\n\n
Polomer = %f m", polomer);
printf("
Polomer = %f km", polomerkm);
printf("\n\n
Objem koule = %f m*m*m", objem);
printf("\n
Objem koule = %f km*km*km", objemkm);
printf("\n\n
printf("\n
Hmotnost zelezne koule = %f kg", hmotnostfe);
Zrychleni = %f N/kg", zrychlenife);
printf("\n\n
printf("\n
Hmotnost koule o hustote Zeme = %f kg", hmotnostzem);
Zrychleni = %f N/kg", zrychleniz);
printf("\n\n
printf("\n
Hmotnost kamenne koule = %f kg", hmotnostzul);
Zrychleni = %f N/kg", zrychlenizul);
printf("\n\n
Hmotnost koule z vodniho ledu = %f kg", hmotnostvod);
printf("\n
Zrychleni = %f N/kg", zrychlenivod);
printf("\n\n\n
Dalsi vypocet? [A/N]");
} // druha uzavrena - ukonceni cyklu do
while(toupper(getch())=='A');
}// ohraniceni hlavicka(void)
void Hlavicka(void)
// zahlavi nove funkce
{// ohraniceni hlavicka(void)
clrscr();
// prototyp funkce clrscr() je v knihovne conio.h
printf ("\n"); // vynechany radek
printf ("
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
Program pro vypocet polomeru nezname planetky ...
|\n");
printf ("
|
--------------------------------------------------|\n");
printf ("
|
|\n");
printf ("
|
Snad kazdy z nas nekdy vystupoval vzhuru do kopce,
|\n");
printf ("
|
kolem mohla byt mlha a samotny kopec mohl vypadat jako
|\n");
printf ("
|
osirela planetka, domov Exuperyho Maleho prince.
|\n");
printf ("
|
Jak muze byt planetka - hora - asi velika? Jakou by
|\n");
printf ("
|
mela asi pritazlivost? Jakou by mela asi hmotnost? Jeji
|\n");
printf ("
|
rozmery muzeme napr. urcit tak, ze odkrokujeme vzdalenost
|\n");
printf ("
|
mezi dvema tyckami. Vzdalenost je dana bodem, kde vidime
|\n");
printf ("
|
jejich vrcholky v jedne primce s bodem zakriveni nami me|\n");
printf ("
|
rene koule. Hodnoty zadame do programu.
|\n");
printf ("
|
|\n");
printf ("
|
~~~~~~~~~~~~~~~~~~
|\n");
printf ("
|
Program byl vytvoren v jazyce C++.
|\n");
printf ("
|
ZS Komenskeho 78 Zlin - Malenovice; tel.: 57 710 21 87
|\n");
printf ("
|
|\n");
printf ("
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
getch();
}// uzavrena první
Použití „Switch“, „Case“ a „Break“ – větvení programu na sekce
#include
#include
#include
#include
<stdio.h>
<conio.h>
<ctype.h>
<math.h>
18
float x, y,plus,minus, krat, deleno;
char zn;
void Hlavicka(void);
// prototyp funkce "Hlavicka"
void main (void)
{
Hlavicka();
do
{
textbackground(LIGHTCYAN);
textcolor(BLUE);
clrscr();
printf ("\n Mala kalkulacka");
printf ("\n ---------------");
printf ("\n Priklady zadavej ve tvaru napr. -1.23 + 4.68");
printf ("\n
-0.72 * 3.41");
gotoxy (20,8);
printf("\n Zadej priklad : "); scanf ("%f%c%f",&x,&zn,&y);
gotoxy (20,11);
switch (zn)
{
case '+': printf ("\n\nScitam");
plus = x+y;
printf ("\n Vysledek prikladu %f + %f je: %f", x,y,plus);
(void)getch();
break;
case '-': printf ("\n\nOdcitam");
minus = x-y;
printf ("\n Vysledek prikladu %f - %f je: %f", x,y,minus);
(void)getch();
break;
case '*': printf ("\n\nNasobim");
krat = x*y;
printf ("\n Vysledek prikladu %f * %f je: %f", x,y,krat);
(void)getch();
break;
case '/': printf ("\n\nDelim");
if (y != 0)
printf ("\n Vysledek prikladu %f / %f je: %f", x,y,deleno= x/y);
else
printf ("\n ERROR ............ jmenovatel se rovna 0");
(void)getch();
break;
}
printf("\n\n Dalsi vypocet? [A/N]");
}while(toupper(getch())=='A');
}
void Hlavicka(void)
// zahlavi nove funkce
{
clrscr();
// prototyp funkce clrscr() je v knihovne conio.h
printf ("\n"); // vynechany radek
printf ("
|~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
Program pro vypocet souctu, rozdilu, podilu a soucinu
|\n");
printf ("
|
------------------------------------------------------|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
Program pozaduje zadani prikladu. Resi scitani
|\n");
printf ("
|
odcitani, nasobeni a deleni pouze mezi dvema cisly.
|\n");
printf ("
|
Po potvrzeni klavesou ENTER hlasi program provadenou
|\n");
printf ("
|
operaci a nasledne napise vysledek nami zadane ulohy.
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
|
|\n");
printf ("
| Stisknete libovolnou klavesu, program bude pokracovat ...
|\n");
printf ("
|
Free, only for you... :o)
|\n");
printf ("
|
Program byl vytvoren v jazyce C++.
|\n");
printf ("
|
ZS Komenskeho 78 Zlin - Malenovice;tel.: 57 710 21 87
|\n");
printf ("
|
|\n");
printf ("
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
getch();
}// uzavrena první
19
20

Podobné dokumenty

Stáhnout e

Stáhnout e Abyste si mohli vyzkoušet vše, co je v brožuře uvedeno, musíte mít kopii aplikace Visual Basic.NET, která tvoří součást nové verze Visual Studio.NET. Než ji budete moci využívat, budete možná muset...

Více

Microsoft Excel je tabulkový procesor, který je nedílnou součástí

Microsoft Excel je tabulkový procesor, který je nedílnou součástí automaticky vytvořený součtový vzorec =SUMA(C3:I3). Pamatujme si, ţe kaţdý vzorec v programu EXCEL začíná znakem =. SUMA je označením pro součet a (C3:I3) označuje začátek a konec řady buněk, v níţ...

Více

prezentaci

prezentaci Čı́sla je možné porovnávat pomocı́ operátorů

Více

1 Úvod do Turbo Pascalu

1 Úvod do Turbo Pascalu Načítá do paměti proměnné, s kterými potom program může pracovat. My jsme si zvolili proměnnou typu string, tedy řetězec, která slouží k práci se znaky. Tzn. můžeme pracovat jak s písmeny, tak s čí...

Více

ZÁKLADY PROGRAMOVACÍHO JAZYKA TURBO PASCAL

ZÁKLADY PROGRAMOVACÍHO JAZYKA TURBO PASCAL Vždy však musíme dodržet pravidlo, že před každým použitím syntaktického objektu musí být tento objekt ji definován nebo deklarován. Výjimku má pouze definice typu ukazatel (o té ale mnohem později...

Více

Zde - Penguin

Zde - Penguin Perl je programovacím jazykem primárně určeným jako pomůcka pro správu systému. Kombinuje v sobě prvky jazyka C, awk, grepu, sedu, a Bourne shellu. Perl je výtečným nástrojem pro zpracování textu. ...

Více