Ubíhá k-tá vteřina dne. Vypracování lekce o programování lineárních algoritmů. Číselné datové typy

| § 3.3. Programování lineárních algoritmů

Lekce 26
§ 3.3. Programování lineárních algoritmů

Klíčová slova:

Reálný datový typ
celočíselný datový typ
datový typ znaku
datový typ řetězce
booleovský datový typ

Nejjednodušší jsou programy, které implementují lineární algoritmy. Všechny operátory, které obsahují, se provádějí postupně, jeden po druhém.

Při programování lineárních algoritmů se budeme podrobněji zabývat celočíselnými, logickými, znakovými a řetězcovými datovými typy.

3.3.1. Číselné datové typy

Základní numerické datové typy již znáte celé číslo A nemovitý. Platí pro ně standardní vlastnosti, z nichž některé jsou uvedeny v tabulce. 3.3.

Tabulka 3.3

Standardní funkce Pascalu

Pojďme prozkoumat, jak funkce fungují kolo, int A fraс, jejich použití na nějaké skutečné X. Odpovídající program bude vypadat takto:

Spusťte program několikrát pro každé x ∈ (10,2; 10,8; -10,2; -10,8). Co nám můžete říci o typu výsledku každé z těchto funkcí?

3.3.2. Integer datový typ

S celými čísly se v jazyce Pascal provádějí následující operace: sčítání (+), odčítání (-), násobení (*), získání podílu celého čísla (div), získání zbytku celého čísla (mod) a dělení (/). Výsledky prvních pěti operací jsou celá čísla. Výsledkem operace dělení může být reálné číslo.

Uvažujme příklad použití operací div a mod napsáním programu v Pascalu pro zjištění součtu číslic přirozeného trojciferného čísla zadaného z klávesnice.

Využijeme toho, že kladné trojciferné číslo lze vyjádřit jako následující součet: x - a*100 + 6*10 + c, kde a, b, c jsou číslice čísla.

Jaký je součet číslic čísla 123? A čísla -123? Odpovídají vaše výsledky výsledkům programu? Jak lze vysvětlit a opravit chybu v programu?

3.3.3. Znakové a řetězcové datové typy

Hodnota znakové hodnoty (typu znaku) v jazyce Pascal je jakýkoli ze znaků, které lze získat na obrazovce stisknutím jedné z kláves nebo kombinace kláves na klávesnici, a také některé další znaky, včetně neviditelných. . Sada takových symbolů se skládá z 256 prvků, z nichž každý má podle použité kódové tabulky přiřazen kód - číslo od 0 do 255.

Symboly odpovídající prvním 32 kódům jsou kontrolní a ostatní jsou znázorněny. Zobrazené znaky obsahují také mezeru, kód 32.

Interpunkční znaménka, znaky aritmetických operací, čísla, velká a malá písmena latinky odpovídají kódům od 33 do 127. Písmena národní abecedy odpovídají kódům od číslic 128 a výše.

V textu programu lze konstantu typu znaku specifikovat uzavřením libovolného znaku v apostrofech: „5“, „B“, „*“.

Pokud je hodnota znakové proměnné čtena z klávesnice, měla by být zadána bez apostrofů.

Pro nalezení kódu symbolu použijte funkci ord, kde je symbol uveden jako parametr.

K rozpoznání symbolu podle kódu použijte funkci chr, kde je kód symbolu uveden jako parametr.

Hodnota řetězce (typ řetězce) je libovolná posloupnost znaků uzavřená v apostrofech. V Pascalu (jako v algoritmický jazyk) řetězce lze zřetězit.

Příklad. Napišme program v Pascalu, ve kterém se pro písmeno zadané z klávesnice zobrazí na obrazovce jeho kód. Poté se na obrazovce zobrazí řádek, což je sekvence tří písmen použité kódové tabulky: písmeno předcházející původnímu; originální dopis; písmena následující za původním.


3.3.4, Booleovský datový typ

Jak víte, hodnoty logického typu nabývají pouze dvou hodnot; v Pascalu je Nepravdivé A skutečný. Tyto konstanty jsou definovány tak, že false< true.

