Je k i druhá dňa dňa. Vývoj lekcie programovania lineárnych algoritmov. Číselné typy údajov
| § 3.3. Programovanie lineárnych algoritmov
Lekcia 26
§ 3.3. Programovanie lineárnych algoritmov
Kľúčové slová:
skutočný dátový typ
celočíselný dátový typ
znakový dátový typ
reťazcový dátový typ
booleovský dátový typ
Najjednoduchšie sú programy, ktoré implementujú lineárne algoritmy. Všetky príkazy v nich sa vykonávajú postupne, jeden po druhom.
Pri programovaní lineárnych algoritmov sa pozrime bližšie na dátové typy typu integer, boolean, znak a reťazec.
3.3.1. Číselné typy údajov
Základné číselné dátové typy už poznáte celé číslo a reálny. Sú na ne použiteľné štandardné funkcie, z ktorých niektoré sú uvedené v tabuľke. 3.3.
Tabuľka 3.3
Štandardné funkcie Pascal
Skúmanie, ako fungujú funkcie okrúhly, int a frac, aplikujúc ich na nejaké skutočné X. Príslušný program bude vyzerať takto:
Spustite program niekoľkokrát pre každé x ∈ (10,2; 10,8; -10,2; -10,8). Čo môžete povedať o type výsledku každej z týchto funkcií?
3.3.2. celočíselný dátový typ
Nasledujúce operácie sa vykonávajú s celými číslami v Pascale: sčítanie (+), odčítanie (-), násobenie (*), získanie celočíselného kvocientu (div), získanie celého zvyšku po delení (mod) a delenie (/). Výsledky prvých piatich operácií sú celé čísla. Výsledkom operácie delenia môže byť reálne číslo.
Zoberme si príklad použitia operácií div a mod, napísanie programu v Pascale na nájdenie súčtu číslic prirodzeného trojciferného čísla zadaného z klávesnice.
Využívame skutočnosť, že kladné trojciferné číslo môže byť vyjadrené ako nasledujúci súčet: x - a * 100 + 6 * 10 + c, kde a, b, c sú číslice čísla.
Aký je súčet číslic 123? A čísla -123? Zhodujú sa vaše výsledky s výsledkami v programe? Ako môžete vysvetliť a opraviť chybu v programe?
3.3.3. Typy údajov znakov a reťazcov
Hodnota hodnoty znaku (typu znaku) v jazyku Pascal je ktorýkoľvek zo znakov, ktoré možno získať na obrazovke stlačením jedného z klávesov alebo kombinácie klávesov na klávesnici, ako aj niektoré ďalšie znaky, vrátane neviditeľných. Sada takýchto symbolov pozostáva z 256 prvkov, z ktorých každý má podľa použitej kódovej tabuľky priradený kód - číslo 0 až 255.
Znaky zodpovedajúce prvým 32 kódom sú riadiace znaky a zvyšok sú zobrazovacie znaky. Zobrazené znaky obsahujú aj medzeru, ktorá má kód 32.
Interpunkčné znamienka, znaky aritmetických operácií, čísla, veľké a malé písmená latinky zodpovedajú kódom od 33 do 127. Písmená národnej abecedy zodpovedajú kódom s číslami 128 a viac.
V texte programu je možné zadať konštantu typu znaku uzavretím ľubovoľného zobrazeného znaku do apostrofov: "5", "B", "*".
Ak sa hodnota znakovej premennej číta z klávesnice, mala by byť napísaná bez apostrofov.
Na nájdenie kódu znaku použite funkciu ord, kde je znak daný ako parameter.
Na zistenie znaku po kóde použite funkciu chr, kde sa ako parameter uvádza kód znaku.
Hodnota reťazca (typ string) je ľubovoľná postupnosť znakov uzavretá v apostrofoch. V Pascale (ako napr algoritmický jazyk) reťazce môžu byť zreťazené.
Príklad. Napíšme program v jazyku Pascal, v ktorom sa pre písmeno zadané z klávesnice zobrazí jeho kód na obrazovke. Potom sa na obrazovke zobrazí reťazec, ktorý je sekvenciou troch písmen použitej kódovej tabuľky: písmeno predchádzajúce pôvodnému; začiatočné písmeno; list nasledujúci za originálom.
3.3.4, Booleovský dátový typ
Ako viete, boolovské hodnoty majú iba dve hodnoty; v Pascale je to tak falošný a pravda. Tieto konštanty sú definované tak, že false< true.
Booleovské hodnoty sa získavajú ako výsledok porovnávacích operácií čísel, znakov, reťazcov a boolovské výrazy. Preto v Pascale možno k výsledku porovnávacej operácie priradiť booleovskú premennú.
Príklad. Napíšme program, ktorý určí pravdivosť tvrdenia „Číslo n je párne“ pre ľubovoľné celé číslo n.
Nechaj ans je boolovská premenná a n je celočíselná premenná. Potom v dôsledku vykonania operátora priradenia
ans:=n mod 2 = 0
premenlivý ans bude priradená hodnota pravda pre ľubovoľné párne n a falošný inak.
Booleovským premenným je možné priradiť hodnoty logických výrazov vytvorených pomocou vám známych logických funkcií a, alebo nie, ktoré sú príslušne označené v Pascale a, alebo, nie.
Príklad. Napíšme program, ktorý určí pravdivosť tvrdenia „Trojuholník s dĺžkami strán a, b, c je rovnoramenný“ pre ľubovoľné celé čísla a, b, c.
NAJDÔLEŽITEJŠIE
Jazyk Pascal používa skutočné, celočíselné, znakové, reťazcové, logické a iné dátové typy. Sú pre ne definované zodpovedajúce operácie a funkcie.
Otázky a úlohy
1. Oboznámte sa s prezentačnými materiálmi k paragrafu obsiahnutými v elektronickej prílohe učebnice. Tieto materiály použite pri príprave odpovedí na otázky a dokončovaní úloh.
2. Pre dané x vypočítajte y pomocou vzorca y \u003d x 3 + 2,5x 2 - x + 1.
kde:
a) je zakázaná prevádzka zvyšovania výkonu;
b) v jednom priraďovacom operátore nemôžete použiť viac ako jednu aritmetickú operáciu (sčítanie, násobenie, odčítanie);
c) v programe nemožno použiť viac ako päť operátorov priradenia.
Nápoveda : transformujte výraz do nasledujúceho tvaru: y \u003d ((x + 2,5) x - 1) x + 1.
3. Podľa uvedených súradníc bodov A a. Vypočítajte dĺžku segmentu AB.
Nápoveda . Vzdialenosť d medzi bodmi A (x a, y a) a B (x b, y b) je vyjadrená vzorcom.
4. Dĺžky strán trojuholníka a, b, c sú známe. Napíšte program na výpočet plochy tohto trojuholníka.
5. Súradnice vrcholov A, B, C trojuholníka sú známe. Napíšte program na výpočet plochy tohto trojuholníka.
6. Ak je výška dane vypočítaná v rubľoch a kopejkách, daňová služba ju zaokrúhli na najbližší rubeľ (do 50 kopejok - s deficitom, nad 50 kopejok (vrátane 50) - s prebytkom). Pomocou počítača zadajte presnú sumu dane a zobrazte, koľko máte zaplatiť.
7. Preskúmajte fungovanie náhodnej funkcie opakovaným spustením programu:
Ako môžete získať náhodné číslo z intervalu (0, x)?
Ako môžete získať náhodné číslo z intervalu (0, x]?
Ako môžete získať náhodné číslo z intervalu (n, x + n)?
8. Jedna spoločnosť vydala žreby troch kategórií: pre mládež, pre dospelých a pre dôchodcov. Čísla lístkov každej kategórie sú v rámci:
pre mládež - od 1 do 100;
pre dospelých - od 101 do 200;
pre dôchodcov - od 201 do 250.
Pomocou počítača náhodne vyberte žreb v každej kategórii.
9. Napíšte program v jazyku Pascal, ktorý pre ľubovoľné prirodzené dvojciferné číslo určí:
a) súčet a súčin jeho číslic;
b) číslo vytvorené permutáciou číslic pôvodného čísla.
10. Napíšte program v jazyku Pascal, ktorý implementuje algoritmus pokladníka, ktorý vydá zákazníkovi drobné s najmenším možným počtom bankoviek 500 (k500), 100 (klOO), 50 (k50) a 10 (klO) rubľov. .
11. Ide k- druhá sekunda dňa. Vytvorte program, ktorý podľa zadania k-tá sekunda dňa určuje, koľko celých hodín h a celé minúty m uplynulo od začiatku dňa. Napríklad, ak k= 13 257 = 3 3600 + 40 60 + 57, potom h= 3 a m = 40.
Zobrazte frázu:
Je... hodín... minút
.Namiesto elips by mal program vydávať hodnoty bzučania, pričom ich oddeľuje od slov presne jednou medzerou.
12. Napíšte program v jazyku Pascal, ktorý vypočíta súčet písmenových kódov v slove „BYTE“.
13. Napíšte program Pascal, ktorý vygeneruje a zobrazí reťazec znakov, ktorých kódy sú 66, 69, 71, 73, 78.
14. Vytvorte program, ktorý požaduje tri reťazcové hodnoty - súvisiace prídavné meno, podstatné meno a sloveso - a potom vytlačí všetky možné frázy pomocou zadaných slov.
15. Vzhľadom na hodnoty celočíselných premenných: a = 10, b = 20. Aká bude hodnota logickej premennej rez po operácii pridelenia?
a) rez:=(a=10) alebo (b>10)
b) rez: = (a>5) a (b>5) a (a<20) and (b<30)
c) rez: = (nie (a<15)) or (b>20)
16. Napíšte program, ktorý predstaví pravda ak je tvrdenie pravdivé, a falošný inak:
a) súčet číslic trojciferného čísla X je párne číslo;
b) trojuholník so stranami a, b, c je všestranný.
Vypočítajte |
||||||
Úloha 2 (program 1_2)
Je k sekunda dňa. Určte, koľko celých hodín (h) a celých minút (m) a sekúnd (s) prešlo do tohto okamihu.
Určte plochu lichobežníka so základňami a, b, výškou h a objemom zrezaného kužeľa, ak vezmeme do úvahy a, b - plochy základne.
3. Určte súradnice ťažiska troch hmotných bodov s hmotnosťami m 1, m 2, m 3 a súradnicami (x 1, y 1), (x 2, y 2), (x 3, y 3).
4. Vypočítajte objem lopty a plochu kruhu pre daný polomer R, nájdite medzi nimi pomer.
5. Vypočítajte mediány trojuholníka na daných stranách a, b, c.
6. Vypočítajte povrch a objem kužeľa pre dané polomery a výšku h.
7. Pre daný polomer nájdite objem gule a povrch.
8. Vypočítajte, aká sekunda dňa je na pozícii ručičiek v h hodinách, m minútach a s sekundách, ako aj uhol (v stupňoch) medzi polohou hodinovej ručičky na začiatku dňa a jej polohou. v určenom okamihu.
9. Zadajte dvojciferné celé číslo x<15. Написать программу перевода его в восьмеричную систему счисления.
10. Zadajte súradnice dvoch bodov (x 1, y 1), (x 2, y 2). Nájdite vzdialenosť medzi nimi.
Laboratórium 2
Programovanie rozvetvených algoritmov. Kontrolné prevodné výkazy
Štruktúra príkazu na prenos podmieneného riadenia:
ak (<выражение>) <оператор 1> inak <оператор 2>;
(if) (inak) - kľúčové slová,
kde<условие>je ľubovoľný boolovský výraz, ktorý môže nadobúdať dve hodnoty: true (TRUE) a false (FALSE);
<оператор>- ľubovoľný operátor jazyka C, končí bodkočiarkou.
Krátka forma podmieneného operátora:
ak (<выражение>) <оператор>;
Operátor bezpodmienečného skoku: ísť do <идентификатор-метка>;
Štítok je identifikátor. Označenie sa umiestni pred príkaz C/C++, na ktorý sa skočí, a oddelí sa dvojbodkou (:).
Príklad 1. Zostavte program na výpočet základného platu podľa nasledujúceho pravidla: ak je pracovná skúsenosť zamestnanca kratšia ako tri roky, potom je plat 100 USD, s pracovnými skúsenosťami od troch do 5 rokov - 150 USD, za 5 rokov plat sa každoročne zvyšuje o 10 USD a pri skúsenostiach presahujúcich 20 rokov je to 300 USD.
Aby sme naprogramovali riešenie tohto problému, definujeme matematickú formuláciu problému:
100 ak ST< 3;
ZP= 150, ak 3 ≤ST 5;
150+ (ST -5)*10, ak 5< ST≤ 20;
300, ak ST > 20;
#include
#include
void main()
( int ST; //ST- zážitok (typ bajt (celé číslo) bez znamienka)
floatZP; //ZP- mzda (pohyblivý typ)
printf("\n Zadajte senioritu");
scanf("%d",&ST);
ak (ST<3) ZP = 100;
inak ak (ST<5) ZP = 150;
inak ak (ST>=20) ZP=300;
inak ZP = 150 + (ST-5) x 10;
printf ("\n Plat = %10,2f$\n",ZP);
Vyberte vyhlásenie prepínač umožňuje v závislosti od hodnoty ľubovoľnej premennej alebo výrazu (výberového kľúča) vykonávať určité operátory označené príslušnými konštantami.
Štruktúra operátora:
prepínač (<выражение>)
prípad<константа 1>: <группа операторов 1>;
prípad<константа 2>: <группа операторов 2>;
prípad<константа N>: <группа операторов N>
predvolená: <операторы>;
}
kde<выражение>-výraz (premenná) akéhokoľvek radového typu;
<константа>je konštanta rovnakého typu ako<выражение>;
<оператор>- ľubovoľný operátor C/C++.
Príklad 2. Vytlačte názov obrazca v závislosti od počtu rohov (trojuholník, štvoruholník, päťuholník, šesťuholník, mnohouholník).
Variant implementácie úlohy pomocou operátora výberu predstavuje SA (obr. 2b) a nasledujúci program:
#include
#include
void main()
{
int T; // T je počet rohov
clrscr(); // vymazať obrazovku
printf("Zadajte počet rohov");
scanf("%d",&T);
spínač (T)
prípad 1: prípad 2: printf ("Toto nie je tvar\n "); prestávka;
prípad 3: printf ("S %d rohmi - trojuholník\n ", T); prestávka;
prípad 4: printf ("S %d rohmi - quad\n ", T); prestávka;
prípad 5: printf ("S %d rohmi - päťuholník\n ", T); prestávka;
prípad 6: printf ("S %d rohmi - šesťuholník\n ", T); prestávka;
predvolená : printf ("S %d rohmi - mnohouholnik\n ", T);
Cvičenie 1 (program 2_1)
Vypočítajte hodnotu funkcie v závislosti od intervalu, do ktorého spadá argument zadaný z klávesnice:
1. Pevnosť ,
a t 2 log t pri 1
,
kde a = -0,5, b = 2 z = 1 pri t<1,
e a t cos b t pri t>2,
2. Pre x ,
na x2,
kde a=2,3 f=x pri 0,3< x 2,
cos(x-a) pre x
,
3.Pre x , (a+b)/(e x + cosx) pri 0 x2,3,
kde a=-2,7,b=-0,27 z = (a+b)/(x+1) pri 2,3 x5,
e x +sinx o 7
,
4.Pre i , a i 4 + b i pre i< 10,
kde a = 2,2, b = 0,3. y = tg(i + 0,5) pre i = 10,
e 2i +
pre i >10,
5. Pre x , x 2 - 7/x 2 pri x<1.3,
kde a = 1,5 y = ax 3 + 7
pri 1,3 x 3,
log(x + 7
) pre x
,
6. Pevnosť [-1.4],
na t<0.1,
kde a = 2,1, b = 0,37. z = pri + b pri 0,1 t 2,
na t
,
7. Pre x a e sin x +2,5 pri x<0.3,
kde a = 1,5. y = e cos x + a pri 0,3 x<4,
(sin x)/ (a + e x) pre x 4,
8. Pre x y = a/x + b x 2 - c pri x
,
kde a=1,8,b=-0,5, c=3,5 (a + bx)/
pri x>1,2,
9.Pre t , t
pre t>a,
kde a = 2,5 z = t sin a t pri t = a,
e-at cos a t at t 10. Pre x , e - bx sin b x na x<2.3, kde a=1,b=3. y= cos bx pri 2,3 e -ax cos b x pri x
,