Haskell.. Para kem gosta de programar

ate te podia fazer o trabalho nao é que fosse dificil a questao é que assim iamos apenas te enterrar assim como me enterrei quando era caloiro a pensar que faziam me o trabalho e depois passava no exame. aulas praticas nao faltes e tira duvidas lá
qualquer duvida posta aqui
 
humm, nc pensei k houvessem tantos LESI's pr aki....
eu tb sou caloiro e tb tenho esse tal trabalho pr fazer...tenho-m safado, tenho lido o livro do JBB k ajuda a compreender algumas coisas, mas, mais que isso, ver exercicios resolvidos e/ou resolvê-los para dp os interpretar é crucial! penso k ter a paciência d pegar num exercicio feito, matutar nele até o compreender na totalidade acaba por ser melhor do k ler o livro....

mas voltando ao trabalho, já tou kuase no fim mas o prob é k encravei aki numa função... pr km viu o enunciado do trabalho pratico é a 3 (d)...já tentei de diversas formas, mas n consigo fazer a lista d strings finais, consigo apenas que ela tenha um elemento, ao tentar fazer a recursividade pr preencher o resto da lista dá-m smpr erro!!! :\
alguém m pode dar uma ajudinha?!
 
O ideal seria mostrares aqui a tua função, para um gajo ver o erro e dizer-te..nao vamos fazer nos a função sem saber o definição que tens nas alineas anteriores..

Cumps
 
eu tenho isto d momento

saudaveis_rec :: Float -> [InfoNutricional] -> Refeicao -> [String]
saudaveis_rec v (h:t) [] = error ("Nao existem alimentos na refeicao!")
saudaveis_rec v (h:t) ((a, b):t) = saudaveis_rec' v (h:t) ((a, b):t) []

e para fazer a segunda parte da função já tentei através d acumuladores e a recursividade existia então numa função auxiliar chamada saudaveis_rec':

saudaveis_rec' v ((x, y, z, w):xs) ((a, b):t) (h:c) = if ((a==x) && (z < v)) then --> aki é k agora n sei o k colocar

v : é o valor dado
((x, y, z, w):xs) : é a lista dos alimentos
((a, b):t) : é a lista dos alimentos da refeição
(h:c) : é o acumulador. n sei s deva coloca-lo assim ou []

eu sei k td isto tá bastante confuso e tb eu m confundo um bocado à volta da função!!!
já tentei de outras formas, ms apaguei-as :\ pk n conseguia, bloqueava smpr qnd kero acrescentar elementos á lista final!!

dsc a confusão td!!
cumps
 
e irem pro forum da um ñ?????:x2: :x2: :x2:

emfim eu só fasso é esta pergunta, pk raio é k só ensinam isso na um, e num aplicam isso ás outras univs?
 
pessoalmente penso k o facto de usarmos haskell na UM p.ex. e scheme em outras univs é para nos habituarmos a uma estrutura logica diferente dakela k se calhar estamos habituados.
eu dei Pascal e C ao longo do secundário e agora tenho uma certa dificuldade em abstrair-me dessas linguagens pr programar em haskell!
penso k se pretende que todos os alunos assumam o mesmo patamar e comecem do zero a adquirir determinadas estruturas lógicas....
tudo isto pk nem todos os alunos provêem d cursos de informática e nem todos os alunos já tinham funcionado com programação antes....

espero n ter errado!!!... :)
 
Última edição:
LaNgSuYaR disse:
pessoalmente penso k o facto de usarmos haskell na UM p.ex. e scheme em outras univs é para nos habituarmos a uma estrutura logica diferente dakela k se calhar estamos habituados.
eu dei Pascal e C ao longo do secundário e agora tenho uma certa dificuldade em abstrair-me dessas linguagens pr programar em haskell!
penso k se pretende que todos os alunos assumam o mesmo patamar e comecem do zero a adquirir determinadas estruturas lógicas....
tudo isto pk nem todos os alunos provêem d cursos de informática e nem todos os alunos já tinham funcionado com programação antes....

espero n ter errado!!!... :)

é... de acordo com o que a MRC diz, "isto é para vocês ganharem bons hábitos de programação!!"

ok ok, mas há muita gente (eu incluido) que nunca programou na vida...
 
tb penso k sim...daí k haskell seja extremamente rigoroso!!
visto k em Pascal ou até em C a capitulação é indiferente em qualquer situação penso!...humm, podemos ter uma função definida a começar com letra maiúscula e ao longo do programa invoca-la com letra minúscula!
já em haskell há essa diferenciação pelo k nos obriga a ser mais rigorosos na programação que penso ser um bom hábito!!! :D no entanto dificil de conseguir, pelo menos pr mim!!!

lol...a minha dúvida persiste...ng m consegue dar uma ajudinha!? eu sei k tá bastante confuso, cm já disse, até pr mim tá confuso....se calhar o meu erro tenha passado somente por um parêntesis ou algo que pareça insignificante...lol
 
