coniugazione verbi latini regolari deponenti
esci latinoturbo.htm

program depone1;
(* coniugazione verbi latini deponenti turbo pascal v.3 *)
(* coniugazione automatica su richiesta tempo e modo *)

uses crt;

const des1:array[1..81] 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',
'-urum,-uram,-urum esse',
'-uros,-uras,-ura esse','ans','antis',
'-urus,-ura,-urum','-us,-a,-um ','andi','ando','andum','ando',
'-andus,-a,-um','um','u');

const des2:array[1..81] 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',
'-urum,-uram,-urum esse',
'-uros,-uras,-ura esse','ens','entis',
'-urus,-ura,-urum','-us,-a,-um ','endi','endo','endum','endo',
'-andus,-a,-um','um','u');

const des3:array[1..81] 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',
'-urum,-uram,-urum esse',
'-uros,-uras,-ura esse','ens','entis',
'-urus,-ura,-urum','-us,-a,-um ','endi','endo','endum','endo',
'-endus,-a,-um','um','u');

const des4:array[1..81] 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',
'-urum,-uram,-urum esse',
'-uros,-uras,-ura esse','iens','ientis',
'-urus,-ura,-urum','-us,-a,-um ','iendi','iendo','iendum','iendo',
'-iendus,-a,-um','um','u');

type stringa50=string[50];
var rad1,rad2,rad3,rad:string[12];
finale:string[3];
coniugazione,modo:string[50];
infinito:string[20];
t,numero,c,d1,d2: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 deponente');
writeln('----------------------------------------------------------');
writeln('viene richiesto il paradigma del verbo da coniugare');
writeln('scrivere tutto in minuscolo:');
writeln('infinito,supino');
writeln('es.imitari,imitatum');
writeln('----------------------------------------------------------');
writeln('.... opzioni:');
writeln('.....coniugazione automatica dei tempi richiesti');
writeln('.....possibile richiedere tempi e modi in vario ordine');
writeln;
writeln('premi return,prego');
readln;
clrscr;
end;

procedure fine; (* fine operazione *)
begin
clrscr;
writeln('fine prova:arrivederci');
writeln('premi return,prego');
repeat until keypressed;
halt; (* ritorna a turbo pascal *)
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:');
writeln('es.imitari,vereri,loqui,largiri.......');
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)
else rad1:=copy(infinito,1,lunghezza-3);
writeln('scrivi supino:es.imitatum,veritum,locutum,largitum');
readln(supino);
lunghezza:=length(supino);
rad2:=copy(supino,1,lunghezza-2);
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 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 presente');
writeln('17..participio futuro');
writeln('18..participio perfetto');
writeln('19..gerundio ');
writeln('20..gerundivo ');
writeln('21..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(2);
testo(2,2,modo);
testo(2,3,coniugazione);
testo(2,4,'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 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:=70;rad:=rad2;modo:='infinito futuro';end;
16:begin d1:=71;d2:=72;rad:=rad1;modo:='participio presente';end;
17:begin d1:=73;d2:=73;rad:=rad2;modo:='participio futuro';end;
18:begin d1:=74;d2:=74;rad:=rad2;modo:='participio perfetto';end;
19:begin d1:=75;d2:=78;rad:=rad1;modo:='gerundio';end;
20:begin d1:=79;d2:=79;rad:=rad1;modo:='gerundivo';end;
21:begin d1:=80;d2:=81;rad:=rad2;modo:='supino';end;
end;
end;

procedure programma; (* programma e scelta opzioni *)

begin
clrscr;
numero:=1;
writeln(' opzione possibile:');
writeln(' coniugazione automatica,senza interazione');
paradigma; (* chiede infinito supino*)
analisi; (* ricerca coniugazione 1 2 3 4 *)
testo(2,20,coniugazione);

while numero <> 0 do
begin
tempo; (* chiede tempo da coniugare *)
decide; (* stabilisce desinenze e radici da usare *)
coniuga1; (* coniugazione automatica singoli tempi *)
pausa;
end;
numero:=0;
end;

begin (* programma principale *)
clrscr;
textmode(2);
presenta; (* presentazione scopo programma *)
programma;
end.