Booleovské hodnoty se získávají prováděním porovnávacích operací mezi numerickými, znakovými, řetězcovými a logické výrazy. Proto lze v Pascalu logickou proměnnou přiřadit výsledek porovnávací operace.

Příklad. Napišme program, který určí pravdivost výroku „Číslo n je sudé“ pro libovolné celé číslo n.

Nechat ans je booleovská proměnná a n je celočíselná proměnná. Poté v důsledku provedení operátoru přiřazení

ans:=n mod 2 = 0

variabilní ans bude přiřazena hodnota skutečný pro libovolné sudé n a Nepravdivé v opačném případě.

Logickým proměnným lze přiřadit hodnoty logických výrazů vytvořených pomocí vám známých logických funkcí a, nebo ne, které jsou v Pascalu označeny odpovídajícím způsobem a nebo ne.

Příklad. Napišme program, který určí pravdivost tvrzení „Trojúhelník se stranami délky a, b, c je rovnoramenný“ pro libovolná celá čísla a, b, c.


NEJDŮLEŽITĚJŠÍ

Jazyk Pascal používá reálné, celé číslo, znakové, řetězcové, logické a další datové typy. Jsou pro ně definovány odpovídající operace a funkce.

Otázky a úkoly

1. Přečtěte si prezentační materiály k odstavci obsaženému v elektronické příloze učebnice. Tyto materiály použijte při přípravě odpovědí na otázky a plnění úkolů.

2. Pro dané x vypočítejte y pomocí vzorce y = x 3 + 2,5x 2 - x + 1.

kde:

a) operace umocňování je zakázána;
b) v jednom operátoru přiřazení nelze použít více než jednu aritmetickou operaci (sčítání, násobení, odčítání);
c) v programu nelze použít více než pět operátorů přiřazení.

Vodítko : Převeďte výraz do následujícího tvaru: y = ((x + 2,5)x - 1)x + 1.

3. Na daných souřadnicích bodů A a. B Vypočítejte délku úseku AB.

Vodítko . Vzdálenost d mezi body A (x a, y a) a B (x b, y b) je vyjádřena vzorcem.

4. Délky stran trojúhelníku a, b, c jsou známé. Napište program pro výpočet plochy tohoto trojúhelníku.

5. Souřadnice vrcholů A, B, C trojúhelníku jsou známé. Napište program pro výpočet plochy tohoto trojúhelníku.

6. Pokud je částka daně vypočítána v rublech a kopejkách, daňová služba ji zaokrouhlí nahoru na nejbližší rubl (do 50 kopek - s nedostatkem, nad 50 kopejek (včetně 50) - s přebytkem). Pomocí počítače zadejte přesnou částku daně a zobrazte, kolik dlužíte.

7. Prozkoumejte fungování náhodné funkce opakovaným spuštěním programu:

Jak můžete získat náhodné číslo z intervalu (0, x)?

Jak můžete získat náhodné číslo z intervalu (0, x]?

Jak můžete získat náhodné číslo z intervalu (n, x + n)?

8. Jedna společnost vydala tři kategorie losů: pro mládež, pro dospělé a pro důchodce. Čísla vstupenek pro každou kategorii se pohybují od:

pro mládež - od 1 do 100;
pro dospělé - od 101 do 200;
pro důchodce - od 201 do 250.

Pomocí počítače náhodně vyberte los v každé kategorii.

9. Napište program v Pascalu, který pro libovolné dvouciferné přirozené číslo určí:

a) součet a součin jeho číslic;
b) číslo vzniklé přeskupením číslic původního čísla.

10. Napište program v Pascalu, který implementuje algoritmus pro pokladní, aby zákazníkovi dal drobné s co nejmenším počtem bankovek 500 (k500), 100 (klOO), 50 (k50) a 10 (klO) rublů. .

11. Přichází k- druhá sekunda dne. Vyvinout program, který na základě vstupu k-sekunda dne určuje, kolik celých hodin h a celé minuty m uplynulo od začátku dne. Například pokud k= 13 257 = 3 3600 + 40 60 + 57, pak h= 3 a m = 40.

Zobrazit frázi:

Jsou...hodiny...minuty

.

Místo elips by měl program vydávat hodnoty bzučení a oddělovat je od slov přesně jednou mezerou.

