coniugazione verbi latini regolari passivo
esci latinoturbo.htm

nota:listato da rivedere per opzione 2,3

 

program passivo;
(* coniugazione verbi latini passivi turbo pascal v.3 *)
(* scrivere USES CRT,TURBO3,PRINTER; se si usa turbo pascal v.5 *)
uses crt,printer;

const des1:array[1..73] of string[25]=('or','aris','atur',
'amur','amini','antur',
'abar','abaris','abatur','abamur','abamini','abantur',
'abor','aberis','abitur','abimur','abimini','abuntur',
'-us,-a,-um sum','-us,-a,-um es','-us,-a,-um est',
'-i,-ae,-a sumus','-i,-ae,-a estis','-i,-ae,-a sunt',
'-us,-a,-um eram','-us,-a,-um eras','-us,-a,-um erat',
'-i,-ae,-a eramus','-i,-ae,-a eratis','-i,-ae,-a erant',
'-us,-a,-um ero','-us,-a,-um eris','-us,-a,-um erit',
'-i,-ae,-a erimus','-i,-ae,-a eritis','-i,-ae,-a erunt',
'er','eris','etur','emur','emini','entur',
'arer','areris','aretur','aremur','aremini','arentur',
'-us,-a,-um sim','-us,-a,-um sis','-us,-a,-um sit',
'-i,-ae,-a simus','-i,-ae,-a sitis','-i,-ae,-a sint',
'-us,-a,-um essem','-us,-a,-um esses','-us,-a,-um esset',
'-i,-ae,-a essemus','-i,-ae,-a essetis','-i,-ae,-a essent',
'are','amini','ator','ator','antor',
'ari','-um,-am,um esse','-os,-as,a esse','-um iri',
'-us,-a,-um','-i,-ae,-a',
'-andus,-a,-um','u');

const des2:array[1..73] of string[25]=('eor','eris','etur',
'emur','emini','entur',
'ebar','ebaris','ebatur','ebamur','ebamini','ebantur',
'ebor','eberis','ebitur','ebimur','ebimini','ebuntur',
'-us,-a,-um sum','-us,-a,-um es','-us,-a,-um est',
'-i,-ae,-a sumus','-i,-ae,-a estis','-i,-ae,-a sunt',
'-us,-a,-um eram','-us,-a,-um eras','-us,-a,-um erat',
'-i,-ae,-a eramus','-i,-ae,-a eratis','-i,-ae,-a erant',
'-us,-a,-um ero','-us,-a,-um eris','-us,-a,-um erit',
'-i,-ae,-a erimus','-i,-ae,-a eritis','-i,-ae,-a erunt',
'ear','earis','eatur','eamur','eamini','eantur',
'erer','ereris','eretur','eremur','eremini','erentur',
'-us,-a,-um sim','-us,-a,-um sis','-us,-a,-um sit',
'-i,-ae,-a simus','-i,-ae,-a sitis','-i,-ae,-a sint',
'-us,-a,-um essem','-us,-a,-um esses','-us,-a,-um esset',
'-i,-ae,-a essemus','-i,-ae,-a essetis','-i,-ae,-a essent',
'ere','emini','etor','etor','entor',
'eri','-um,-am,um esse','-os,-as,a esse',
'-um iri',
'-us,-a,-um','-i,-ae,-a',
'-endus,-a,-um','u');

const des3:array[1..73] of string[25]=('or','eris','itur',
'imur','imini','untur',
'ebar','ebaris','ebatur','ebamur','ebamini','ebantur',
'ar','eris','etur','emur','emini','entur',
'-us,-a,-um sum','-us,-a,-um es','-us,-a,-um est',
'-i,-ae,-a sumus','-i,-ae,-a estis','-i,-ae,-a sunt',
'-us,-a,-um eram','-us,-a,-um eras','-us,-a,-um erat',
'-i,-ae,-a eramus','-i,-ae,-a eratis','-i,-ae,-a erant',
'-us,-a,-um ero','-us,-a,-um eris','-us,-a,-um erit',
'-i,-ae,-a erimus','-i,-ae,-a eritis','-i,-ae,-a erunt',
'ar','aris','atur','amur','amini','antur',
'erer','ereris','eretur','eremur','eremini','erentur',
'-us,-a,-um sim','-us,-a,-um sis','-us,-a,-um sit',
'-i,-ae,-a simus','-i,-ae,-a sitis','-i,-ae,-a sint',
'-us,-a,-um essem','-us,-a,-um esses','-us,-a,-um esset',
'-i,-ae,-a essemus','-i,-ae,-a essetis','-i,-ae,-a essent',
'ere','imini','itor','itor','untor',
'i','-um,-am,um esse','-os,-as,a esse',
'-um iri',
'-us-,-a,-um','-i,-ae,-a',
'-endus,-a,-um','u');

