Mineva k-ta sekunda dneva. Razvoj lekcije o programiranju linearnih algoritmov. Številski podatkovni tipi

| § 3.3. Programiranje linearnega algoritma

Lekcija 26
§ 3.3. Programiranje linearnega algoritma

Ključne besede:

Pravi podatkovni tip
celoštevilski podatkovni tip
znakovni podatkovni tip
podatkovni tip niz
logični podatkovni tip

Najpreprostejši so programi, ki izvajajo linearne algoritme. Vsi operatorji, ki jih vsebujejo, se izvajajo zaporedno, drug za drugim.

Pri programiranju linearnih algoritmov bomo podrobneje obravnavali celoštevilske, logične, znakovne in nizovne podatkovne tipe.

3.3.1. Številski podatkovni tipi

Osnovne tipe numeričnih podatkov že poznate celo število in resnično. Velja zanje standardne funkcije, od katerih so nekateri navedeni v tabeli. 3.3.

Tabela 3.3

Standardne Pascalove funkcije

Raziščimo, kako delujejo funkcije krog, int in fraс, ki jih uporablja za nekaj resničnih X. Ustrezen program bo izgledal takole:

Večkrat zaženite program za vsak x ∈ (10,2; 10,8; -10,2; -10,8). Kaj nam lahko poveste o vrsti rezultata vsake od teh funkcij?

3.3.2. Celoštevilski podatkovni tip

Na celih številih v jeziku Pascal se izvajajo naslednje operacije: seštevanje (+), odštevanje (-), množenje (*), pridobivanje celega količnika (div), pridobivanje celega ostanka (mod) in deljenje (/). Rezultati prvih petih operacij so cela števila. Rezultat operacije deljenja je lahko realno število.

Oglejmo si primer uporabe operacij div in mod s pisanjem programa v Pascalu za iskanje vsote števk naravnega trimestnega števila, vnesenega s tipkovnice.

Uporabimo dejstvo, da lahko pozitivno trimestno število predstavimo kot naslednjo vsoto: x - a*100 + 6*10 + c, kjer so a, b, c števke števila.

Kolikšna je vsota števk števila 123? In številke -123? Ali se vaši rezultati ujemajo z rezultati programa? Kako je mogoče razložiti in popraviti napako v programu?

3.3.3. Podatkovni tipi znakov in nizov

Vrednost znakovne vrednosti (char type) v jeziku Pascal je kateri koli znak, ki ga lahko dobite na zaslonu s pritiskom na eno od tipk ali kombinacijo tipk na tipkovnici, pa tudi nekateri drugi znaki, vključno z nevidnimi . Nabor takih simbolov je sestavljen iz 256 elementov, od katerih je vsakemu v skladu z uporabljeno kodno tabelo dodeljena koda - številka od 0 do 255.

Simboli, ki ustrezajo prvim 32 kodam, so kontrolni, ostali pa so upodobljeni. Prikazani znaki vključujejo tudi presledek, koda 32.

Ločila, znaki aritmetičnih operacij, številke, velike in male latinske črke ustrezajo kodam od 33 do 127. Črke nacionalne abecede ustrezajo kodam s številkami od 128 naprej.

V programskem besedilu je mogoče določiti konstanto tipa znaka tako, da katerikoli predstavljeni znak obdate z apostrofi: “5”, “B”, “*”.

Če se vrednost znakovne spremenljivke bere s tipkovnice, naj bo vnesena brez apostrofov.

Za iskanje kode simbola uporabite funkcijo ord, kjer je simbol določen kot parameter.

Če želite prepoznati simbol po kodi, uporabite funkcijo chr, kjer je koda simbola določena kot parameter.

Vrednost nizovne vrednosti (vrsta niza) je poljubno zaporedje znakov, zaprtih med apostrofi. V Pascalu (kot v algoritemski jezik) nizov je mogoče povezati.

Primer. Napišimo program v Pascalu, v katerem se za črko, vneseno s tipkovnice, na zaslonu izpiše njena koda. Nato se na zaslonu prikaže vrstica, ki je zaporedje treh črk uporabljene kodne tabele: črka pred prvotno; originalno pismo; črke, ki sledijo izvirniku.