12. Napište program v Pascalu, který vypočítá součet písmenných kódů ve slově „BYTE“.

13. Napište program v Pascalu, který vygeneruje a zobrazí řetězec znaků, jehož kódy jsou 66, 69, 71, 73, 78.

14. Vyviňte program, který se zeptá na tři hodnoty řetězce - související přídavné jméno, podstatné jméno a sloveso - a poté vytiskne všechny možné fráze pomocí zadaných slov.

15. Hodnoty celočíselných proměnných jsou dány: a = 10, b = 20. Jaká bude hodnota logické proměnné? rez po provedení operace přiřazení?

a)rez:=(a=10) nebo (b>10)
b)rez: = (a>5) a (b>5) a (a<20) and (b<30)
c)rez: = (ne(a<15)) or (b>20)

16. Napište program, který vstoupí skutečný, je-li tvrzení pravdivé, a Nepravdivé v opačném případě:
a) součet číslic trojmístného čísla X je sudé číslo;
b) trojúhelník se stranami a, b, c je všestranný.

Vypočítat

Úkol 2 (program 1_2)

    Je k sekunda dne. Určete, kolik celých hodin (h) a celých minut (m) a sekund (s) uplynulo do tohoto okamžiku.

    Určete obsah lichoběžníku se základnami a, b, výškou h a objemem komolého kužele, pokud a, b považujeme za plochy základen.

3. Určete souřadnice těžiště tří hmotných bodů o hmotnostech m 1,m 2,m 3 a souřadnicemi (x 1,y 1), (x 2,y 2), (x 3,y 3).

4. Vypočítejte objem koule a obsah kruhu pro daný poloměr R a najděte mezi nimi vztah.

5. Vypočítejte mediány trojúhelníku o stranách a, b, c.

6. Vypočítejte povrch a objem kužele daný poloměry a výškou h.

7. Pomocí daného poloměru zjistěte objem koule a povrch.

8. Vypočítejte sekundu dne, kdy jsou ručičky v h hodinách, m minutách a s sekundách, a také úhel (ve stupních) mezi polohou hodinové ručičky na začátku dne a její polohou v zadaném moment.

9. Zadejte dvoumístné celé číslo x<15. Написать программу перевода его в восьмеричную систему счисления.

10. Zadejte souřadnice dvou bodů (x 1, y 1), (x 2, y 2). Najděte vzdálenost mezi nimi.

Laboratoř 2

Programování rozvětvených algoritmů. Operátoři přenosu řízení

Struktura operátoru podmíněného přenosu řízení:

-li (<выражение>) <оператор 1> jiný <оператор 2>;

(If) (else) - klíčová slova,

Kde<условие>je libovolný booleovský výraz, který může nabývat dvou hodnot: true (TRUE) a false (FALSE);

<оператор>- libovolný operátor SI končí středníkem.

Krátká forma podmíněného příkazu:

-li (<выражение>) <оператор>;

Operátor nepodmíněného skoku: jít do <идентификатор-метка>;

Štítek je identifikátor. Štítek je umístěn před příkazem C/C++, na který se větvíte, a je oddělen dvojtečkou (:).

Příklad 1. Vytvořte program pro výpočet základní mzdy podle následujícího pravidla: pokud je pracovní zkušenost zaměstnance kratší než tři roky, pak je mzda 100 $, s praxí od tří do 5 let - 150 $, nad 5 let se mzda každým rokem zvyšuje o 10 dolarů a s více než 20 lety zkušeností je to 300 dolarů.

Abychom naprogramovali řešení tohoto problému, definujeme matematickou formulaci problému:

100 pokud ST< 3;

ZP= 150, pokud 3 ≤ST  5;

150+ (ST -5)*10, pokud 5< ST≤ 20;

300, pokud ST > 20;

#zahrnout

#zahrnout

void main()

