Prologo (programlingvo)

Prologo (angle Prolog, etimologie "PROgramado en LOGiko") estas programlingvo bazita sur la predikatkalkulo. En la 1970-aj jaroj, ĝi estis uzata precipe en projektoj de artefarita intelekto en Japanio. (Ial, en Usono kaj Eŭropo oni preferis Lispon por la sama fako.)

Programo en Prologo estas kolekto de asertoj kaj reguloj. La asertoj konsistas el predikatoj, logikaj operacisimboloj kaj konstantoj, kiuj kune formas datumbazon. La reguloj havas la formon de Horna esprimo.

Malgraŭ ĝia simpla kaj pure logika bazo, Prologo uzindas por diversaj specoj de programaro. Iam estis malvaste konata programo por instrui Esperanton al hispanparolantoj farita en Prologo.

Prologo estas utila por limiglogika programado (Constraint Logic Programming).

Jen simpla montra programo kun klarigoj:

%%%%% Asertoj

ino(katrino).                          % Katrino estas ino.
ino(elizabeto).                        % Elizabeto estas ino.
ino(anabelo).                          % Anabelo estas ino.

viro(georgo).                          % Georgo estas viro.
viro(johano).                          % Johano estas viro.
viro(benjameno).                       % Benjameno estas viro.

ido(benjameno, georgo).                % Benjameno estas ido de Georgo.
ido(katrino, georgo).                  % Katrino estas ido de Georgo.
ido(elizabeto, anabelo).               % Elizabeto estas ido de Anabelo.

gefratoj(georgo, anabelo).             % Georgo kaj Anabelo estas gefratoj.

%%%%% Reguloj

gefratoj(X,Y) :- ido(X,Z), ido(Y,Z),   % Se X kaj Y havas saman patr(in)on 
                 X \= Y.               % kaj ne estas sama persono,
                                       % estas gefratoj.

patro(X,Y) :-  ido(Y,X), viro(X).      % Se Y estas ido de X, kaj se X estas
                                       % viro, X estas la patro de Y.

patrino(X,Y) :- ido(Y,X), ino(X).      % Se Y estas ido de X, kaj se X estas
                                       % ino, X estas la patrino de Y.

fratino(X,Y) :- ino(X), gefratoj(X,Y). % Se X estas ino, kaj se X kaj Y estas
                                       % gefratoj, X estas la fratino de Y.

onklo(X,Y) :- gefratoj(X,Z), ido(Y,Z), % Se X kaj Z estas gefratoj, kaj se Y estas
              viro(X).                 % ido de Z, kaj se X estas viro, X estas
                                       % la onklo de Y.

nevino(X,Y) :- ino(X), onklo(Y,X).     % Se X estas ino, kaj se Y estas la onklo
                                       % de X, X estas la nevino de Y.

gekuzoj(X,Y) :- ido(X,A), ido(Y,B),    % Se X estas la ido de A, kaj se Y estas
                gefratoj(A,B).         % ido de B, kaj se A kaj B estas gefratoj,
                                       % X kaj Y estas gekuzoj.

Do, se oni tajpus patrino(anabelo, elizabeto)., la programo respondus Jes. Se oni tajpus fratino(benjameno, elizabeto)., la programo respondus Ne.

Eksteraj ligiloj

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.