Příklady na procedury.

Slides:



Advertisements
Podobné prezentace
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_17 Digitální učební materiál Sada: Úvod do programování.
Advertisements

Programování funkcí v Excelu (pole)
Programování v Pascalu
Algoritmizace od algoritmu k Pascalu.
Vnitřní řazení v poli (in sito)
1 Vnitřní řazení s využitím dynamických struktur Tvorba spojového seznamu je vcelku triviální záležitostí: a)Vytvořím prázdný seznam příkazem LIST:=nil.
10. Dynamické datové struktury
ALGO – Algoritmizace 6. cvičení
Programování v Pascalu Přednáška 4
Programování v Pascalu Přednáška 6
Programování v Pascalu Přednáška 3
Programování v Pascalu Přednáška 5 RNDr. Hana Havelková.
Programování v Pascalu Přednáška 9 RNDr. Hana Havelková.
Třídění Seminář IVT. Definice uspořádání skupiny dat (záznamů) dle daného klíče vzestupně (od nejmenší do největší hodnoty klíče) sestupně (od největší.
Algoritmy I Cvičení č. 3.
Programování v Pascalu Přednáška 7
Materiály k přednášce Úvod do programování Ondřej Čepek.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_15 Digitální učební materiál Sada: Úvod do programování.
1 Vyhledávání Principy vyhledávání Klasifikace klíče:  Interní klíč – je součástí prohlížených záznamů  Externí klíč – není jeho součástí, je jím např.
Informatika I 3. přednáška
Jazyk vývojových diagramů
Procedury a funkce Základní charakteristika a použití v programu.
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Informatika I 2. přednáška
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_18 Digitální učební materiál Sada: Úvod do programování.
Podmienený príkaz. Kĺúčové slová  Pro podmínky se v Pascalu používají klíčové příkazy IF, THEN a ELSE.  Také se jim říká „príkaz vetvenia"..  Příkaz.
Algoritmy a programovací techniky
Jazyk vývojových diagramů
Matice.
Úvod do Pascalu. Co je Pascal? vyšší programovací jazyk poskytuje prostředky pro popis algoritmů, které odrážejí povahu řešených problémů, a nikoliv technickou.
Algoritmizace a programování Třídící algoritmy - 12
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – OPAKOVANÝM VÝBĚREM NEJVĚTŠÍHO PRVKU (SELECTSORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ ŘAZENÍ PRVKŮ – PŘÍMOU VÝMĚNOU (BUBBLESORT) Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise, Hlinsko, Adámkova.
5. Procedury a funkce Procedura je samostatně odladěný algoritmus, v programu může být volána vícekrát. Dvojí terminologie - rozlišujeme procedury a funkce.
Informatika I 7. přednáška RNDr. Jiří Dvořák, CSc.
Informatika I 8. přednáška RNDr. Jiří Dvořák, CSc.
KIV/PRO Cvičení Částečný součet v posloupnosti Najděte maximální částečný součet v posloupnosti Vstup: – Reálná čísla Výstup: – Maximální.
STROMY Datová struktura sestávající z uzlů
10. Dynamické proměnné Dynamická proměnná se nezavádí deklarací proměnných, ale vzniká za běhu programu provedením speciálního příkazu. Nemá přidělen žádný.
7. Typ soubor Souborem dat běžně rozumíme uspořádanou množinu dat, uloženou mimo operační paměť počítače (na disku). Pascalský soubor je abstrakcí skutečného.
Aplikační počítačové prostředky X15APP MATLAB Katedra elektroenergetiky, Fakulta elektrotechniky ČVUT, Technická 2, Praha 6 Ing. Zbyněk Brettschneider.
Gymnázium Vincence Makovského se sportovními třídami Nové Město na Moravě VY_32_INOVACE_INF_RO_16 Digitální učební materiál Sada: Úvod do programování.
GYMNÁZIUM, VLAŠIM, TYLOVA
6. Typ záznam Strukturovaný datový typ - znamená spojení několika elementů stejného nebo různých typů do jedné proměnné. Např. pole je strukturovaný datový.
doc. RNDr. Zdeněk Botek, CSc.
Pascal – if Mgr. Lenka Švancarová.
4. Typ pole 4.1 Jednorozměrná pole
Pascal – strukturované příkazy
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ
VISUAL BASIC PRALG.
doc. RNDr. Zdeněk Botek, CSc.
doc. RNDr. Zdeněk Botek, CSc.
Cvičení 2 Podmíněné příkazy, cykly. Podmíněné příkazy Podmínka – jakýkoliv logický výraz ( a=1,……..) ( a=1,……..) Příkaz – vlastní instrukce, která se.
Cvičení 3-4 Procedury, funkce,řetězce. Procedury Procedura Procedura Procedura je podprogram, který mění stav programu (změnou stavu proměnných nebo změnou.
ALGORITMIZACE A ZÁKLADY PROGRAMOVÁNÍ CYKLUS S PŘEDEM DANÝM POČTEM OPAKOVÁNÍ – SOUČIN POMOCÍ SOUČTU Vytvořila: RNDr. Ivanka Dvořáčková Gymnázium K. V. Raise,
Příklady na procedury. Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno.
Vzdálenost 2 bodů v rovině a v prostoru Autor: RNDr. Jiří Kocourek.
Algoritmy Úkol: Vytvořte algoritmus pro zadání PIN do mobilu.
TENTO PROJEKT JE SPOLUFINANCOVÁN EVROPSKÝM SOCIÁLNÍM FONDEM
Strukturované typy proměnných v programovacím jazyce Pascal - 2.hodina
© Copyright Radim Štefan
Opakování základních příkazů a syntaxí v programovacím jazyce Pascal
Podprogramy.
Juliovy množiny 1.
program TextovySoubor;
Juliovy množiny 1.
Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky. Upravila R.Baštářová.
Kinematika hmotný bod: těleso s nekonečně malými rozměry, ale nenulovou hmotností, tj. žádné otáčení, žádná deformace atd. = bodová hmotnost popis pohybu.
Juliovy množiny.
Transkript prezentace:

Příklady na procedury

Sestavte proceduru pro seřazení posloupnosti reálných čísel do nerostoucí poslopnosti. Použijte ji v programu: Na vstupu je dáno přirozené čislo N z intervalu <2,100> a dále posloupnost N reálných čísel. Sestavte program, který vytiskne zadanou posloupnost, setříděnou posloupnost (nerostoucí) a setříděnou posloupnost absolutních hodnot zadané posloupnosti.

program Trideni; {$APPTYPE CONSOLE} type pole=array[1..100] of real; procedure Setrid(n:integer;var a:pole); var i,j:integer; p:real; begin for i:=1 to n-1 do for j:=i+1 to n do if a[j]>a[i] then begin p:=a[i];a[i]:=a[j];a[j]:=p; end;

procedure Tiskni(n:integer;a:pole); var i:integer; begin for i:=1 to n do begin write(a[i]:8:2); if i mod 5 = 0 then writeln; end;

var i,n:integer; a,b:pole; f:text; begin writeln('Program pro trideni posloupnosti:'); writeln('*********************************'); writeln; assign(f,'data.txt'); reset(f); read(f,n); for i:=1 to n do begin read(f,a[i]); b[i]:=abs(a[i]); end; writeln('Zadana posloupnost: '); Tiskni(n,a); writeln;writeln;

writeln('Setridena posloupnost: '); Setrid(n,a); Tiskni(n,a); writeln;writeln; writeln('Setridena posloupnost absolutnich hodnot: '); Setrid(n,b); Tiskni(n,b); writeln('Enter-konec'); readln; end.

Sestavte proceduru pro vynásobení dvou obdélníkových matic Sestavte proceduru pro vynásobení dvou obdélníkových matic. Použijte ji v programu: Na vstupu je dáno přirozené číslo N z intervalu <2,20> a dále čtvercová matice reálných čísel A řádu N. Sestavte program, který vytiskne matici A a dále matici A2 a matici A3.

program MocninyMatice; {$APPTYPE CONSOLE} type matice=array[1..20,1..20] of real; procedure SoucinMatic(m,n,p:integer;a,b:matice; var c:matice); var i,j,k:integer; s:real; begin for i:=1 to m do for j:=1 to p do begin s:=0; for k:=1 to n do s:=s+a[i,k]*b[k,j]; c[i,j]:=s; end;

procedure TiskMatice(m,n:integer;a:matice); var i,j:integer; begin for i:=1 to m do begin for j:=1 to n do write(a[i,j]:8:2); writeln; end;

var i,j,n:integer; a,b,c:matice; f:text; begin writeln('Program pro tisk mocnin matice:'); writeln('*******************************'); writeln; assign(f,'data.txt'); reset(f); read(f,n); for i:=1 to n do for j:=1 to n do read(f,a[i,j]); writeln('Zadana matice: '); TiskMatice(n,n,a);

SoucinMatic(n,n,n,a,a,b); writeln('Druha mocnina matice: '); writeln; TiskMatice(n,n,b); SoucinMatic(n,n,n,b,a,c); writeln('Treti mocnina matice: '); TiskMatice(n,n,c); writeln('Enter-konec'); readln; end.

Sestavte proceduru pro převod obdélníkové matice reálných čísel typu M, N do posloupnosti o P = M * N členech (po řádcích) a proceduru pro převod opačný - posloupnosti o P = M * N členech na matici typu M, N (po řádcích). Procedury použijte v programu: Na vstupu jsou dána přirozená čísla M, N z intervalu <2,30> a dále matice typu M, N reálných čísel. Vytiskněte matici typu M, N, která vznikne z původní matice uspořádáním všech prvků matice podle velikosti od největšího po nejmenší - prvky budou setříděny po řádcích (matice se převede na posloupnost, setřídí a převede zpět na matici).

program TrideniMatice; {$APPTYPE CONSOLE} type matice=array[1..30,1..30] of real; vektor=array[1..900] of real; procedure preved1(m,n:integer;a:matice;var v:vektor); var i,j,k:integer; begin k:=0; for i:=1 to m do for j:=1 to n do begin inc(k); v[k]:=a[i,j]; end;

procedure preved2(m,n:integer;v:vektor;var a:matice); i,j,k:integer; begin k:=0; for i:=1 to m do for j:=1 to n do begin inc(k); a[i,j]:=v[k]; end; procedure setrid(p:integer;var v:vektor); i,j:integer; x:real; for i:=1 to p-1 do for j:=i+1 to p do if v[j]>v[i] then begin x:=v[i]; v[i]:=v[j]; v[j]:=x;

var i,j,m,n:integer; a,b:matice; v:vektor; f:text; begin writeln('Program pro setrideni prvku matice po radcich'); writeln('*********************************************'); writeln; assign(f,'data.txt'); reset(f); read(f,m,n); for i:=1 to m do for j:=1 to n do read(f,a[i,j]); preved1(m,n,a,v); setrid(m*n,v); preved2(m,n,v,b); writeln('Zadana matice:'); for i:=1 to m do begin write(a[i,j]:12:2); end;

writeln; writeln('Setridena matice:'); for i:=1 to m do begin for j:=1 to n do write(b[i,j]:12:2); end; writeln('Konec-enter'); readln; end.

Příklady na funkce

Sestavte funkci pro nalezení maximální hodnoty v posloupnosti n reálných čísel a použijte ji v programu: Na vstupu je dáno přirozené číslo n z intervalu <2,1000> a dále posloupnost n nenulových reálných čísel. Sestavte program pro nalezení maximální hodnoty dané posloupnosti a dále maximální hodnoty z posloupnosti absolutních hodnot a z posloupnosti převrácených hodnot původní posloupnosti.

program MaximumPosloupnosti; {$APPTYPE CONSOLE} type pole=array[1..1000] of real; function Maximum(n:integer;a:pole):real; var i:integer; max:real; begin max:=-1e30; for i:=1 to n do if a[i]>max then max:=a[i]; result:=max; end; procedure TiskniPosloupnost(n:integer;a:pole); for i:=1 to n do begin write(a[i]:10:4); if i mod 5 = 0 then writeln if n mod 5 <> 0 then writeln;

var i,n:integer; a,b,c:pole; f:text; begin writeln('Program pro nalezeni maxima posloupnosti'); writeln('****************************************'); writeln; assign(f,'data.txt');reset(f); read(f,n); for i:=1 to n do read(f,a[i]); writeln('Zadana posloupnost:'); TiskniPosloupnost(n,a); writeln('Maximum = ',Maximum(n,a):8:2); b[i]:=abs(a[i]); writeln('Posloupnost absolutnich hodnot:'); TiskniPosloupnost(n,b); writeln('Maximum = ',Maximum(n,b):8:2);

writeln; for i:=1 to n do c[i]:=1/a[i]; writeln('Posloupnost prevracenych hodnot:'); TiskniPosloupnost(n,c); writeln('Maximum = ',Maximum(n,c):8:4); writeln('Konec-enter'); readln; end.

Sestavte funkci pro výpočet vzdálenosti dvou bodů v prostoru Sestavte funkci pro výpočet vzdálenosti dvou bodů v prostoru. Funkci použijte v programu: Vstupní textový soubor obsahuje na každém řádku trojici reálných čísel - souřadnic bodů v prostoru. Řádků je maximálně 1000. Najděte maximální vzdálenost mezi body a dvojici bodů v této maximální vzdálenosti.

program MaximalneVzdaleneBody; {$APPTYPE CONSOLE} function vzd(x1,y1,z1,x2,y2,z2:real):real; begin result:=sqrt(sqr(x2-x1)+sqr(y2-y1)+sqr(z2-z1)); end; var i,j,n,imax1,imax2:integer; x,y,z:array[1..1000] of real; max,v:real; f:text; assign(f,'data.txt');reset(f); n:=0; while not eof(f) do begin inc(n); readln(f,x[n],y[n],z[n]); writeln('Program pro nalezeni maximalne vzdalenych bodu'); writeln('**********************************************'); writeln; writeln('Zadane body:'); for i:=1 to n do writeln(i:3,x[i]:6:2,y[i]:6:2,z[i]:6:2);

max:=-1e30; for i:=1 to n-1 do for j:=i+1 to n do begin v:=vzd(x[i],y[i],z[i],x[j],y[j],z[j]); if v>max then begin max:=v; imax1:=i;imax2:=j; end; writeln('Maximalni vzdalenost: ',max:8:3); writeln(' i x y z'); writeln(imax1:4,x[imax1]:6:2,y[imax1]:6:2,z[imax1]:6:2); writeln(imax2:4,x[imax2]:6:2,y[imax2]:6:2,z[imax2]:6:2); writeln; writeln('Enter-konec'); readln; end.

Sestavte funkci pro výpočet hodnoty daného polynomu v daném bodě Sestavte funkci pro výpočet hodnoty daného polynomu v daném bodě. Funkci použijte v programu, který vytiskne tabulku hodnot polynomu na zadaném intervalu se zadaným krokem.

program TabelacePolynomu; {$APPTYPE CONSOLE} type tpoly=array[0..100] of real; function poly(n:integer;a:tpoly;x:real):real; var i:integer; s:real; begin s:=a[n]; for i:=n-1 downto 0 do s:=s*x+a[i]; result:=s; end;

const radek='***************************************'; var DolniMez,HorniMez,Krok,x,y1,y2:real; i,n:integer; a:tpoly; f:text; begin assign(f,'data.txt');reset(f); read(f,n); for i:=n downto 0 do read(f,a[i]); read(f,DolniMez,HorniMez,Krok); writeln('Program pro tabelaci hodnot polynomu'); writeln('************************************'); writeln; writeln('Stupen polynomu: ',n); writeln('Koeficienty polynomu:'); write(a[i]:6:2); writeln('Zadana dolni mez: ',DolniMez:6:2,' horni mez: ',HorniMez:6:2,' krok: ',Krok:6:2);

writeln(radek); writeln('* x * hodnota polynomu *'); x:=DolniMez;i:=0; while x<=HorniMez do begin writeln('*',x:13:3,' *',poly(n,a,x):17:3,' *'); inc(i); if i mod 5 = 0 then writeln(radek); x:=x+Krok; end; if i mod 5 <> 0 then writeln(radek); writeln; writeln('Enter-konec'); readln; end.

Sestavte funkci pro výpočet největšího společného dělitele dvou přirozených čísel a použijte ji v programu pro nalezení největšího společného dělitele zadané n-členné posloupnosti přirozených čísel.

program NSDzNCisel; {$APPTYPE CONSOLE} function nsd(x,y:integer):integer; begin while x<>y do if x>y then x:=x-y else y:=y-x; nsd:=x; end; var i,n,x,y:integer; a:array[1..100] of integer; f:text; writeln('Program pro nalezeni NSD n cisel'); writeln('********************************'); writeln; assign(f,'data.txt'); reset(f); read(f,n); for i:=1 to n do read(f,a[i]);

writeln('Zadana cisla: '); for i:=1 to n do begin write(a[i]:8); if i mod 5 = 0 then writeln; end; x:=a[1]; for i:=2 to n do begin y:=a[i]; x:=nsd(x,y); writeln;writeln; writeln('NSD z n cisel = ',x); writeln('Konec - Enter'); readln; end.

Příklady na rekurzi

Sestavte rekurzivní funkci pro výpočet přirozené mocniny xn a použijte ji v programu pro výpočet xn pro zadané reálné číslo x a přirozené číslo n.

program PrirozenaMocnina; {$APPTYPE CONSOLE} function Mocnina (x:real;n:integer):real; begin if n=0 then Mocnina := 1 else Mocnina := x * Mocnina(x, n - 1) end; var x:real; n:integer; writeln('Program pro vypocet prirozene mocniny cisla'); writeln('*******************************************'); writeln; write('Zadej cislo x: '); readln(x); write('Zadej cislo n: '); readln(n); writeln('x^n = ',Mocnina(x,n):10:4); writeln('Konec-enter'); readln; end.

Sestavte rekurzivní funkci pro výpočet n-tého členu rekurentně definované posloupnosti: a1 = 3, an+1 = 3*an - 2. Funkci použijte v programu pro výpočet n-tého členu posloupnosti pro zadané n.

program ClenPosloupnosti; {$APPTYPE CONSOLE} function Clen(n:integer):integer; begin if n=1 then Clen := 3 else Clen:= 3*Clen(n-1)-2; end; var n:longint; writeln('Program pro vypocet n-teho clenu posloupnosti'); writeln('*********************************************'); writeln; write('Zadej cislo n: '); readln(n); writeln('n-ty clen = ',Clen(n)); writeln('Konec-enter'); readln; end.

Sestavte rekurzivní funkci pro výpočet součtu cifer přirizeného čísla a použijte ji v programu pro výpočet součtu cifer zadaného přirozeného čísla.

program CifernySoucet; {$APPTYPE CONSOLE} function CifSou(n:longint):longint; begin if n<10 then CifSou := n else CifSou := n mod 10 + CifSou(n div 10) end; var n:longint; writeln('Program pro vypocet souctu cifer cisla'); writeln('**************************************'); writeln; write('Zadej cislo n: '); readln(n); writeln('Ciferny soucet = ',CifSou(n)); writeln('Konec-enter'); readln; end.

Sestavte rekurzivní proceduru pro výpočet největšího společného dělitele dvou čísel.

program RekurzivniEukleiduvAlgoritmus; // Eukleiduv algoritmus pro nalezení nejvetšího spolecného // dělitele dvou přirozených čísel pomocí rekurze. {$APPTYPE CONSOLE} var x,y,a,b,p:integer; procedure nsd1; begin if y<>0 then begin p:=y;y:=x mod y;x:=p; nsd1; end; function nsd2(x,y:integer):integer; nsd2:=nsd2(y,x mod y); end else nsd2:=x;

function nsd3(x,y:integer):integer; begin if x>y then nsd3:=nsd3(x-y,y) else if x<y then nsd3:=nsd3(x,y-x) if x=y then nsd3:=x; end; writeln('Program pro nalezeni nejvetsiho spolecneho delitele'); writeln('***************************************************'); writeln; write('Zadej dve cisla: '); readln(a,b); {prirazeni pro nsd1} x:=a; y:=b; nsd1; writeln('NSD1(',a,',',b,') = ',x); writeln('NSD2(',a,',',b,') = ',nsd2(a,b)); writeln('NSD3(',a,',',b,') = ',nsd3(a,b)); writeln('Konec - ENTER'); readln; end.

Sestavte rekurzivní proceduru pro převod čísla do dvojkové soustavy.

program DvojkovaSoustava; {$APPTYPE CONSOLE} procedure Bin(n:longint); begin if n<>0 then begin Bin(n div 2); write(n mod 2); end; var x:longint; writeln('Program pro prevod cisla do dvojkove soustavy'); writeln('*********************************************'); writeln; write('Zadej cislo: '); readln(x); bin(x); writeln('Konec-enter'); readln; end.