const des4:array[1..73] of string[25]=('ior','iris','itur',
'imur','imini','iuntur',
'iebar','iebaris','iebatur','iebamur','iebamini','iebantur',
'iar','ieris','ietur','iemur','iemini','ientur',
'-us,-a,-um sum','-us,-a,-um es','-us,-a,-um est',
'-i,-ae,-a sumus','-i,-ae,-a estis','-i,-ae,-a sunt',
'-us,-a,-um eram','-us,-a,-um eras','-us,-a,-um erat',
'-i,-ae,-a eramus','-i,-ae,-a eratis','-i,-ae,-a erant',
'-us,-a,-um ero','-us,-a,-um eris','-us,-a,-um erit',
'-i,-ae,-a erimus','-i,-ae,-a eritis','-i,-ae,-a erunt',
'iar','iaris','iatur','iamur','iamini','iantur',
'irer','ireris','iretur','iremur','iremini','irentur',
'-us,-a,-um sim','-us,-a,-um sis','-us,-a,-um sit',
'-i,-ae,-a simus','-i,-ae,-a sitis','-i,-ae,-a sint',
'-us,-a,-um essem','-us,-a,-um esses','-us,-a,-um esset',
'-i,-ae,-a essemus','-i,-ae,-a essetis','-i,-ae,-a essent',
'ire','imini','itor','itor','iuntor',
'iri','-um,-am,um esse','-os,-as,a esse',
'-um iri',
'-us,-a,-um','-i,-ae,-a',
'-iendus,-a,-um','u');


type stringa50=string[50];
var rad1,rad2,rad:string[12];
finale:string[3];
coniugazione,modo:string[50];
infinito:string[20];
t,yx,numero,c,d1,d2,pro,rs,re:integer;

procedure testo(x,y:integer;stringa:stringa50); (* stampa testi vari *)
begin
gotoxy(x,y);
writeln(stringa);
end;

procedure presenta; (* presentazione scopo programma *)
begin
writeln('il programma permette di coniugare i verbi regolari latini');
writeln('della 1,2,3,4 coniugazione passiva');
writeln('----------------------------------------------------------');
writeln('viene richiesto il paradigma del verbo da coniugare');
writeln('scrivere tutto in minuscolo:');
writeln('infinito,supino');
writeln('es.laudari,laudatu.......moneri,monitu');
writeln('es.legi,lectu............audiri,auditu');
writeln('----------------------------------------------------------');
writeln('si offrono varie opzioni:');
writeln('1....coniugazione automatica dei tempi richiesti');
writeln('2....coniugazione interattiva e correzione errori');
writeln('3....coniugazione automatica e stampa su carta');
writeln('4....coniugazione sequenziale tempi da 1 a 21 ');
writeln('.....in questo caso,premere return invece di numero tempo');
writeln;
writeln('.....possibile richiedere tempi e modi in vario ordine');
writeln('.....possibile cambiare verbo o modalita-auto-interattiva');
writeln;
writeln('premi return,prego');
readln;
clrscr;
end;

procedure fine; (* fine operazione *)
begin
clrscr;
case pro of
1:writeln('fine prova:arrivederci');
2:begin writeln('totale risposte esatte.....',re);
writeln('totale risposte errate.....',rs);
writeln('totale risposte............',re+rs);
end;
end;
writeln('premi return,prego');
repeat until keypressed;
halt;
clrscr;
end;


procedure pausa;
begin
gotoxy(2,22);
writeln('premi return,prego');
repeat until keypressed;
clrscr;
end;

procedure paradigma; (* richiesta paradigma verbo*)
var lunghezza:integer;
perfetto,prima,supino:string[20];
termine:string[3];