3.3.4, Logični podatkovni tip

Kot veste, vrednosti logičnega tipa sprejmejo samo dve vrednosti; v Pascalu je lažno in prav. Te konstante so definirane tako, da je false< true.

Logične vrednosti so pridobljene z izvajanjem primerjalnih operacij med številkami, znaki, nizi in logični izrazi. Zato lahko v Pascalu logični spremenljivki dodelimo rezultat primerjalne operacije.

Primer. Napišimo program, ki za poljubno celo število n ugotavlja resničnost trditve Število n je sodo.

Pustiti ans je logična spremenljivka, n pa celoštevilska spremenljivka. Nato kot rezultat izvajanja operatorja dodelitve

ans:=n mod 2 = 0

spremenljivka ans bo dodeljena vrednost prav za kateri koli sodi n in lažno drugače.

Logičnim spremenljivkam je mogoče dodeliti vrednosti logičnih izrazov, sestavljenih z uporabo logičnih funkcij, ki jih poznate in ali ne, ki so v Pascalu ustrezno označene in, ali, ne.

Primer. Napišimo program, ki za poljubna cela števila a, b, c ugotovi resničnost trditve “Trikotnik s stranicami a, b, c je enakokrak”.


NAJPOMEMBNEJŠE

Jezik Pascal uporablja realne, cele številke, znake, nize, logične in druge vrste podatkov. Zanje so definirane ustrezne operacije in funkcije.

Vprašanja in naloge

1. Preberite predstavitveno gradivo k odstavku v elektronski prilogi k učbeniku. Ta gradiva uporabite pri pripravi odgovorov na vprašanja in izpolnjevanju nalog.

2. Za dani x izračunajte y z uporabo formule y = x 3 + 2,5x 2 - x + 1.

pri čemer:

a) operacija potenciranja je prepovedana;
b) v enem operatorju dodelitve lahko uporabite največ eno aritmetično operacijo (seštevanje, množenje, odštevanje);
c) v programu ni mogoče uporabiti več kot pet operatorjev dodeljevanja.

Namig : Pretvorite izraz v naslednjo obliko: y = ((x + 2,5)x - 1)x + 1.

3. Na danih koordinatah točk A in. Izračunaj dolžino odseka AB.

Namig . Razdalja d med točkama A (x a, y a) in B (x b, y b) je izražena s formulo.

4. Znane so dolžine stranic trikotnika a, b, c. Napišite program za izračun ploščine tega trikotnika.

5. Znane so koordinate oglišč A, B, C trikotnika. Napišite program za izračun ploščine tega trikotnika.

6. Če je znesek davka izračunan v rubljih in kopekah, ga davčna služba zaokroži na najbližji rubelj (do 50 kopekov - s primanjkljajem, nad 50 kopekov (vključno s 50) - s presežkom). Z računalnikom vnesite točen znesek davka in prikažite, koliko dolgujete.

7. Raziščite delovanje naključne funkcije tako, da večkrat zaženete program:

Kako lahko dobiš naključno število iz intervala (0, x)?

Kako lahko dobite naključno število iz intervala (0, x]?

Kako lahko dobiš naključno število iz intervala (n, x + n)?

8. Eno podjetje je izdalo tri kategorije srečk: za mlade, za odrasle in za upokojence. Številke vstopnic za vsako kategorijo segajo od:

za mladino - od 1 do 100;
za odrasle - od 101 do 200;
za upokojence - od 201 do 250.

Z računalnikom naključno izberite srečko v vsaki kategoriji.

9. V Pascalu napišite program, ki za poljubno dvomestno naravno število določi:

a) vsoto in zmnožek njegovih števk;
b) število, ki nastane s prerazporeditvijo števk prvotnega števila.

10. Napišite program v Pascalu, ki implementira algoritem za blagajnika, ki bo dal stranki drobiž z najmanjšim možnim številom bankovcev po 500 (k500), 100 (klOO), 50 (k50) in 10 (klO) rubljev .

