Vous êtes sur la page 1sur 5

Universidad Nacional del Altiplano – Puno

Escuela Profesional de Ingeniería de Sistemas


CURSO: INTELIGENCIA ARTIFICIAL

GUÍA ACADÉMICA Nro. 6

TEMA: RECURSIVIDAD Y CICLOS

Apellidos y Nombres: ……………………………………… Nro. Matrícula: ….………

OBJETIVOS:

◊ Comprender las recursividades y ciclos en Prolog

REQUERIMIENTOS:

◊ PC con Windows y visual Prolog

PROCEDIMIENTO

La presente contiene una serie de programas con las que se plantea


implementar bucles y ciclos basados en programación lógica, basada en
recursividad.

PARTE 1: Sumatoria de Números.

El siguiente programa calcula la suma de los N primeros números:


S = 1 + 2 + 3 + ... + (N-1) + N

Domains
nro = integer
Predicates
nondeterm sumatoria(nro,nro).
Clauses
sumatoria(0,0). %predicado de parada
sumatoria(Num,Suma):- Num>0, NewNum=Num-1,
sumatoria(NewNum,NewSuma), Suma=NewSuma+Num.

Consultas:

Calcular la suma de los 5 primeros números:


GOAL sumatoria(5, X).
Respuesta:

Explique paso a paso como funciona el programa:

1
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

Mejore el programa anterior para que el número sea ingresado por teclado y el
resultado sea mostrado de forma adecuada:

A continuación se muestra un programa que suma los números pares de un


número ingresado.

Ejemplo: Ingresamos el número 7 y el programa debe de sumar:


2 + 4 + 6 = 12

Domains
nro = integer
Predicates
nondeterm sumapar(nro,nro).
Clauses
sumapar(0,0). %predicado de parada
sumapar(Num,Suma):- Num>0, Num mod 2 = 0, NewNum=Num-1,
sumapar(NewNum,NewSuma), Suma=NewSuma+Num.
sumapar(Num,Suma):- Num>0, Num mod 2 = 1, NewNum=Num-1,
sumapar(NewNum,Suma).

Consultas:

Calcular la suma de los números pares del número 5:


GOAL sumapar(7, X).
Respuesta:

Explique paso a paso como funciona el programa:

2
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

Desarrollar un programa que realice la siguiente suma:


S = 10 + 20 + 30 + 40 + … + (N-1) + N

PARTE 2: FACTORIAL DE NÚMEROS.

El siguiente programa calcula el factorial de un número:


F = N*N-1*N-2+......5*4*3*2*1

Domains
nro = integer
Predicates
nondeterm factorial(nro,nro)
leer(nro)
mostrar(nro)
main.
Clauses
factorial(1,1). %simbolo de Parada
factorial(Num,Fact):-Num>1, NewNum=Num-1,
factorial(NewNum,NewFact), Fact=Num*NewFact.
leer(X):-write("ingrese Nro: "), readint(X).
mostrar(S):-write("El Factorial es: ", S), nl.
main:-write("FACTORIAL DE UN NÚMERO: "), nl, leer(Num),
factorial(Num,Fact), mostrar(Fact), fail.
goal
main.

Ejecute el programa, ingrese datos y muestre los resultados que se obtienen:

Explique como funciona la recursividad.

Explique que son los símbolos o predicados de parada.

3
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

PARTE 3: SUMAS SUCESIVAS:

El programa le pedirá que ingrese cierta cantidad de números por teclado, los
cuales serán sumados.

Domains
nro = integer
Predicates
nondeterm sumasu(nro, nro)
leer(nro)
mostrar(nro)
Clauses
sumasu(Veces,Suma):-Veces>0, NewVeces=Veces-1, leer(Num),
sumasu(NewVeces,NewSuma), Suma=NewSuma+Num.
sumasu(0,0).
leer(Num):-write("Ingrese Número: "), readint(Num).
mostrar(Num):-write("El resultado es: ", Num).

Consultas:

Calcular la suma de 3 números ingresados por teclado:


GOAL write("SUMAS SUCESIVAS: "), nl, sumasu(3, Suma),
mostrar(Suma), nl, fail.
Respuesta:

Mejore el programa de modo que sume n números (n ingresado por teclado).

Mejore el programa de modo que halle el promedio de los n números:

4
Universidad Nacional del Altiplano – Puno
Escuela Profesional de Ingeniería de Sistemas
CURSO: INTELIGENCIA ARTIFICIAL

Mejore el programa de modo que halle el mayor y el menor de n números

CONCLUSIONES

RECOMENDACIONES

TRABAJO APLICATIVO

Desarrolle un programa que:


1. Muestre los n primeros términos de la siguiente sucesión:
-20, 20, -18, 19, -16, 18, -14, 17, …
2. Muestre los n primeros términos de la siguiente sucesión:
1, 3, 4, 7, 11, 18, …
3. Halle la sumatoria de los n primeros términos de la siguiente sucesión:
S = 1 + 3 + 4 + 7 + 11 + 18 + …
4. Ingresar la talla de n estudiantes (en centímetros), calcular el promedio de los
estudiantes. Luego si el promedio en mayor 170cm mostrar “Estudiantes altos”,
si en menor o igual a 170cm mostrar “Estudiantes normales” y si es menor a
150cm mostrar “Estudiantes pequeños”.
Nota: todos los datos debe se ser ingresados por teclado.

Vous aimerez peut-être aussi