begin
writeln('SCRIVI PARADIGMA VERBO LATINO REGOLARE,come richiesto');
writeln;
writeln('scrivi infinito verbo latino regolare:es.laudari');
readln(infinito);
lunghezza:=length(infinito);
rad1:=copy(infinito,1,lunghezza-3);
finale:=copy(infinito,lunghezza-2,3);
if (finale <> 'ari') and (finale <> 'eri') and (finale <> 'iri')
then rad1:=copy(infinito,1,lunghezza-1);
writeln('scrivi forma del supino:es.laudatu');
readln(supino);
lunghezza:=length(supino);
rad2:=copy(supino,1,lunghezza-1);
end;

procedure analisi; (* riconoscimento coniugazione 1 2 3 4 *)
begin
if (finale='ari') then c:=1
else if (finale='eri') then c:=2
else if (finale='iri') then c:=4
else c:=3;

case c of
1: coniugazione:='prima coniugazione';
2: coniugazione:='seconda coniugazione';
3: coniugazione:='terza coniugazione';
4: coniugazione:='quarta coniugazione';
end;
end;

procedure tempo; (* indicazione tempo da coniugare *)
begin
clrscr;
textcolor(4);
writeln('scrivere numero per indicare tempo da coniugare');
writeln('1...presente indicativo');
writeln('2...imperfetto indicativo');
writeln('3...futuro semplice');
writeln('4...perfetto indicativo');
writeln('5...piuccheperfetto indicativo');
writeln('6...futuro anteriore');
textcolor(2);
writeln('7...presente congiuntivo');
writeln('8...imperfetto congiuntivo');
writeln('9...perfetto congiuntivo');
writeln('10..piuccheperfetto congiuntivo');
textcolor(3);
writeln('11..imperativo presente');
writeln('12..imperativo futuro');
writeln('13..infinito presente');
writeln('14..infinito perfetto');
writeln('15..infinito futuro');
writeln('16..participio perfetto');
writeln('17..gerundio ');
writeln('18..supino ');
writeln('0...per finire');
readln(numero);
if (numero=0) then fine;
textcolor(14);
clrscr;
end;


procedure coniuga1; (* coniugazione automatica su richiesta tempo *)
var a:integer;
begin
textmode(1);
textcolor(4);
testo(2,2,modo);
testo(45,2,coniugazione);
testo(45,3,'verbo:'+infinito);
writeln('----------------------------------');
textcolor(14);
for a:=d1 to d2 do
begin
case c of
1:writeln(rad,des1[a]);
2:writeln(rad,des2[a]);
3:writeln(rad,des3[a]);
4:writeln(rad,des4[a]);
end;
end;
writeln('------------------------------------');
end;

procedure stampa; (* coniugazione automatica e stampa *)
var a:integer;
begin
textmode(1);
textcolor(4);
testo(2,2,modo);
testo(45,2,coniugazione);
testo(45,3,'verbo:'+infinito);
writeln('-----------------------------------');
textcolor(14);
for a:=d1 to d2 do
begin
case c of
1:begin writeln(rad,des1[a]);writeln(lst,rad,des1[a]);end;
2:begin writeln(rad,des2[a]);writeln(lst,rad,des2[a]);end;
3:begin writeln(rad,des3[a]);writeln(lst,rad,des3[a]);end;
4:begin writeln(rad,des4[a]);writeln(lst,rad,des4[a]);end;
end;
end;
writeln('-----------------------------------');
end;

procedure coniuga2; (* coniugazione automatica sequenziale tempi *)
var a:integer;
begin
textmode(1);
textcolor(4);
testo(2,2,modo);
testo(45,2,coniugazione);
testo(45,3,'verbo:'+infinito);
writeln('------------------------------------');
textcolor(14);
for a:=d1 to d2 do
begin
case c of
1:writeln(rad,des1[a]);
2:writeln(rad,des2[a]);
3:writeln(rad,des3[a]);
4:writeln(rad,des4[a]);
end;
end;
writeln('---------------------------------');
end;