( int ST; //ST- zkušenost (byte (celé číslo) bez znaménka)

plovák ZP; //ZP- plat (plovoucí typ)

printf("\nZadejte zkušenost");

scanf("%d",&ST);

pokud (ST<3) ZP = 100;

jinak když (ST<5) ZP = 150;

jinak if (ST>=20) ZP=300;

jiný ZP=150+(ST-5)*10;

printf("\nPlat = %10,2f$\n",ZP);

Operátor výběru přepínač umožňuje v závislosti na hodnotě proměnné nebo výrazu (výběrového klíče) provádět určité operátory označené odpovídajícími konstantami.

Struktura operátora:

přepínač (<выражение>)

pouzdro<константа 1>: <группа операторов 1>;

pouzdro<константа 2>: <группа операторов 2>;

pouzdro<константа N>: <группа операторов N>

výchozí: <операторы>;

}

Kde<выражение>-výraz (proměnná) libovolného ordinálního typu;

<константа>- konstanta stejného typu jako<выражение>;

<оператор>- libovolný operátor C/C++.

Příklad 2. Vytiskněte název tvaru v závislosti na počtu úhlů (trojúhelník, čtyřúhelník, pětiúhelník, šestiúhelník, mnohoúhelník).

Variantu realizace úlohy pomocí operátoru výběru představuje SA (obr. 2,b) a následující program:

#zahrnout

#zahrnout

void main()