eu tantas respostas :| sim o naosei dve gostar que lhe façam o trabalho e depois vai apresenta-lo e nao sabe explicar nada! o stor manda-te dar uma curva!
eu ja peguei um bocado nisto, tambem tenho tido ajuda de algum pessoal do 2 e 3º ano..
penso que depois de feito se percebe bastante bem mas conseguir chegar la...
txii tantos engs!!!
 
Neo4 disse:
pessoal eu estou em LESI na UM e so digo que nao pesco nada de haskell!nas aulas praticas so vejo lume! teoricas igual! (faltei as 2 primeiras :s) o meu stor é o Joao Barros (aka jbb) ate esplica bem mas eu gostava de saber se nao ha por ai algum tuturial em portugues com 1 pekena introduçao ao haskell...tnho 1 work pa fazer chapeu!!
thnks


tens sorte de teres este ano o sauromon... jbb digo.. em x da frade... :)


Para quem queria a resposta da primeira:

Código:
cena :: [InfoNutricional] -> InfoNutricional
cena ((x,t,u,i):(o,p,k,l):[]) = if t>p then (x,t,u,i) else (o,p,k,l) 
cena ((x,t,u,i):(o,p,k,l):tail) = if t>p then cena ((x,t,u,i):tail) else cena ((o,p,k,l):tail)
nao cheguei a testar mas deve tar bem.
 
Última edição:
No ano passado tive a frade... depois deixei de ir às aulas porque não se aprendia nada lá :d bastava ler os acetatos e pronto... era a mesma coisa.

mas a cadeira foi facil... tive 15 de nota final sem grande esforço...
 
pk que em Lisboa se da Scheme e em Braga haskell?
Simples, pk virou-se para a programacao funcional (e nao para o haskell ou para o scheme). Lembraram-se disto, e agr eh ate se lembrarem de outra coisa =)
Agr, tb eh verdade, as univs podiam ter escolhido todas a mm linguagem :|

EDIT
@DarTaKaum

Nao uses o tail ali, pois ele ta erro com a funcao que existe no prelude, aqui na um usamos o xs (tb n gosto mto))
 
Última edição:
já agora....eu ao colocar toUpper no ghc dá-m erro....alguém conhece alguma função k susbstitua esta?
é k kero fazer uma auxiliar pr verificar 2 strings e dá-m erro ao fazer o toUpper :\
 
LaNgSuYaR disse:
já agora....eu ao colocar toUpper no ghc dá-m erro....alguém conhece alguma função k susbstitua esta?
é k kero fazer uma auxiliar pr verificar 2 strings e dá-m erro ao fazer o toUpper :\

import Char

a seguir ao module main deve ser dai o problema.

redhat:

sou de LESI tb.. ;) n curto o xs! :} mas axo k com o tail ali n deve dar problema pk é apenas um nome duma variavel... nao tou a invocar para fazer operações, mas como nao testei nao posso garantir. (:
 
Olá a todos,

Será que me podem ajudar ?

Estou aqui com um problema numa função, que passo a explicar:

Tenho de fazer uma função q recebe um filename e processa o conteudo desse ficheiro. O ficheiro é constituido por:
2 -> número de macros
A -> nome da Macro
456 -> string associada a macro
B -> idem
789 -> idem
123$A78$B -> texto

O output seria 12345678789
Alguem me ajuda no raciocínio do algoritmo desta função??
A função de leitura do file está feita.

Bgda
 
Chip disse:
Não, mas tirei lá o curso :D
Os profs que na altura percebiam menos que eu eram os de desenho e sistemas de representação computacional, Prof. Monteiro (Teóricas) e Flores (o meu das práticas, mas na generalidade, nenhum dos profs da cadeira percebia daquilo :D)

Oh Chip, hehehe Monteiro rules huh?
Bom, ao menos do Flores safei-me, apanhei o Mega.
Na altura da recepção e do enterro, era ver quem tinha a maior ressaca, o ppl ou o Mega.
Ahhh, bons tempos.

Btw: como alguém disse mas incompleto: LISP - Lots of Irritating and Stupid Parenthesis
 
Ajuda

Sou um novato em programação e preciso resolver o seguinte:

1- iguais2 que, dados dois números dê como resultado verdadeiro (True) se esses números forem iguais e falso (False) caso eles sejam diferentes.

2- iguais4 que, dados quatro números dê como resultado verdadeiro (True) se esses números forem iguais e falso (False) caso eles sejam diferentes, recorrendo à função iguais2.

3- iguala20 que, dado um número inteiro, retorna verdadeiro np caso desse número ser 20 e falso caso contário. (a) usando IFs. (b) usando "pattern matching"

o 1º ja resolvi

igual2 :: Int -> Int -> Bool
igual2 m n = (m==n)

quanto ao segundo se utilizar a mesmo forma funciona mas não consigo que funcione utilizando a função anterior

quanto ao 3º não sei como implementar a função if nesta linguagem, ja andei a ler mas não consigo

ALGUMA AJUDA..
 
iguais4 a b c d = if (iguais2 a b) && (iguais2 c d) then True else False

igual20 a = if (a==20) then True else False

igual20b 20 = True
igual20b _ = False


toma lá, tás a estudar isto onde?
 
Back
Topo