procedure prova1; (* coniugazione interattiva e correzione *)
var a:integer;
r:string[15];
persona:integer;
cambio:string[4];
begin
textmode(2);
textcolor(4);
testo(2,2,modo);
testo(45,2,coniugazione);
testo(45,3,'verbo:'+infinito);
writeln('-------------------------------------------------------');
textcolor(14);
writeln('scrivi la forma esatta:tutto in minuscolo');
writeln('altrimenti premi return:viene stampa forma richiesta');
writeln('-------------------------------------------------------');
yx:=8;
persona:=1;
for a:=d1 to d2 do
begin
str(persona,cambio);
yx:=yx+1;
persona:=persona+1;
testo(1,yx,'forma:'+cambio);gotoxy(12,yx);read(r);
case c of
1:if (r <> (rad+des1[a])) then testo(40,yx,rad+des1[a]);
2:if (r <> (rad+des2[a])) then testo(40,yx,rad+des2[a]);
3:if (r <> (rad+des3[a])) then testo(40,yx,rad+des3[a]);
4:if (r <> (rad+des4[a])) then testo(40,yx,rad+des4[a]);
end;
case c of
1:if (r <> (rad+des1[a])) then rs:=rs+1 else re:=re+1;
2:if (r <> (rad+des2[a])) then rs:=rs+1 else re:=re+1;
3:if (r <> (rad+des3[a])) then rs:=rs+1 else re:=re+1;
4:if (r <> (rad+des4[a])) then re:=rs+1 else re:=re+1;
end;
writeln;
end;
writeln('risposte esatte=',re,'....risposte errate=',rs,' su totale:',re+rs);
writeln('------------------------------------------------------------------');
end;

procedure decide; (* stabilisce desinenze e radici da usare *)
begin
case numero of
1:begin d1:=1;d2:=6;rad:=rad1;modo:='presente indicativo';end;
2:begin d1:=7;d2:=12;rad:=rad1;modo:='imperfetto indicativo';end;
3:begin d1:=13;d2:=18;rad:=rad1;modo:='futuro semplice';end;
4:begin d1:=19;d2:=24;rad:=rad2;modo:='perfetto indicativo';end;
5:begin d1:=25;d2:=30;rad:=rad2;modo:='piuccheperfetto indicativo';end;
6:begin d1:=31;d2:=36;rad:=rad2;modo:='futuro anteriore';end;
7:begin d1:=37;d2:=42;rad:=rad1;modo:='presente congiuntivo';end;
8:begin d1:=43;d2:=48;rad:=rad1;modo:='imperfetto congiuntivo';end;
9:begin d1:=49;d2:=54;rad:=rad2;modo:='perfetto congiuntivo';end;
10:begin d1:=55;d2:=60;rad:=rad2;modo:='piuccheperfetto congiuntivo';end;
11:begin d1:=61;d2:=62;rad:=rad1;modo:='imperativo presente';end;
12:begin d1:=63;d2:=65;rad:=rad1;modo:='imperativo futuro';end;
13:begin d1:=66;d2:=66;rad:=rad1;modo:='infinito presente';end;
14:begin d1:=67;d2:=68;rad:=rad2;modo:='infinito perfetto';end;
15:begin d1:=69;d2:=69;rad:=rad2;modo:='infinito futuro';end;
16:begin d1:=70;d2:=71;rad:=rad2;modo:='participio perfetto';end;
17:begin d1:=72;d2:=72;rad:=rad1;modo:='gerundio';end;
18:begin d1:=73;d2:=73;rad:=rad2;modo:='supino';end;
end;
end;

procedure programma; (* programma e scelta opzioni *)

begin
clrscr;
numero:=1;
writeln(' opzioni possibili:');
writeln('1...coniugazione automatica,senza interazione');
writeln('2...coniugazione con interazione e correzione errori');
writeln('3...coniugazione automatica e stampa su carta');
writeln('4...coniugazione sequenziale tempi da 1 a 18 ');
readln(pro);
paradigma; (* chiede presente infinito perfetto supino*)
analisi; (* ricerca coniugazione 1 2 3 4 *)
testo(2,20,coniugazione);

while numero <> 0 do
begin
tempo; (* chiede tempo da coniugare *)
decide; (* decide se automatica o interazione *)
case pro of
1:begin coniuga1;end; (* coniugazione automatica singoli tempi *)
2:begin prova1;end; (* coniugazione interattiva *)
3:begin stampa;end;
4:begin
for t:=1 to 18 do
begin
numero:=t;
decide;
coniuga2; (* coniugazione totale sequenziale *)
pausa;
end;
end;
end;
pausa;
end;
clrscr;
end;

procedure scelta;
var ch:char;
begin
textmode(2);
numero:=0;
writeln('per altra prova,premi S,per finire premi N');
readln(ch);
ch:=upcase(ch);
if ch='S' then programma
else fine;
end;

begin (* programma principale *)
clrscr;
textmode(2);
presenta; (* presentazione scopo programma *)
rs:=0;
re:=0;
programma;
scelta;
end.