11. Prihajam k- sekunda dneva. Razviti program, ki na podlagi vnosa k-sekunda dneva določa, koliko celih ur h in cele minute m minilo od začetka dneva. Na primer, če k= 13 257 = 3 3600 + 40 60 + 57, potem h= 3 in m = 40.

Prikaži besedno zvezo:

To je ... ure ... minute

.

Namesto elips bi moral program izpisati brnečeče vrednosti in jih ločiti od besed z natanko enim presledkom.

12. V Pascalu napišite program, ki izračuna vsoto črkovnih kod v besedi “BYTE”.

13. V Pascalu napišite program, ki generira in prikaže niz znakov s kodami 66, 69, 71, 73, 78.

14. Razvijte program, ki zahteva tri vrednosti niza - povezani pridevnik, samostalnik in glagol - in nato natisne vse možne fraze z uporabo vnesenih besed.

15. Podane so vrednosti celih spremenljivk: a = 10, b = 20. Kakšna bo vrednost logične spremenljivke? rez po izvedbi operacije dodelitve?

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

16. Napišite program, ki vnese prav, če je trditev resnična, in lažno drugače:
a) vsota števk trimestnega števila X je sodo število;
b) trikotnik s stranicami a, b, c je vsestranski.

Izračunaj

Naloga 2 (program 1_2)

    Ura je k sekunda dneva. Ugotovite, koliko celih ur (h) in celih minut (m) in sekund (s) je minilo do tega trenutka.

    Določite ploščino trapeza z osnovami a, b, višino h in prostornino prisekanega stožca, če štejemo, da sta a, b ploščini baz.

3. Določite koordinate težišča treh materialnih točk z masami m 1,m 2,m 3 in koordinatami (x 1,y 1), (x 2,y 2), (x 3,y 3).

4. Izračunajte prostornino krogle in površino kroga za dani polmer R in poiščite razmerje med njima.

5. Izračunaj mediane trikotnika s stranicami a, b, c.

6. Izračunaj površino in prostornino stožca glede na polmer in višino h.

7. Z danim polmerom poiščite prostornino krogle in površino.

8. Izračunajte sekundo dneva, ko so kazalci na h urah, m minutah in s sekundah, ter kot (v stopinjah) med položajem urnega kazalca na začetku dneva in njegovim položajem na določenem trenutek.

9. Vnesite dvomestno celo število x<15. Написать программу перевода его в восьмеричную систему счисления.

10. Vnesite koordinate dveh točk (x 1, y 1), (x 2, y 2). Poišči razdaljo med njima.

laboratorij 2

Programiranje razvejanih algoritmov. Operaterji prenosa nadzora

Struktura pogojnega operaterja prenosa nadzora:

če (<выражение>) <оператор 1> drugače <оператор 2>;

(če) (drugo) - ključne besede,

Kje<условие>je poljuben logični izraz, ki ima lahko dve vrednosti: resnično (TRUE) in napačno (FALSE);

<оператор>- vsak operator SI se konča s podpičjem.

Kratka oblika pogojne izjave:

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

Operator brezpogojnega skoka: Pojdi do <идентификатор-метка>;

Oznaka je identifikator. Oznaka je postavljena pred stavek C/C++, na katerega se razvejate, in je ločena z dvopičjem (:).

Primer 1. Ustvarite program za izračun osnovne plače po naslednjem pravilu: če so delovne izkušnje zaposlenega manj kot tri leta, potem je plača 100 $, z delovnimi izkušnjami od treh do 5 let - 150 $, več kot 5 let se plača vsako leto poveča. za 10 $, z več kot 20-letnimi izkušnjami pa 300 $.

Za programiranje rešitve tega problema definiramo matematično formulacijo problema:

100, če je ST< 3;

ZP= 150, če je 3 ≤ST  5;

150+ (ST -5)*10 če je 5< ST≤ 20;

300, če je ST > 20;

#vključi

#vključi

void main()

