Baixe o app para aproveitar ainda mais
Prévia do material em texto
CURSO DE ILC -- 2018.1 LISTA DE EXERCICIOS No 4 0) Mapa de Karnaugh 0.1-Escreva a sentença lógica descrita pela tabela verdade abaixo: 0.2) Simplifique usando mapa de karnaugh (escreva a sentença simplificada) 0.3) desenhe o circuito simplificado RESPOSTA Circuito Simplificado S= TEORIA DA CONTAGEM 1- Três ingleses, quatro americanos e cinco franceses serão dispostos em fila (dispostos em linha reta) de modo que as pessoas de mesma nacionalidade estejam sempre juntas. De quantas maneiras distintas a fila poderá ser formada de modo que o primeiro da fila seja um francês? RESPOSTA 2-Uma corrida é disputada por 5 atletas. Quantos são os possíveis resultados para os dois primeiros lugares? RESPOSTA INDUÇÃO 1- Prove por indução matematica RESPOSTA RECURSÃO 1- Qual o resultado de executar a função recursiva abaixo XPTO(5) Funcao XPTO (n) Inicio Se n>0 Entao Print(n) XPTO(n-1) Fim RESPOSTA 2- Defina uma função recursiva que recebe dois números naturais m e n e retorna o produto de todos os números no intervalo [m,n]: m ×(m +1)×··· ×(n−1)×n 3- Defina uma função recursiva para calcular o comprimento de uma cadeia de caracteres RESPOSTA int comprimento_rec (char* s) { Se (s[0] == '\0') Retorna 0; Senão retorna 1 + comprimento_rec(&s[1]); } PROLOG Teste usando a versao Prolog na web https://swish.swi-prolog.org 1-O grafo a seguir representa um mapa, cujas cidades são representadas por letras e cujas estradas (de sentido único) são representados por números, que indicam sua extensão em km. a) Usando o predicado estrada(Origem,Destino,Km), crie um programa para representar esse mapa. b) Defina a relação transitiva dist(A,B,D), que determina a distância D entre duas cidades A e B. RESPOSTA estrada(a,b,25). estrada (b,c,19). estrada (a,d,23). estrada (c,d,14). estrada (b,e,32). estrada (e,f,26). estrada (c,f,28). estrada(d,f,30). distancia(X,Y,D):-estrada(X,Y,D). distancia(X,Y,D):-distancia(X,B,D1),distancia(B,Y,D2), D is D1+D2. 2) apaga(X,L1,L2) – onde L2 é a lista L1 sem o elemento X. Testar com: ?- apaga(a,[a,b,a,c],L). ?- apaga(a,L,[b,c]). RESPOSTA apaga(X,[X|R],R). apaga(X,[Y|R1],[Y|R2]):- apaga(X,R1,R2). 3) membro(X,L) – que é verdadeiro se X pertencer à lista L. Testar com: ?- membro(b,[a,b,c]). Retorna True ?- membro(f,[a,b,c]). Retorna false RESPOSTA membro( X, [X|_] ). membro( X, [_|R] ) :- membro( X, R ). 4) concatena(L1,L2,L3) – onde L3 é resultado da junção das listas L2 e L1. Testar com: ?- concatena([1,2],[3,4],L). L=[1,2,3,4] RESPOSTA concatena([],L,L). concatena([X|L1],L2,[X|L3]):- concatena(L1,L2,L3). 5) comprimento(X,L) – onde X é o número de elementos da lista L. Testar com: ?- comprimento(X,[a,b,c]). RESPOSTA comprimento(0,[]). comprimento(N,[_|R]):- comprimento(N1,R), N is 1 + N1. 6) maximo(X,L) – onde X é o valor máximo da lista L (assumir que L contém somente números). Testar com: ?- maximo(X,[3,2,1,7,4]). RESPOSTA max(X,[X]). max(X,[Y|R]):- max(X,R), X > Y, !. max(Y,[Y|_]). 7) media(X,L) – onde X é o valor médio da lista L (assumir que L contém somente números). Testar com: ?- media(X,[1,2,3,4,5]). RESPOSTA somatorio(0,[]). somatorio(X,[Y|R]):- somatorio(S,R), X is S+Y. media(X,L):- comprimento(N,L), somatorio(S,L), X is S/N. 8) nelem(N,L,X) – onde N é um número e X é o elemento da lista L na posição L. Por exemplo (testar com): ?- nelem(2,[1,2,3],2). ?- nelem(3,[1,2,3],X). ?- nelem(4,[a,b,c,d,e,f,g],X). RESPOSTA nelem(N,L,X):-nelem(N,1,L,X). nelem(N,N,[X|_],X):-!. nelem(N,I,[_|R],X):- I1 is I+1, nelem(N,I1,R,X).
Compartilhar