1. Napišimo program, ki prebere celo število in ga izpiše.
Potrebovali bomo torej spremenljivko tipa integer. Pred branjem bomo s funkcijo write na zaslon izpisali obvestilo, da bomo vedeli, da program od nas pričakuje vnos podatka.
program beri;
var stevilo: integer;
begin
write('Stevilo = ');
readln(stevilo);
writeln('Vnesel si stevilo ', stevilo, '.')
end.
2. Napišimo program, ki izračuna porabo goriva v vožnji z avtomobilom. Podatka sta število porabljenih litrov in število prevoženih kilometrov.
Po branju podatkov o porabljenih litrih in prevoženih kilometrih izpišemo rezultat s formulo l / km * 100
program gorivo;
{izračuna porabo goriva pri vožnji z avtomobilom }
var
l, km: real;
begin
write('Vpisi stevilo porabljenih litrov: '); readln(l);
write('Vpisi stevilo prevozenih kilometrov: '); readln(km);
write('Poraba goriva je ', l / km * 100,' litrov na 100 km.');
end.
3.
Izpis na zaslonu pri prejšnji nalogi je
pri mnogih prevajalnikih v eksponentni obliki. Popravimo ga tako, da bo izpisan
na eno decimalno mesto: Poraba
goriva je 3.7 litrov na 100 km.
Pri izpisu uporabimo formatno določilo 5:1. S tem smo programu naročili naj za izpis rezultata porabi pet mest in pri tem izpiše eno decimalko.
program gorivo2;
{izračuna porabo goriva pri vožnji z avtomobilom }
var
l, km: real;
begin
write('Vpisi stevilo porabljenih litrov: '); readln(l);
write('Vpisi stevilo prevozenih kilometrov: '); readln(km);
write('Poraba goriva je ', l / km * 100 :5:1,' litrov na 100 km.');
end.
Na osnovi tega zgleda naredi samostojno še nalogi
· Popravi gornji program tako, da bo enačba v drugem stavku izražena z novo spremenljivko v obliki prireditvenega stavka.
· Preoblikuj program tako, da boš iz podatkov o porabi goriva na 100 km izračunal, koliko km lahko prevoziš z določeno količino goriva.
4. Preberimo celi števili a in b in izpišimo vrednost izraza ((a - b)2 + 1)2 + 3(a - b)2 + 7(a - b).
Po branju podatkov vidimo, da je smiselno, da posebej izračunamo vrednost izraza (a - b), saj ga potrebujemo na več mestih v izrazu. Prav tako bomo posebej izračunali še (a - b)2 ter (a - b)2 + 1.
program izraz;
var
a, b, a_manj_b, kvadrat, kvadrat_p_1: integer;
begin
write('a = '); readln(a);
write('b = '); readln(b);
a_manj_b := (a - b);
kvadrat := a_manj_b * a_manj_b;
kvadrat_p_1 := kvadrat + 1;
writeln('Vrednost izraza je ', kvadrat_p_1 * kvadrat_p_1 +
3 * kvadrat + 7 * a_manj_b)
end.
5. Napišimo program, ki izračuna koliko enako dolgih elementov dobimo, če jih izžagamo iz deske z določeno dolžino. Pri tem izračunajmo še odpadek, ki pri tem nastane.
Vnesemo dolžino deske in želeno dolžino elementov. Pri izračunu si pomagamo s funkcijama div in mod.
program deska;
{ izračuna število enako dolgih elementov, ki jih izžagamo iz deske
in odpadek, ki pri tem nastane }
var
dolzina_deske, element: integer;
begin
write('Dolzina deske (cm): '); readln(dolzina_deske);
write('Dolzina elementa (cm): '); readln(element);
writeln;
{kosov - celostevilcno deljenje}
writeln('Iz deske dolzine ',dolzina_deske, ' cm dobim ',
dolzina_deske div element,' kosov ', element,
' cm dolgih elementov.');
{odpadek - ostanek pri celostevilcnem deljenju}
writeln('Pri tem nastane odpadek ', dolzina_deske mod element, ' cm.');
end.
6. Letalo je vzletelo ob u:m:s in letelo l sekund. Izračunajmo čas pristanka. Pri tem bomo predpostavili, da so podatki taki, da bomo ostali v okviru enega dne.
program let;
(* iz casa vzleta in trajanja poleta izracunamo cas pristanka *)
var
u, m, s: integer;
let, pristanek: integer;
begin
writeln('Vnesi cas vzleta letala: ');
write(' ura: '); readln(u);
write(' minut: '); readln(m);
write(' sekund: '); readln(s);
write('Trajanje poleta (v sekundah): '); readln(let);
pristanek := u * 3600 + m * 60 + s + let;
u := pristanek div 3600;
m := (pristanek mod 3600) mod 60;
s := pristanek mod 60;
writeln('Cas pristanka: ', u, ':', m, ':', s);
end.
7. Na osnovi naslednjega programa, ki prebere dvomestno naravno število in ga izpiše v sistemu z osnovo 2, sestavi program, ki bo tromestno število izpisal v sistemu z osnovo 8. Tako za število 99 izpišemo 99(10) = 1100011(2). Izpišemo tudi morebitne vodilne ničle.
program dv_zap;
(*
Program prebere stevilo manjse od 100 in ga izpise v dvojiskem
zapisu. Primer: 99 = 1100011 (2)
*)
var
stevilo, stevka: integer;
begin
write('Stevilo = '); readln(stevilo);
writeln;writeln;writeln;
write(stevilo:1, '(10) = ');
(* stevilo ima lahko faktor 2^6 *)
stevka := stevilo div 64; write(stevka:1);
stevilo := stevilo mod 64; (* koliko se za pretvorbo *)
stevka := stevilo div 32; write(stevka:1);
stevilo := stevilo mod 32;
stevka := stevilo div 16; write(stevka:1);
stevilo := stevilo mod 16;
stevka := stevilo div 8; write(stevka:1);
stevilo := stevilo mod 8;
stevka := stevilo div 4; write(stevka:1);
stevilo := stevilo mod 4;
stevka := stevilo div 2; write(stevka:1);
stevilo := stevilo mod 2;
stevka := stevilo;
writeln(stevka, '(2)');
end.
Ker je število v desetiškem sistemu
dvomestno, bomo dobili sedemmestno dvojiško število. Največji faktor bo 64.
Število torej najprej delimo s 64. Rezultat pove prvo števko v dvojiškem
zapisu. Sedaj izračunamo ostanek pri deljenju s 64. Novo število ima lahko
največ faktor 25. Zato
delimo z 32, spet izračunamo
ostanek, ... Če sedaj želimo enako narediti za osmiški sistem najprej
ugotovimo, da bomo pri tromestnem desetiškem sistemu imeli največji faktor 8 *
8 * 8. Popravkov programa torej ne bo veliko:
program osm_zap;
(*
Program prebere stevilo manjse od 1000 in ga izpise v osimskem
zapisu. Primer: 99 = 0143 (8)
*)
var
stevilo, stevka: integer;
begin
write('Stevilo = '); readln(stevilo);
writeln;writeln;writeln;
write(stevilo, '(10) = ');
(* stevilo ima lahko faktor 8^3 *)
stevka = stevilo div (64*8); write(stevka);
stevilo = stevilo mod (64*8); (* koliko se za pretvorbo *)
stevka = stevilo div 64; write(stevka);
stevilo = stevilo mod 64;
stevka = stevilo div 8; write(stevka);
stevilo = stevilo mod 8;
stevka = stevilo;
writeln(stevka, '(8)');
end.
8. Dano je število 5634634. Izpišimo, koliko stotic ima.
Če hočemo priti do števila stotic, bomo število le celoštevilsko delili s 100. Naše število ima namreč 56346 stotic.
program sto;
var
stevilo, stotice: integer;
begin
stevilo := 5634634;
stotice := stevilo div 100;
writeln('Stevilo ', stevilo,' ima ', stotice, ' stotic.')
end.
Kaj pa če želimo dobiti le 'prave' stotice, v našem primeru torej 4?
Če imamo celo število, zelo enostavno dobimo enice. Ostanek pri deljenju z 10 namreč določa število enic. V prejšnjem programu po deljenju s 100 le še izračunamo ostanek pri deljenju z 10. ker je število večje kot 32000, bo seveda program deloval le za tiste prevajalnike, ki uporabljajo za tip integer dovolj veliko zalogo vrednosti.
program sto1;
var
stevilo, stotice: integer;
begin
stevilo := 5634634;
stotice := stevilo div 100;
writeln('Stevilo ', stevilo,' ima ', stotice, ' stotic.')
end.
9. Ugotovimo, kakšen ostanek dobimo pri deljenju dveh negativnih celih števil. Kaj pa, če je eno število pozitivno in drugo negativno. Kako je pri deljenju?
program posk;
var
poz, neg1, neg2: integer;
begin
poz := 29;
neg1 := -7;
neg2 := -3;
writeln('Ostanki: \n');
writeln(poz, ' mod ', neg1, ' = ', poz mod neg1);
writeln(neg1, ' mod ', 3, ' = ', neg1 mod 3);
writeln(neg1, ' mod ', neg2, ' = ', neg1 mod neg2);
writeln;writeln;writeln('Deljenje: ');
writeln(poz, ' div ', neg1, ' = ', poz div neg1);
writeln(neg1, ' div ', 3, ' = ', neg1 div 3);
writeln(neg1, ' div ', neg2, ' = ', neg1 div neg2)
end.
10. Preberimo dve realni števili in izračunajmo njun produkt.
Z znanjem, ki smo si ga nabrali do sedaj, to res ni težka naloga, zato kar zapišimo program.
program rea;
(* produkt realnih stevil *)
var
i, j, p: real;
begin
write('Vpisi 1. stevilo: '); readln(i);
write('Vpisi 2. stevilo: '); readln(j);
writeln('Vpisal si stevili ', i, ' in ', j);
p = i * j;
writeln('Njun produkt je enak ', p, '.');
end.
11. Napiši program, ki bo izračunal skupno vsoto denarja (povečano glavnico), ki jo bo po enem letu vrnil posojilojemalec, ki si je v banki izposodil x SIT posojila (glavnica) po obrestni meri p%. Banka naj za takšna posojila zaračunava navadne obresti.
Prebrali bomo glavnico in obrestno mero.
Nato bomo izračunali obresti, ter jih prišteli k glavnici.
program
kredit;
{program
racuna obresti in povecano glavnico}
{program
uporabi podprograma read in readln}
var
glavnica, obrestm: real;
obresti, decobr, pov_glavnica: real;
begin
write( 'Glavnica znasa: ' ); readln( glavnica );
write( 'Obrestna mera v odstotku: ' ); readln( obrestm );
decobr := obrestm / 100.0;
obresti := glavnica * decobr;
pov_glavnica := glavnica + obresti;
writeln( 'Znesek obresti je ' , obresti:5:2 );
writeln( 'Povecana glavnica znasa ' , pov_glavnica:10:2 );
end.
12. Pri danem x izračunajmo vrednost polinoma p(x) = a x3 + b x2 + c x + d s podanimi realnimi koeficienti a, b, c in d. Izpišimo podatke in rezultat.
Najprej bomo prebrali podatke. Da bomo računalniku prihranili malo dela, bomo vrednost izračunali s Hornerjevim postopkom, torej kot ((a x + b) x + c) x + d. Nato bomo le še izpisali rezultat.
program horner;
(* izracunamo vrednost kubicnega polinoma *)
var
a, b, c, d, x, p: real;
begin
write('Vnesi koeficiente polinoma p(x) = a x^3 + b x^2 + c x + d');
write('Koeficient a: '); readln(a);
write('Koeficient b: '); readln(b);
write('Koeficient c: '); readln(c);
write('Koeficient d: '); readln(d);
write('Vrednost spremenljivke x: '); readln(x);
p := ((a * x + b) * x + c) * x + d;
writeln('p(x) = ', a, 'x^3 + ', b, ' x^2 + ', c, ' x + ', d);
writeln('p(', x, ') = ', p);
end.
13. Radi bi izračunali, koliko kilogramov, dekagramov in gramov je določena teža, izražena v funtih (1 funt = 0.476 kilograma).
Ker vemo, da je 1 funt 0.476 kilograma, najprej v funtih prebrano težo pomnožimo s tem faktorjem. Dobimo decimalno število, ki pomeni težo, izraženo v kilogramih (denimo 4.536) . Če to vrednost želimo shraniti v celoštevilsko spremenljivko, s funkcijo trunc odrežemo decimalke in tako dobimo kilograme (4). Če te sedaj odštejemo od teže, bomo dobili decimalni del teže (0.536). To pomnožimo z 100. Sedaj imamo preostanek teže izražen v dekagramih. Spet odrežemo decimalke, shranimo v celoštevilsko spremenljivko in z odštevanjem naračunamo nov ostanek. Ko ga pomnožimo z 10, smo prišli do gramov. Tem prištejemo 0.5, da jih, kot smo videli v predhodnem zgledu, zaokrožimo, ko jih shranimo v spremenljivko tipa integer.
program pretvori;
(* pretvori tezo iz funtov v kg, dag in g *)
var
funt_kg: real; (* 1 funt je 0.476kg *)
teza_f: real; (* teza v funtih *)
teza: real; (* teza v kilogramih *)
kg, dag, g: integer; (* teza v kg, dag in g *)
begin
funt_kg := 0.476; (* 1 funt je 0.476kg *)
write('Teza predmeta v funtih: '); readln(teza_f);
teza := teza_f * funt_kg;
kg := trunc(teza);
teza := teza - kg; (* ostalo se za pretvorbo *)
teza := teza * 100; (* iz kg ---> dag *)
dag := trunc(teza);
teza := teza - dag; (* ostalo dag za pretvorbo *)
teza := teza * 10; (* v gramih *)
g := round(teza); (* zaokrozanje *)
writeln(teza_f, 'funtov je ', kg, 'kg ', dag, ' dag in ', g, ' g.');
end.