{

int T; // T – počet úhlů

clrscr(); // vymazat obrazovku

printf("Zadejte počet úhlů");

scanf("%d",&T);

spínač (T)

případ 1: případ 2: printf("Toto není obrázek\n"); přestávka;

pouzdro 3: printf ("S %d úhly - trojúhelník\n ", T); přestávka;

pouzdro 4: printf ("S %d rohy - čtyřúhelník\n ", T); přestávka;

pouzdro 5: printf("S %d rohy - pětiúhelník\n ", T); přestávka;

pouzdro 6: printf("S %d rohy - šestiúhelník\n ", T); přestávka;

výchozí : printf("S %d úhly - mnohoúhelník\n ", T);

Cvičení 1 (program 2_1)

Vypočítejte hodnotu funkce v závislosti na intervalu, do kterého spadá argument zadaný z klávesnice:

1. Pro , a t 2 ln t na 1
,

kde a = -0,5, b = 2 z = 1 při t<1,

e a t cos b t pro t>2,

2. Pro x ,
v x2,

kde a = 2,3 f = x při 0,3< x  2,

cos(x-a) na x
,

3.Pro x , (a+b)/(e x +cosx) při 0  x2,3,

kde a=-2,7,b=-0,27 z = (a+b)/(x+1) při 2,3 x5,

e x +sinx v 7
,

4.Pro i , a i 4 + b i v i< 10,

kde a=2,2,b=0,3. y = tan(i + 0,5) při i = 10,

e 2i +
pro i >10,

5. Pro x , x 2 - 7/x 2 na x<1.3,

kde a = 1,5 y = ax 3 + 7
při 1,3  x 3,

lg(x + 7
) v x
,

6. Pro [-1.4],
na t<0.1,

kde a=2,1,b=0,37. z = při + b při 0,1 t 2,

na t
,

7. Pro x , a e sin x +2,5 při x<0.3,

kde a = 1,5. y = e cos x + a při 0,3 x<4,

(sin x)/ (a + e x) při x  4,

8. Pro x y = a/x + b x 2 - c v x
,

kde a=1,8,b=-0,5, c=3,5 (a + bx)/
při x>1,2,

9.Pro t ,t
v t>a,

kde a = 2,5 z = t sin a t v t = a,

e -at cos a t at t

10. Pro x , e - bx sin b x na x<2.3,

kde a=1,b=3. y= cos bx při 2,3
,

e -ax cos b x při x

11.Pro t , a t 2 – b
na t

kde a = 1,3, b = 6,5 z = a - b v a

a t 2/3 -
v t>b,

12. Pro x , |e -2x sin bx| pro x >1,

kde b=-2,9 y = cos bx v x = 1,

e -x cos bx na x< 1,

13. Pro x sin (cos a x) pro x >1,

kde a=-0,8 z = tan ax v x = 1,

a 2 x na x< 1,

14. Pro x , ln bx - 1/(bx+1) na x< 1.3,

kde b=1,3. y = bx + 1 při 1,3  x  1,7,

ln bx +1/(bx+1) pro x > 1,7,

15. Pro x [-1,1], ax 2 +bx 2/3 na x<0.1,

kde a=2,5,b=-0,9. z= a x 2 při x=0,1,

b x 2/3 při x > 0,1.

16. Zadejte souřadnice bodu (x, y). Vytiskněte, ve kterém kvadrantu nebo souřadnicové ose se tento bod nachází.

17. Zadejte poloměry R 1, R 2 a výšku. Vypočítejte objem komolého kužele:
, kde S je plocha základen. Pokud R 1 = R 2 - objem a plocha válce, pokud R 1 = 0 nebo R 2 = 0 - objem (hπr 2) a plocha πr(
) povrch kužele.

18. Zadejte číslo z klávesnice. Určete, do které číselné soustavy může patřit.

19. Zadejte číslo. Určete, zda je dělitelné dvěma, třemi nebo pěti.

20. Zadejte a, b, h. Pokud h=0, vypočítejte plochu obdélníku; pro a = b najděte plochu čtverce; jinak vypočítejte plochu lichoběžníku.

Úkol 2 (program 2_2)

1. Určete zbytek dělení osmi zadaného čísla x a osmičkovou číslici napište slovy.

2. Na základě čísla zadaného z klávesnice zadejte název tohoto čísla.

3. Z klávesnice zadejte číslo k (1..30). Určete, kterému dni v týdnu odpovídá, je-li prvním číslem pondělí.

4. Zadejte datum a číslo měsíce. Zadejte datum slovy.

5. Ubíhá k sekunda dne. Vypočítejte, kolik hodin a celých minut uplynulo do tohoto okamžiku a zároveň souhlasíte s významem slova (hodina, hodiny, hodiny, minuta, minuty, minuty).

6. V závislosti na čísle (N) typu postavy uspořádejte vstup potřebných údajů a vypočítejte pro N = 1 - plocha kruhu, N = 2 - objem míče (4/3πR 3), N = 3 - objem válce, N = 4 - povrch koule je 4πr 2.

7. Zadejte číslo N (0 ≤ N ≤ 15). Určete a vytiskněte hexadecimální číslici, která tomu odpovídá.

8. Pro celé číslo K (1...99) vytiskněte frázi „Je mi K let“ pro určité hodnoty K nahraďte slovo „roky“ slovem „rok“ nebo „roky“; .

9. V závislosti na čísle (N) typu obrázku uspořádejte vstup potřebných dat a vypočítejte pro N = 1 - plocha obdélníku, pro N = 2 - plocha rovnoběžníku, pro N = 3 - plocha lichoběžníku 1/2(a+b)h . V druhém případě vytiskněte, zda je lichoběžník rovnoběžník nebo kosočtverec.

10. Převeďte číslo 0 ≤ x ≤ 31 na hexadecimální číselnou soustavu.

11. Vytiskněte slovy zbytek libovolného celého čísla děleno pěti.

12. Pomocí zadaného čísla vytiskněte požadovanou barvu do duhy.

13. Navrhněte program, který ukáže, že pokud je součet číslic dvouciferného čísla násobkem tří, pak je samotné číslo beze zbytku dělitelné třemi.

14. Vytvořte program, který dokáže, že druhá mocnina dvouciferného čísla k5 (poslední číslice je 5) je rovna k * ( k + 1) * 100 + 25 (tj. lze získat vynásobením úvodní číslice k na další v pořadí a přidejte „25“). Například 35 * 11 = 3 * 4 * 100 + 25.

U úkolu 2 je číslo možnosti určeno zbytkem dělení jednotlivé možnosti číslem 12.

Laboratoř 3

Klíčová slova:

  • skutečný datový typ
  • celočíselný datový typ
  • datový typ znaku
  • datový typ řetězce
  • booleovský datový typ

Nejjednodušší jsou programy, které implementují lineární algoritmy. Všechny operátory, které obsahují, se provádějí postupně, jeden po druhém.

Při programování lineárních algoritmů se budeme podrobněji zabývat celočíselnými, logickými, znakovými a řetězcovými datovými typy.

4.4.1. Číselné datové typy

Základní numerické datové typy integer a real již znáte. Platí pro ně standardní funkce, z nichž některé jsou uvedeny v tabulce. 4.2.

Tabulka 4.2
Standardní funkce Pascalu


Pojďme prozkoumat fungování funkcí round, int a frac jejich aplikováním na nějaké reálné x. Odpovídající program bude vypadat takto:

Spusťte program několikrát pro x=(10,2; 10,8; -10,2; -10,8). Co nám můžete říci o typu výsledku každé z těchto funkcí?

4.4.2. Integer datový typ

S celými čísly se v jazyce Pascal provádějí následující operace: sčítání (+), odčítání (-), násobení (*), získání podílu celého čísla (div), získání zbytku celého čísla (mod) a dělení (/). Výsledky prvních pěti operací jsou celá čísla. Výsledkem operace dělení může být reálné číslo.

Uvažujme příklad použití operací div a mod napsáním programu v Pascalu k nalezení součtu číslic třímístného celého čísla zadaného z klávesnice.

Využíváme toho, že trojciferné číslo lze znázornit jako následující součet: x = a 100 + b 10 + c, kde a, b, c jsou číslice čísla.

4.4.3. Znakové a řetězcové datové typy

Hodnota znakové hodnoty (typu znaku) v jazyce Pascal je libovolný ze znaků, které lze získat na obrazovce stisknutím jedné z kláves nebo kombinace kláves, a také některé další znaky, včetně neviditelných. Sada takových symbolů se skládá z 256 prvků, z nichž každému je v souladu s použitou tabulkou kódů přiřazen kód - číslo od 0 do 255.

Symboly odpovídající prvním 32 kódům jsou kontrolní a ostatní jsou znázorněny. Zobrazené znaky obsahují také mezeru, kód 32.

Interpunkční znaménka, znaky aritmetických operací, čísla, velká a malá písmena latinky odpovídají kódům od 33 do 127. Písmena národní abecedy odpovídají kódům od číslic 128 a výše.

V textu programu lze konstantu typu znaku specifikovat uzavřením libovolného znaku v apostrofech: „5“, „B“, „*“.

Pokud je hodnota znakové proměnné čtena z klávesnice, měla by být zadána bez apostrofů.

Pro nalezení kódu symbolu použijte funkci ord, kde je symbol uveden jako parametr.

K rozpoznání symbolu podle kódu použijte funkci chr, kde je kód symbolu uveden jako parametr.

Hodnota řetězce (typ řetězce) je libovolná posloupnost znaků uzavřená v apostrofech. V Pascalu (jako v algoritmickém jazyce) mohou být řetězce zřetězeny.

Příklad. Napišme program v Pascalu, ve kterém se pro písmeno zadané z klávesnice zobrazí na obrazovce jeho kód. Poté se na obrazovce zobrazí řádek, což je sekvence tří písmen použité kódové tabulky: písmeno předcházející původnímu; originální dopis; písmena následující za původním.

4.4.4. Booleovský datový typ

Jak víte, hodnoty logického typu nabývají pouze dvou hodnot; v Pascalu jsou nepravdivé a pravdivé. Tyto konstanty jsou definovány tak, že false< true.

Booleovské hodnoty se získávají prováděním operací porovnání čísel, znaků, řetězců a logických výrazů. Proto lze v Pascalu logickou proměnnou přiřadit výsledek porovnávací operace.

Příklad. Napišme program, který určí pravdivost výroku „Číslo n je sudé“ pro libovolné celé číslo n.

Nechť ans je booleovská proměnná a n celočíselná proměnná. Poté v důsledku provedení operátoru přiřazení

proměnné ans bude přiřazena hodnota true pro libovolné sudé n a jinak nepravda.


Logickým proměnným lze přiřadit hodnoty logických výrazů vytvořených pomocí logických funkcí, které znáte a nebo ne, které jsou v Pascalu označeny příslušně a nebo ne.

Příklad. Napišme program, který určí pravdivost tvrzení „Trojúhelník se stranami délky a, b, c je rovnoramenný“ pro libovolná celá čísla a, b, c.

Nejdůležitější

Jazyk Pascal používá reálné, celé číslo, znakové, řetězcové, logické a další datové typy. Jsou pro ně definovány odpovídající operace a funkce.

Otázky a úkoly