( int ST; //ST- izkušnja (bajt (celo) brez predznaka)

plovec ZP; //ZP- plača (drseči tip)

printf("\nVnesite izkušnjo");

scanf("%d",&ST);

če (ST<3) ZP = 100;

sicer če (ST<5) ZP = 150;

sicer če (ST>=20) ZP=300;

drugače ZP=150+(ST- 5)*10;

printf("\nPlača = %10,2f$\n",ZP);

Izbirni operater stikalo omogoča, odvisno od vrednosti spremenljivke ali izraza (izbirna tipka), izvajanje določenih operatorjev, označenih z ustreznimi konstantami.

Struktura operaterja:

stikalo (<выражение>)

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

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

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

privzeto: <операторы>;

}

Kje<выражение>-izraz (spremenljivka) poljubnega ordinalnega tipa;

<константа>- konstanta iste vrste kot<выражение>;

<оператор>- poljuben C/C++ operator.

Primer 2. Izpiši ime oblike glede na število kotov (trikotnik, štirikotnik, peterokotnik, šestkotnik, mnogokotnik).

Različico izvajanja naloge z uporabo izbirnega operaterja predstavlja SA (slika 2, b) in naslednji program:

#vključi

#vključi

void main()

{

int T; // T – število kotov

clrscr(); // počisti zaslon

printf("Vnesite število kotov");

scanf("%d",&T);

stikalo (T)

primer 1: primer 2: printf("To ni številka\n"); odmor;

Ovitek 3: printf("Z %d koti - trikotnik\n ", T); odmor;

Ovitek 4: printf ("Z %d vogali - štirikotnik\n ", T); odmor;

Ovitek 5: printf("Z %d vogali - peterokotnik\n ", T); odmor;

Ovitek 6: printf("Z %d vogali - šesterokotnik\n ", T); odmor;

privzeto : printf("Z %d koti - poligon\n ", T);

1. vaja (program 2_1)

Izračunajte vrednost funkcije glede na interval, v katerega pade argument, vnesen s tipkovnice:

1. Za , a t 2 ln t pri 1
,

kjer je a=-0,5,b=2 z = 1 pri t<1,

e a t cos b t za t>2,

2. Za x ,
pri x2,

kjer je a=2,3 f = x pri 0,3< x  2,

cos(x-a) pri x
,

3.Za x , (a+b)/(e x +cosx) pri 0  x2,3,

kjer je a=-2,7,b=-0,27 z = (a+b)/(x+1) pri 2,3 x5,

e x + sinx pri 7
,

4. Za i , a i 4 + b i pri i< 10,

kjer je a=2,2,b=0,3. y = tan(i + 0,5) pri i = 10,

e 2i +
za i >10,

5. Za x , x 2 - 7/x 2 pri x<1.3,

kjer je a=1,5 y = ax 3 + 7
pri 1,3  x3,

lg(x + 7
) pri x
,

6. Za [-1.4],
pri t<0.1,

kjer je a=2,1,b=0,37. z = pri + b pri 0,1 t 2,

pri t
,

7. Za x , a e sin x +2,5 pri x<0.3,

kjer je a=1,5. y = e cos x + a pri 0,3 x<4,

(sin x)/ (a + e x) pri x  4,

8. Za x , y = a/x + b x 2 - c pri x
,

kjer je a=1,8,b=-0,5,c=3,5 (a + bx)/
pri x>1,2,

9.Za t ,t
pri t>a,

kjer je a=2,5 z = t sin a t pri t=a,

e -at cos a t pri t

10. Za x , e - bx sin b x pri x<2.3,

kjer je a=1,b=3. y= cos bx pri 2,3
,

e -ax cos b x pri x

11.Za t , a t 2 – b
pri t

kjer je a=1,3,b=6,5 z= a - b pri a

a t 2/3 -
pri t>b,

12. Za x , |e -2x sin bx| za x >1,

kjer je b=-2,9 y = cos bx pri x = 1,

e -x cos bx pri x< 1,

13. Za x sin (cos a x) za x >1,

kjer je a=-0,8 z = tan ax pri x = 1,

a 2 x pri x< 1,

14. Za x , ln bx - 1/(bx+1) pri x< 1.3,

kjer je b=1,3. y = bx + 1 pri 1,3  x  1,7,

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

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

kjer je a=2,5,b=-0,9. z = a x 2 pri x = 0,1,

b x 2/3 pri x>0,1.

16. Vnesite koordinate točke (x, y). Izpišite, v katerem kvadrantu ali koordinatni osi je ta točka.

17. Vnesite polmere R 1, R 2 in višino. Izračunaj prostornino prisekanega stožca:
, kjer je S površina baz. Če je R 1 = R 2 - prostornina in površina valja, če je R 1 = 0 ali R 2 = 0 - prostornina (hπr 2) in površina πr(
) površino stožca.

18. Vnesite številko s tipkovnice. Ugotovi, kateremu številskemu sistemu morda pripada.

19. Vnesite številko. Ugotovite, ali je deljivo z dva, tri ali pet.

20. Vnesite a, b, h. Če je h=0, izračunajte ploščino pravokotnika; za a = b poiščite površino kvadrata; v nasprotnem primeru izračunajte površino trapeza.

Naloga 2 (program 2_2)

1. Vpisanemu številu x določi ostanek deljenja z osem in osmiško števko zapiši z besedo.

2. Na podlagi vnesene številke s tipkovnice vnesite ime te številke.

3. S tipkovnice vnesite številko k (1..30). Določite, kateremu dnevu v tednu ustreza, če je prva številka ponedeljek.

4. Vnesite datum in številko meseca. Vnesite datum z besedami.

5. K sekunda dneva mineva. Izračunajte, koliko ur in polnih minut je minilo do tega trenutka, pri čemer se strinjate s pomenom besede (ura, ure, ure, minuta, minute, minute).

6. Glede na število (N) vrste figure organizirajte vnos potrebnih podatkov in izračunajte za N = 1 - površino kroga, N = 2 - prostornino krogle (4/3πR 3), N = 3 - prostornina valja, N = 4 - površina krogle je 4πr 2.

7. Vnesite število N (0 ≤ N ≤ 15). Določi in izpiši šestnajstiško števko, ki mu ustreza.

8. Za celo število K (1...99) natisnite besedno zvezo "star sem K let" za določene vrednosti K zamenjajte besedo "leto" ali "leto"; .

9. Glede na število (N) vrste figure organizirajte vnos potrebnih podatkov in izračunajte za N = 1 - površino pravokotnika, za N = 2 - površino paralelograma, za N = 3 - ploščina trapeza 1/2(a+b)h . V slednjem primeru izpiši, ali je trapez paralelogram ali romb.

10. Pretvori število 0 ≤ x ≤ 31 v šestnajstiški številski sistem.

11. Izpiši z besedo ostanek poljubnega celega števila deljenega s pet.

12. Z vneseno številko v mavrico odtisni želeno barvo.

13. Naredite program, ki pokaže, da če je vsota števk dvomestnega števila večkratnik tri, potem je samo število deljivo s tri brez ostanka.

14. Razvijte program, ki dokazuje, da je kvadrat dvomestnega števila k5 (zadnja cifra 5) enak k * ( k + 1) * 100 + 25 (tj. lahko se dobi z množenjem prve števke k naslednjemu po vrstnem redu in dodajte »25«). Na primer, 35 * 11 = 3 * 4 * 100 + 25.

Pri nalogi 2 je število možnosti določeno z ostankom deljenja posamezne možnosti s številom 12.

laboratorij 3

Ključne besede:

  • pravi podatkovni tip
  • celoštevilski podatkovni tip
  • znakovni podatkovni tip
  • podatkovni tip niz
  • logični podatkovni tip

Najpreprostejši so programi, ki izvajajo linearne algoritme. Vsi operatorji, ki jih vsebujejo, se izvajajo zaporedno, drug za drugim.

Pri programiranju linearnih algoritmov bomo podrobneje obravnavali celoštevilske, logične, znakovne in nizovne podatkovne tipe.

4.4.1. Številski podatkovni tipi

Ste že seznanjeni z osnovnimi številskimi tipi podatkov integer in real. Zanje veljajo standardne funkcije, od katerih so nekatere podane v tabeli. 4.2.

Tabela 4.2
Standardne Pascalove funkcije


Raziščimo delovanje funkcij round, int in frac tako, da jih uporabimo za nekaj realnih x. Ustrezen program bo izgledal takole:

Večkrat zaženite program za x=(10,2; 10,8; -10,2; -10,8). Kaj nam lahko poveste o vrsti rezultata vsake od teh funkcij?

4.4.2. Celoštevilski podatkovni tip

Na celih številih v jeziku Pascal se izvajajo naslednje operacije: seštevanje (+), odštevanje (-), množenje (*), pridobivanje celega količnika (div), pridobivanje celega ostanka (mod) in deljenje (/). Rezultati prvih petih operacij so cela števila. Rezultat operacije deljenja je lahko realno število.

Oglejmo si primer uporabe operacij div in mod s pisanjem programa v Pascalu za iskanje vsote števk trimestnega celega števila, vnesenega s tipkovnice.

Uporabimo dejstvo, da lahko trimestno število predstavimo kot naslednjo vsoto: x = a 100 + b 10 + c, kjer so a, b, c števke števila.

4.4.3. Podatkovni tipi znakov in nizov

Vrednost znakovne vrednosti (char type) v jeziku Pascal je kateri koli znak, ki ga lahko dobite na zaslonu s pritiskom na eno od tipk ali kombinacijo tipk, pa tudi nekateri drugi znaki, vključno z nevidnimi. Nabor takih simbolov je sestavljen iz 256 elementov, od katerih je vsakemu v skladu z uporabljeno kodno tabelo dodeljena koda - številka od 0 do 255.

Simboli, ki ustrezajo prvim 32 kodam, so kontrolni, ostali pa so upodobljeni. Prikazani znaki vključujejo tudi presledek, koda 32.

Ločila, znaki aritmetičnih operacij, številke, velike in male latinske črke ustrezajo kodam od 33 do 127. Črke nacionalne abecede ustrezajo kodam s številkami od 128 naprej.

V programskem besedilu je mogoče določiti konstanto tipa znaka tako, da katerikoli predstavljeni znak obdate z apostrofi: “5”, “B”, “*”.

Če se vrednost znakovne spremenljivke bere s tipkovnice, naj bo vnesena brez apostrofov.

Za iskanje kode simbola uporabite funkcijo ord, kjer je simbol določen kot parameter.

Če želite prepoznati simbol po kodi, uporabite funkcijo chr, kjer je koda simbola določena kot parameter.

Vrednost nizovne vrednosti (vrsta niza) je poljubno zaporedje znakov, zaprtih med apostrofi. V Pascalu (kot v algoritemskem jeziku) je mogoče nize povezati.

Primer. Napišimo program v Pascalu, v katerem se za črko, vneseno s tipkovnice, na zaslonu izpiše njena koda. Nato se na zaslonu prikaže vrstica, ki je zaporedje treh črk uporabljene kodne tabele: črka pred prvotno; originalno pismo; črke, ki sledijo izvirniku.

4.4.4. Logični podatkovni tip

Kot veste, vrednosti logičnega tipa sprejmejo samo dve vrednosti; v Pascalu sta ti napačni in resnični. Te konstante so definirane tako, da je false< true.

Logične vrednosti so pridobljene z izvajanjem primerjalnih operacij številskih, znakovnih, nizovnih in logičnih izrazov. Zato lahko v Pascalu logični spremenljivki dodelimo rezultat primerjalne operacije.

Primer. Napišimo program, ki za poljubno celo število n ugotavlja resničnost trditve Število n je sodo.

Naj bo ans logična spremenljivka in n celoštevilska spremenljivka. Nato kot rezultat izvajanja operatorja dodelitve

spremenljivki ans bo dodeljena vrednost true za vsak sodi n in false drugače.


Logičnim spremenljivkam je mogoče dodeliti vrednosti logičnih izrazov, sestavljenih z uporabo logičnih funkcij, ki jih poznate in, ali, ne, ki so v Pascalu označene oziroma in, ali, ne.

Primer. Napišimo program, ki za poljubna cela števila a, b, c ugotovi resničnost trditve “Trikotnik s stranicami a, b, c je enakokrak”.

Najpomembnejše

Jezik Pascal uporablja realne, cele številke, znake, nize, logične in druge vrste podatkov. Zanje so definirane ustrezne operacije in funkcije.

Vprašanja in naloge