coniugazione verbi latini regolari
program attivo1; (* coniugazione verbi latini attivi turbo pascal v.3 *) (* coniugazione automatica su richiesta tempo e modo *)
const des1:array[1..84] of string[10]=('o','as','at','amus','atis','ant', 'abam','abas','abat','abamus','abatis','abant','abo','abis','abit', 'abimus','abitis','abunt', 'i','isti','it','imus','istis','erunt', 'eram','eras','erat','eramus','eratis','erant', 'ero','eris','erit','erimus','eritis','erint', 'em','es','et','emus','etis','ent', 'm','s','t','mus','tis','nt', 'erim','eris','erit','erimus','eritis','erint', 'issem','isses','isset','issemus','issetis','issent', 'a','ate','ato','ato','atote','anto', 'are','isse','urum esse','uram esse','urum esse', 'uros esse','uras esse','ura esse','ans','antis', 'urus','ura','urum','andi','ando','andum','ando','um'); const des2:array[1..84] of string[10]=('eo','es','et','emus','etis','ent', 'ebam','ebas','ebat','ebamus','ebatis','ebant','ebo','ebis','ebit', 'ebimus','ebitis','ebunt', 'i','isti','it','imus','istis','erunt', 'eram','eras','erat','eramus','eratis','erant', 'ero','eris','erit','erimus','eritis','erint', 'eam','eas','eat','eamus','eatis','eant', 'm','s','t','mus','tis','nt', 'erim','eris','erit','erimus','eritis','erint', 'issem','isses','isset','issemus','issetis','issent', 'e','ete','eto','eto','etote','ento', 'ere','isse','urum esse','uram esse','urum esse', 'uros esse','uras esse','ura esse','ens','entis', 'urus','ura','urum','endi','endo','endum','endo','um'); const des3:array[1..84] of string[10]=('o','is','it','imus','itis','unt', 'ebam','ebas','ebat','ebamus','ebatis','ebant','am','es','et', 'emus','etis','ent', 'i','isti','it','imus','istis','erunt', 'eram','eras','erat','eramus','eratis','erant', 'ero','eris','erit','erimus','eritis','erint', 'am','as','at','amus','atis','ant', 'm','s','t','mus','tis','nt', 'erim','eris','erit','erimus','eritis','erint', 'issem','isses','isset','issemus','issetis','issent', 'e','ite','ito','ito','itote','unto', 'ere','isse','urum esse','uram esse','urum esse', 'uros esse','uras esse','ura esse','ens','entis', 'urus','ura','urum','endi','endo','endum','endo','um'); const des4:array[1..84] of string[10]=('io','is','it','imus','itis','iunt', 'iebam','iebas','iebat','iebamus','iebatis','iebant', 'iam','ies','iet', 'iemus','ietis','ient', 'i','isti','it','imus','istis','erunt', 'eram','eras','erat','eramus','eratis','erant', 'ero','eris','erit','erimus','eritis','erint', 'iam','ias','iat','iamus','iatis','iant', 'm','s','t','mus','tis','nt', 'erim','eris','erit','erimus','eritis','erint', 'issem','isses','isset','issemus','issetis','issent', 'i','ite','ito','ito','itote','iunto', 'ire','isse','urum esse','uram esse','urum esse', 'uros esse','uras esse','ura esse','iens','ientis', 'urus','ura','urum','iendi','iendo','iendum','iendo','um');
type stringa35=string[35]; var rad1,rad2,rad3,rad:string[12]; finale:string[3]; coniugazione,modo:string[35]; infinito:string[20]; t,numero,c,d1,d2,dx:integer;
procedure testo(x,y:integer;stringa:stringa35); (* 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 attiva'); writeln('----------------------------------------------------------'); writeln('viene richiesto il paradigma del verbo da coniugare'); writeln('scrivere tutto in minuscolo:'); writeln('presente,infinito,perfetto,supino'); writeln('es.laudo,laudare,laudavi,laudatum'); 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 prima forma indicativo presente:es.laudo'); readln(prima); lunghezza:=length(prima); termine:=copy(prima,lunghezza-1,2); if (termine='eo') then dx:=2 else dx:=3; repeat writeln('scrivi infinito verbo latino regolare:es.laudare'); writeln('se forma errata o non regolare,viene ripetuta la richiesta'); readln(infinito); lunghezza:=length(infinito); rad1:=copy(infinito,1,lunghezza-3); finale:=copy(infinito,lunghezza-2,3); until (finale = 'are') or (finale = 'ere') or (finale = 'ire'); writeln('scrivi perfetto indicativo:es.laudavi'); readln(perfetto); lunghezza:=length(perfetto); rad2:=copy(perfetto,1,lunghezza-1); writeln('scrivi forma del supino:es.laudatum'); readln(supino); lunghezza:=length(supino); rad3:=copy(supino,1,lunghezza-2); end;
procedure analisi; (* riconoscimento coniugazione 1 2 3 4 *) begin if (finale='are') then c:=1 else if (finale='ere') and (dx=2) then c:=2 else if (finale='ere') and (dx=3) then c:=3 else if (finale='ire') then c:=4;
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..gerundio '); writeln('19..supino '); writeln; writeln('0...per finire'); writeln('-------------------------------'); 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:=infinito;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:=66;rad:=rad1;modo:='imperativo futuro';end; 13:begin d1:=67;d2:=67;rad:=rad1;modo:='infinito presente';end; 14:begin d1:=68;d2:=68;rad:=rad2;modo:='infinito perfetto';end; 15:begin d1:=69;d2:=74;rad:=rad3;modo:='infinito futuro';end; 16:begin d1:=75;d2:=76;rad:=rad1;modo:='participio presente';end; 17:begin d1:=77;d2:=79;rad:=rad3;modo:='participio futuro';end; 18:begin d1:=80;d2:=83;rad:=rad1;modo:='gerundio';end; 19:begin d1:=84;d2:=84;rad:=rad3;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 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; (* 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.