View Full Version : Mini curso de Programação


HecKel
18-11-2004, 15:02
Como ninguem tomou a iniciativa :P decidi pegar na ideia, vou colocando posts conforme me vá lembrando de "aulas" que possam ser uteis para os begginer em Programação para não tornar este post demasiado saturado, qualquer dica é sempre bem vinda ;)

Antes de começares a programar seja o que for é necessário sabes pensar como um programador:

- Um problema aparentemente pode parecer simples, mas certamente que é possivel decompor esse problema noutros mais simples ainda, dando um exemplo que normalmente dou aos caloiros da minha faculdade talvez seja mais fácil compreender a minha ideia:

Quais os procedimentos para abrir uma porta:
- Deslocar-se até à porta
- Verificar se a porta já está aberta
- Verificar se é necessário destrancar a porta
- Abrir a porta
- Confirmar se a porta foi aberta

O exemplo que dei é ridiculo, admito! Mas é o suficiente para transmitir a minha ideia.

Um problema pode parecer muito trivial, no entanto programar esse problema pode trazer várias dores de cabeça, e tentar dar demasiados passos de uma vez ou dá porcaria, ou nem sequer se obtêm resultados.

É chato resolver os problemas no papel antes de passar para o computador, mas as probabilidades de erros diminuem consideravelmente.

Para confirmarem que as variáveis vão obter os valores desejados em determinadas partes do programa, também é boa ideia a criação de tabelas de variáveis.

Basicamente uma tabela de variáveis, é uma tabela em que o programador vai preenchendo conforme vai "correndo" o código linha a linha (isto antes de meter no compilador, em principio já deve existir um depurador, esta sugestão é para minimizar os erros quando realmente for programar) escrevendo o valor da respectiva variável em determinado passo/linha.

A thread tão desejada já está iniciada, conto com a colaboração de todos, desculpem o texto, não foi nada preparado, foi apenas o que me ocurreu neste momento. Espero que as ideias possam ser uteis para quem está a dar os primeiros passos,

um abraço HecKel

HecKel
18-11-2004, 15:54
Por vezes quem pensa em seguir EngªInformática, ou outro curso ligado à programação fica sempre reticente quando vê os planos curriculares e encontra uma série de matemáticas, muitos se questionam para que serve a matemática na programação, as analogias que vou dar são de matéria de 7º ano, no entanto quanto mais desenvolvida estiver a matemática mais triviais vão parecer os problemas de algoritmia.

Grande parte das linguagens de Programação têm como bloco condicional principal o IF

Quem já tem alguma matemática já deve estar farto de sistemas...

Basicamente o que são sistemas?
São funções matemáticas cujos ramos respeitam determinadas regras, ou seja, respeitam condições.

Se repararem bem, essas condições dos sistemas acabam por ser condições booleanas(Verdadeiro ou Falso), normalmente aparecem sinais de maior, menor, igual, desigual, intervalos, etc e tal, esse ramo só é tido em conta quando essa condição é verdadeira, vejam como fica o seguinte exemplo numa linguagem de programação:

f(x) = 3x+1 ; Se x > 0
f(x) = 1 ; Se x <= 0

Em Programação:

If(x>0)
f = 3x+1 ;
else
f = 1 ;


Neste caso não seria necessário colocar um novo if para validar a segunda condição, uma vez que a segunda condição engloba o restante intervalo, vejamos como ficava o exemplo seguinte:

g(x) = 1/x ; Se x > 0
g(x) = - 1/x ; Se x < 0

Em Programação:

If(x>0)
g = 1/x ;
else
if(x<0)
g = - 1/x ;

Neste caso não existe valor definido para quando x = 0, g ficaria com o valor que tinha anteriormente (considerando que já tinha sido atribuido um valor antes deste bloco)


Poderia criar um post bastante extenso a dar exemplos, mas a ideia essencial deste post já foi dada,

um abraço HecKel

NoMercy
18-11-2004, 16:18
Está em sticky. A ver vamos como vais progredindo ;)

HecKel
18-11-2004, 17:47
Existem vários tipos de ciclos de repetição, cada linguagem de programação tem o seu formato próprio, e nem todas têm a mesma diversidade de ciclos de repetição, vou-me basear essencialmente em java nestes posts, no entanto a "logica" é a mesma....

Tal como disse no post anterior, vou-me basear na matemática nos meus exemplos.

Os for's são ciclos, normalmente finitos, de repetição. A analogia com a matemática não é tão trivial como um IF, requer um pouco mais de conhecimentos, na minha opinião as séries são um excelente exemplo de for's, tanto podem ser finitas, como não terem um limite especifico.

Imaginem a soma dos primeiros N numeros positivos, qual seria a expressão matemática desta soma?

n
Sum (i)
i=0

(Foi a melhor forma que encontrei para escrever isto :P)

Decompondo este somatório ficaria algo do género:

0 + 1 + 2 + 3 + 4 + 5 + ... + (n-1) + n

Basicamente trata-se de um ciclo em que existe uma variável que é incrementada a cada interacção, vejamos como ficaria em java:

for(i=0;i++; i<n)
sum += i ;

Traduzindo para por miudos...,

for(i=0; i++; i < n) significa: para i = 0, incrementado um em cada interacção, dá-se o comando que se segue enquanto i for menor que n.

sum += i ; significa: a variável sum é igual á soma da própria variável com a variável i


Tal como disse anteriormente também é possivel criar ciclos for infinitos, no entanto não acho necessidade de exemplificar a sua utilidade, uma vez que pelo exemplo anterior é possivel deduzir vários exemplos semelhantes....

um abraço HecKel

Kermit the frog
18-11-2004, 18:24
Boa aposta, achei a ideia bastante interessante e plo que vi até agora, tou a gostar da forma como abordas os problemas, bem como os exemplos que dás... nice one... ;)

_freelancer_
18-11-2004, 19:04
Epa eu na minha humilde opinião que pode parecer arrogante mas pelo contrário é realista acho que programar não é para todos porque nem toda a gente consegue estruturar um problema lógicamente e depois converter isso em programação.

Eu vejo que por exemplo colegas meus/inhas que lhes é dado um problema para resolver em VB, eles colam-se ao monitor, começam a escrever onde calha e vão exprimentando a ver se sai alguma coisa sem antes pensarem como vão resolver o problema. Já agora, deixo aqui um pequeno desafio para resolverem na linguagem que quiserem desde que esta seja orientada a objectos:
Têm uma label com "Techzone Rullez" e esta label vai-se mover lentamente até ao limite direito do form, quando lá chegar sorteia aleatóriamente um tamanho onde a label irá partir e a segunda "metade" da label fica parada no limite do form e a primeira metade começa a andar para a esquerda até tocar no limite esquerdo do form, quando la chega toca e muda de direcção novamente e quando chegar à outra label, as duas "encaixam" e andam ambas para a esquerda repetindo tudo de novo mas desta vez ficando fixo na esquerda e mexendo a segunda metade.

;)

teknix
18-11-2004, 19:34
.... Já agora, deixo aqui um pequeno desafio para resolverem na linguagem que quiserem desde que esta seja orientada a objectos:
Têm uma label com "Techzone Rullez" e esta label vai-se mover lentamente até ao limite direito do form, quando lá chegar sorteia aleatóriamente um tamanho onde a label irá partir e a segunda "metade" da label fica parada no limite do form e a primeira metade começa a andar para a esquerda até tocar no limite esquerdo do form, quando la chega toca e muda de direcção novamente e quando chegar à outra label, as duas "encaixam" e andam ambas para a esquerda repetindo tudo de novo mas desta vez ficando fixo na esquerda e mexendo a segunda metade.

;)
ò calão , também queres que te façam os TPC's ? :D:D:D
bom truque...quase que colava :-D :-D :-D




ps: pede ajuda ao partenão e ao nadador que eles são barras nisso :zzz

P4rthen0n
18-11-2004, 20:19
Tu deves andar na perseguicao ou sei la :rolleyes: :D

Agora a falar a serio, o Swimmer ja lhe anda a dar no Pascal, eu inda tou nas bases (falta de estudo :(, coisa k vai mudar).

Heckel, tou contigo, gostei bastante da ideia e vou ler. :)

fish
18-11-2004, 22:21
mas isto e so pessoal da fct? :P

heckel boa iniciativa, fizeste bem em começar com noções de algoritmos antes de implementares logo isso. mas n deste o exemplo clássico da receita :D

Kermit the frog
18-11-2004, 23:33
ò calão , também queres que te façam os TPC's ? :D:D:D
bom truque...quase que colava :-D :-D :-D




ps: pede ajuda ao partenão e ao nadador que eles são barras nisso :zzz

HAHAHA BUSTED...sim é claramente um bom desafio pó p4rthen0n :x2: .

Agora a falar a serio, o Swimmer ja lhe anda a dar no Pascal, eu inda tou nas bases (falta de estudo , coisa k vai mudar).

Pareceume ouvir na segunda (n me lembro bem...), tlv tenha sido até na semana passada, que nesta semana q decorre irias começar a estudar "violentamente" pascal e que irias dominar, pois tinhas de justificar um trabalho ao prof...com que então não andas a fazer os "tpc's"

(tou paqui a falar mas... :fart: )


mas isto e so pessoal da fct?
heckel boa iniciativa, fizeste bem em começar com noções de algoritmos antes de implementares logo isso. mas n deste o exemplo clássico da receita


Ah pois caro amigo...o pessoal da fct invadiu isto...ou será antes o pessoal da techzone invadiu a fct?!

Já quele n se quis armar em cozinheiro, podes smp ser tu a dá-la...xuta ai a receita do pastelinho de bacalhau... :cool:

_freelancer_
19-11-2004, 06:27
mas vocês acreditam em tudo o que esse sr. de idade vos diz? ele até vos engana com aqueles botões falsos ... :fart: a mim é que não me enganas porque uso o outro theme :009:

sim aquilo já foi um TPC meu e sim já o fiz :D

NoMercy
19-11-2004, 11:06
Agradecia-se que não spamassem nesta thread a fim de a manter clara e objectiva.
Tudo o que não tiver directamente a ver com o tópico da mesma, é spam, correcções e dúvidas descontandas, obviamente.

HecKel
19-11-2004, 15:18
mas isto e so pessoal da fct? :P

heckel boa iniciativa, fizeste bem em começar com noções de algoritmos antes de implementares logo isso. mas n deste o exemplo clássico da receita :D

O velho do Hello Word! pode esperar :P

Quando falei no IF esqueci-me de mensionar o CASE, vou agora falar dessa, acho que ainda vou a tempo ;)

O CASE é uma instrução dispensável até certo ponto..., o IF dá conta da situação, até uma certa parte, no entanto em alguns problemas as restrições são tantas que o quem vier ver o programa fica mesmo :wow:

Nestes casos o CASE é uma "ferramenta" muito util, além da rapidez comparada com o IF quando equiparada com muitas restrições, o CASE também melhora o "aspecto" do programa, torna-o mais perceptivel tanto para quem o lê, como para quem o pretende "alterar".

Como exemplo, fica um sistema, tal como no if, com umas quantas mais ramificações:

f(x) = ln(x) ; se x = 1
f(x) = e^x ; se x = -1
f(x) = 2 ; se x = 2
f(x) = -2 ; se x = -2
f(x) = e^(-x) ; se x != -1 e x != 1

em Pseudo-código ficaria:
select (x)
case 1 : f= ln(x) ;
case -1 : f = e^x ;
case 2 : f = 2 ;
case -2 : f = -2 ;
case else : e^(-x) ;
* Pseudo-código: Não é uma linguagem de programação, serve para estruturar programas, usado normalmente para evitar, existem regras no pseudo-código, no entanto não respeitei nenhuma delas no exemplo que dei, de qualquer das formas também não se pode dizer que aquele exemplo seja numa linguagem de programação concreta, uma vez que o meu objectivo foi apenas exemplificar como poderia ser resolvido o problema.
um abraço HecKel

PS -> obrigado pelos comentários ;)

HecKel
20-11-2004, 02:10
Anteriormente já falei no ciclo for, um ciclo que por norma tem um valor a ser incrementado, ou decrementado, agora vou falar de ciclos que dependem de uma condição booleana....

Imaginem que agora têm um problema que assim que olha para ele vêm que é um ciclo, com um pequeno pormenor, não sabem quando pode acabar..., depende de uma expressão...

O exemplo seguinte seria facil de transpor para um ciclo FOR, no entanto serve apenas para expor a ideia destes ciclos:

i != j
Sum i-j
i=0

Num ciclo WHILE ficaria algo como:

while(i !=j ) do {
f = i-j ;
i = i+1 ;
}


Cada linguagem de programação pode ter uma forma própria de abordar estas instruções, de uma forma ou de outra existe sempre forma de criar blocos de repetição com este formato.

No caso do Assembly nem sequer existem ciclos de repetição "controlados" como ilustrei no exemplo, mas isso já são outros assuntos mais avançados para a ideia que pretendo transmitir.


um abraço HecKel

HecKel
21-11-2004, 22:07
Nos posts anteriores falei das instruções mais usuais na grande maioria das linguagens de programação, agora vou entrar numa área que gera maior “discução”de opiniões, como utilizar funções/procedimentos...

Quero deixar bem explicito, que este post baseia-se apenas na minha opinião pessoal sobre o que considero mais correcto para a utilização de funções/procedimentos, não faltam teorias sobre a forma de utilização das mesmas, o que não implica que umas sejam mais correctas que outras.

Imaginem que agora têm uma equação em que dava jeito o recurso a calculos auxiliares.

Como devem saber, nem todos os calculos auxiliares devolvem um valor explicito, por vezes um gráfico serve de calculo auxiliar, é aqui que entra a principal diferença entre função e procedimento.

Uma função, tal como na matemática, serve para devolver um valor, não é suposto a meio de uma função meteres notas, isso são calculos auxiliares, ou seja, outras funções(procedimentos neste caso, como veremos adiante).

Isto é, uma função serve unica e exclusivamente para calcular e devolver algo, independentemente do tipo da função, e devolver o respectivo resultado, não é suposto pedidos de dados ao utilizador, nem imprimir para o ecrã resultados, isto só iria tornar o código mais confuso, menos evidente, e com trapalhada desnecessária.

Um procedimento é a outra parte dos calculos auxiliares, onde podemos calcular algo, “escrever” notas, apenas por uma questão de organização, algo que no decorrer do calculo da equação poderia ser dispensável.

No entanto criar uma função cuja utilização é demasiado limitada, apenas se justifica caso o algoritmo seja algo complicado, ou pouco evidente, a maior utilidade de uma função/procedimento é a reutilização das mesmas para evitar a redundância de código no programa.

Uma listagem demasiado grande de funções e procedimentos cujo unico objectivo é uma tentativa de melhor legibilidade do programa também pode trazer desvantagens, pode tornar o programa demasiado “grande”, em vez de melhorar a legibilidade pode tornar o programa mais confuso para um outro programador, entre outras coisas...

Resumidamente, o uso de funções e procedimentos deverá ser feito de forma ponderada e organizada, independetemente da forma como consideram ideal no uso das mesmas.

um abraço HecKel

Paos[CeRe4L]
15-02-2005, 16:15
Achei por bem colocar aqui um contributo acerca de como iniciar o desenvolvimento de um programa.

Em 1º lugar deverá de se esquematizar o nosso problema da forma mais simples possível, com quadrados, rectangulos e losangos...como quiserem. Somente para saberem qual o problema a analisar.
De seguida vamos centrar-nos no nosso problema. Sengundo uma das leis de Murphy: todo o problema é mais complicado do que parece!" é necessário decompor o problema em sub-problemas mais simples, de forma a se chegar a um ponto em que já não se pode decompor mais os problemas. Tudo isto esquematizado com setinhas e rectangulos e quadrados. Basicamente o que se deve de usar é fluxogramas.
Agora que temos o nosso problema decomposto em vários sub-problemas todos de carácter simples, é necessário verificar quais as interacções entre os diferentes blocos de sub-problemas.
No fim de tudo esquematizado, aconselho a escreverem o programa em pseudo-código. Não é obrigatório. Mas pode vir a ajudar. Por fim falta somente escrever o vosso programa (tendo por base os esquemas anteriormente feitos) na linguagem desejada.

Atenção: não se metam logo a programar e a escrever linhas e linhas de código porque o mais provável é terem de apagar tudo.

Outra coisa importante é fazer uma separação modularizada do vosso programa, ou seja, não coloquem 300 linhas de código numa só função que contém todo o programa. Para além de ser uma má prática, torna mais complicada a detecção de erros e a compreensão do código por parte de outras pessoas. É preferível escrever um maior número de funções com 3 ou 4 linhas de código. É uma questão de experimentarem e verem por voces.

Este meu post não se foca sobre nenhuma linguagem em especial, mas acho por bem quem se está a iniciar no mundo da programação a ler atentamente este post e a tentar levá-lo o mais á risca (pelo menos durante os primeiros tempos).

Abraços e bons programas! []

fap
15-02-2005, 16:58
(...) Basicamente o que se deve de usar é fluxogramas.

basicamente depende muito da linguagem que vais usar...quero ver alguém a usar uma linguagem OO e a fazer fluxogramas em vez de fazer UML, diagramas de colaboração, interacção e outros que tais...

mas boa iniciativa ;)

NoMercy
15-02-2005, 17:20
É verdade, alem do mais, pelo menos o UML é standartizado o que facilita a comunicação entre todas as pessoas intervenientes no processo, incluindo os "stakeholders".

Paos[CeRe4L]
15-02-2005, 19:04
basicamente depende muito da linguagem que vais usar...quero ver alguém a usar uma linguagem OO e a fazer fluxogramas em vez de fazer UML, diagramas de colaboração, interacção e outros que tais...

mas boa iniciativa ;)

fap, tou a partir do principio de que o ppl que se tá a iniciar ta a começar com linguagens imperativas...estilo C, Pascal ou um fabuloso Scheme!

Isso em OO é outra coisa! Interacção de classes ainda é mt para quem se ta a iniciar.
Mas por exemplo, na faculdade de ciências o ppl começa por aprender Java...mas andam meio-semestre a trabalhar somente com uma classe e a programar imperativamente...enfim! lol

fap
15-02-2005, 19:34
o Scheme não é programação imperativa, é programação funcional.

mas ok...sticking to the topic :)

Lancaster
15-02-2005, 19:48
Heyas all...

Aproveitar e tirar umas dúvidas (maneiras de eu conseguir organizar o código de maneira a que eu próprio o consiga decifrar passado uns tempos rende sempre...)

Uma função, tal como na matemática, serve para devolver um valor, não é suposto a meio de uma função meteres notas, isso são calculos auxiliares, ou seja, outras funções(procedimentos neste caso, como veremos adiante).



Ou seja, antes de chamar-mos a função, pedimos sempre a inserção dos dados certo?

Um procedimento é a outra parte dos calculos auxiliares, onde podemos calcular algo, “escrever” notas, apenas por uma questão de organização, algo que no decorrer do calculo da equação poderia ser dispensável.

Quando aqui falas em procedimentos (e agora falando em C++), para fazer estes cálculos auxiliares, usa-se uma classe auxiliar (ou funções dentro da mesma classe) para fazer estes cálculos....é isso que estás a dizer certo?


No entanto criar uma função cuja utilização é demasiado limitada, apenas se justifica caso o algoritmo seja algo complicado, ou pouco evidente, a maior utilidade de uma função/procedimento é a reutilização das mesmas para evitar a redundância de código no programa.

A ver se eu consigo perceber isto...eu quando quero programar qq coisa(uma aplicação que faz isto ou aqueloutro) desenvolvo um algortimo para resolver o problema que tenho....se tiver outra aplicação para programar vou ter outro algortimo para a resolver, ou estás a falar em relação a procedimentos que podem ser reutilizados em mais do que uma aplicação? Por exemplo escrita num ficheiro, ordenação de vectores, listas, etc..etc...

Hasta all e tx [[]]

Paos[CeRe4L]
15-02-2005, 20:03
o Scheme não é programação imperativa, é programação funcional.

mas ok...sticking to the topic :)

Isso agora depende. PErcebo pq dizes isso, já que o Scheme é um "derivado" do LISP. MAs pelo menos no meu 1º ano com scheme conseguimos dar uma ideia geral de imperativa, OO e funcional!

fap
16-02-2005, 00:13
']Isso agora depende. PErcebo pq dizes isso, já que o Scheme é um "derivado" do LISP. MAs pelo menos no meu 1º ano com scheme conseguimos dar uma ideia geral de imperativa, OO e funcional!

não depende não...eu consigo fazer uma aplicação OO em C (apesar do bruto trabalho) mas não é por isso que C passa a ser uma linguagem OO...

claro que consegues dar uma ideia desses tipos de programação mas isso não muda o estilo de programação nativa da linguagem...acredita que no projecto de IA que vais ter vais usar muitos let's e provavelmente nem vais usar recursão...hás de martelar partes daquilo para ser mesmo imperativo, e não será por isso que o LISP passará a ser linguagem imperativa

Paos[CeRe4L]
16-02-2005, 01:16
fap, mas tu n leste o q eu escrevi? Ppl da FCUL que programa imperativamente em JAVA? claro que dá para fazer. Em Scheme dá-se um pco dos 3 tipos de programação. Claro que em C podes fazer cenas OO, mas é sempre mais simples fazer uma cena OO numa linguagem OO.

fap
16-02-2005, 08:08
']fap, mas tu n leste o q eu escrevi? Ppl da FCUL que programa imperativamente em JAVA? claro que dá para fazer. Em Scheme dá-se um pco dos 3 tipos de programação. Claro que em C podes fazer cenas OO, mas é sempre mais simples fazer uma cena OO numa linguagem OO.

tu é que não deves ter lido o que eu escrevi...disse exactamente isso...
pondo assim nas tuas palavras e alterando C por Scheme e OO por imperativo "Claro que em Scheme podes fazer cenas imperativas, mas é sempre mais simples fazer uma cena imperativa numa linguagem imperativa", percebes o que quero dizer?

Scheme é funcional :P

NoMercy
16-02-2005, 09:46
@Lancaster, se estás a perguntar ao user HecKel nota que ele já não anda por aqui porque foi banido por alguma razão.

Lancaster
16-02-2005, 11:07
@Lancaster, se estás a perguntar ao user HecKel nota que ele já não anda por aqui porque foi banido por alguma razão.

Heyas..

Yah...bem visto...só agora é que vi...banido? Estranho..o gajo até era porreiro...
Deve ter feito muita trampa para merecer...

Hasta all e tx NoMercy...[[]]

HecKel
02-07-2005, 18:59
Bastante tarde..., por motivos obvios..., mas não deixo de responder :P (Pode parecer spam, mas pode dar jeito a alguns....)

Heyas all...

Aproveitar e tirar umas dúvidas (maneiras de eu conseguir organizar o código de maneira a que eu próprio o consiga decifrar passado uns tempos rende sempre...)




Ou seja, antes de chamar-mos a função, pedimos sempre a inserção dos dados certo?


Yep, o código fica mais organizado para quem o vai ler a seguir, e até porque podes vir a necessitar desses dados numa outra chamada mais à frente, assim não tens de voltar a pedi-los :D

Quando aqui falas em procedimentos (e agora falando em C++), para fazer estes cálculos auxiliares, usa-se uma classe auxiliar (ou funções dentro da mesma classe) para fazer estes cálculos....é isso que estás a dizer certo?


Sim, esse bloco de código pode vir a ser util noutro sitio, em vez de teres um código demasiado redundante, tens várias funções com problemas simples.

A ver se eu consigo perceber isto...eu quando quero programar qq coisa(uma aplicação que faz isto ou aqueloutro) desenvolvo um algortimo para resolver o problema que tenho....se tiver outra aplicação para programar vou ter outro algortimo para a resolver, ou estás a falar em relação a procedimentos que podem ser reutilizados em mais do que uma aplicação? Por exemplo escrita num ficheiro, ordenação de vectores, listas, etc..etc...

Hasta all e tx [[]]

Ou em mais do que uma aplicação(copy paste para o outro programa) ou dentro da mesma aplicação, por exemplo, imagina que tens de fazer uma série de calculos, e nesses cálculos aparece umas 3-4 vezes a série resolvente, mas com dados diferentes, basta-te teres uma função que recebe o a, b e c que vai servir para essas 3-4 vezes com valores diferentes ;)

um abraço HecKel

SpEeDyGoNzAlEs
14-07-2005, 18:11
Boas.

Estão todos a esquecer-se de algo fundamental em programação, que são os comentários.
Em tudo aquilo que façam (mesmo no que aparenta ser de simples "leitura") metam comentários. O que faz, como faz, porque faz.

Vão ver que, uns meses depois, podem ser extremamente úteis... :)

Cya.

kingdom
14-07-2005, 18:21
Boas.

Estão todos a esquecer-se de algo fundamental em programação, que são os comentários.
Em tudo aquilo que façam (mesmo no que aparenta ser de simples "leitura") metam comentários. O que faz, como faz, porque faz.

Vão ver que, uns meses depois, podem ser extremamente úteis... :)

Cya.

concordo plenamente....os comentários são do mais util que existe para lermos e compreendermos o código dos outros e até o nosso...Já várias vezes que me serviram de muito e continuarão a servir...

Cumps

llclg
09-07-2007, 00:21
Por vezes quem pensa em seguir EngªInformática, ou outro curso ligado à programação fica sempre reticente quando vê os planos curriculares e encontra uma série de matemáticas, muitos se questionam para que serve a matemática na programação, as analogias que vou dar são de matéria de 7º ano, no entanto quanto mais desenvolvida estiver a matemática mais triviais vão parecer os problemas de algoritmia.



Poderia criar um post bastante extenso a dar exemplos, mas a ideia essencial deste post já foi dada,

um abraço HecKel
so uma coisa eu ando no 9º ano e nunca vi nenhuma aberração assim...
como e que f(x)=3x+1
f(x)=1??????? = (
enato essa do 0> x e dps poes 0< = 0???? nunca vi tal coisa (ainda por cima no 7º??) dis-me a materia a que te referiste, talvez seja erro meu!!

HecKel
09-07-2007, 00:24
Que grande bump :P

Imagina que x=0 :) 3 vezes 0 = 0

HecKel

Nabais
09-07-2007, 09:25
Exactamente. Se o x for 0, então f(0) = 3x0 + 1, o que faz com dá 1.

Isso do se x > 0 não é para trocar valores, é uma condição. Ex:

Resolve f(x)=3x+1, se x>0, significa que o valor final tem que ter x maior que 0. A parte do x>0 não é para resolver, mas sim para ajudar.

_freelancer_
09-07-2007, 09:56
Exactamente. Se o x for 0, então f(0) = 3x0 + 1, o que faz com dá 1.

Isso do se x > 0 não é para trocar valores, é uma condição. Ex:

Resolve f(x)=3x+1, se x>0, significa que o valor final tem que ter x maior que 0. A parte do x>0 não é para resolver, mas sim para ajudar.

Quando te dão x>0 então não estamos a falar do valor final mas sim do objecto da função, ou seja, estamos a limitar o domínio da função. Neste caso, inicialmente, x pertence a R (funções polinomiais são contínuas em todo o R), se estamos a dizer x > 0, então estamos a limitar o domínio com x pertence a ]0;+(inf)[, também representado por R+.

Eu acho que o truque da matemática é essencialmente ter um bom domínio de todos os termos que são utilizados, do género, quando alguém vos pede para calcular o domínio de uma função (neste caso só de 1 variável), o ideal mesmo é vocês imaginarem logo com o que gráfico estão a trabalhar. Outro exemplo é quando vos pedem os zeros ou raizes, se vocês já souberem imediatamente que um zero é quando o gráfico da função corta o eixo Y E se souberem que o eixo Y é descrito por x = 0, então o que nós queremos é que o gráfico da nossa função f(x) (seja uma curva ou recta) tenha imagem 0, isto é f(x) = 0.

Eu no secundário tinha grandes problemas em separar o que são imagens do que são objectos, aliás, tinha grandes problemas em tudo o que metia funções e polinómios. Hoje em dia, se eu não dominasse isso de olhos fechados, ainda não tinha feito a cadeira de ALGA (Algebra Linear e Geometria Analítica). E de certa forma hoje em dia, eu olho para a matéria do secundário e vejo ... "fnx, eu entrei no superior com 9,5 a matemática com esta matéria?! quem me dera voltar atrás :)".

O que vos posso dizer é: apliquem-se, é certo que matemática pouco ou nenhuma aplicabilidade prática e palpável tem na programação e quem sabe na informática em geral, mas ainda assim quando lhe apanharem o gosto até vão dar por vocês a inventar com a matemática. :)

O que é preciso se calhar é tempo, é menos gajas e copos e mais marranço. Eu o semestre passado havia dias em que saía ás 23:30 por causa exactamente de Álgebra, e posso dizer que voltava a fazer o mesmo, porque valeu a pena, passei (e no mesmo dia fiz uma mossa no carro mas isso são detalhes :-D). Este semestre que acabou, às sextas feiras eu passei-as todas das 9 da manhã (a começar com Matemática 2) até às 21h (a acabar com interacção com o utilizador) na escola, 12 horinhas seguidas a marrar. Valeu a pena? Se valeu! Passei a essas duas também.

Agora eu vejo-vos a queixarem-se de passar das 8:30 às 17:30 na escola e da matéria ser difícil ... olhem, deiam graças ao que têm e peçam ao tempo para não andar tão depressa porque um dia vão olhar para trás e pensar: foge .. que bela vida que tinha :002: [basicamente é isso que estou a fazer].

Baderous
09-07-2007, 10:00
Outro exemplo é quando vos pedem os zeros ou raizes, se vocês já souberem imediatamente que um zero é quando o gráfico da função corta o eixo Y E se souberem que o eixo Y é descrito por x = 0, então o que nós queremos é que o gráfico da nossa função f(x) (seja uma curva ou recta) tenha imagem 0, isto é f(x) = 0.

No meu tempo, os zeros era quando o gráfico da função intersectava o eixo das absissas aka eixo dos xx. Disseste bem no fim com o f(x)=0, mas no início trocaste as coisas. :)

ALGA? Que cadeira mais fácil, tirando a parte dos espaços vectoriais xD...(claro que tens todo o mérito em tê-la feito!)

Nabais
09-07-2007, 10:01
Hei, não me mistures aí, que já acabei o 12º há 6 anos :x2: É normal lembrar-me de pouca coisa...

Não segui faculdade porque não quis, tinha média para entrar imediatamente... Hoje em dia vejo que até devia ter seguido, mas começo a pensar 2x em voltar a estudar, pois falta muita coisa, como método de estudo, acompanhamento, entre outras coisas...

_freelancer_
09-07-2007, 10:16
No meu tempo, os zeros era quando o gráfico da função intersectava o eixo das absissas aka eixo dos xx. Disseste bem no fim com o f(x)=0, mas no início trocaste as coisas. :)

ALGA? Que cadeira mais fácil, tirando a parte dos espaços vectoriais xD...(claro que tens todo o mérito em tê-la feito!)

Exacto, erro meu, neste momento é Electrónica a mais :)

E diga-se de passagem que o meu primeiro ano pela universidade foi algo .. triste :P basicamente não me ralava muito com aquilo e depois foi a miséria total.

HecKel
09-07-2007, 15:44
Pessoal..., aquilo era só um exemplo para mostrar que um if é uma aplicação matemática na programação..., o llclg (http://www.techzonept.com/member.php?u=19048) fez uma pergunta simples e foi dada a resposta, escusam de estar já a dizer o vosso historial académico todo :P

HecKel

_freelancer_
09-07-2007, 15:49
Pessoal..., aquilo era só um exemplo para mostrar que um if é uma aplicação matemática na programação..., o llclg (http://www.techzonept.com/member.php?u=19048) fez uma pergunta simples e foi dada a resposta, escusam de estar já a dizer o vosso historial académico todo :P

HecKel

Foi só para dar vida ao tópico (e porque eu já não escrevia aqui há muito tempo, então tiveram de levar com dose extra de _freelancer_ :002:).

REYsiddiq
03-10-2007, 20:29
tou no 2º ano de curso profissional no secundario e vou começar agora a dar isso :D

eu por acaso ando muito curioso em relaçao a isto tudo da programaçao e e' uma area q gostava muito de aprofundar, mas implica em que eu estude muito a matematica ? e' q nas disciplinas do curso tipo SDAC (sistemas digitais e arquitectura de computadores) IMEI (instalaçao e manutençao de eqipamentos informaticos) e electronica safo me bem mas a matematica = 0 :D e pelo que vejo e' muita matematica pa minha cabeça :D


abraços

HecKel
03-10-2007, 20:32
Quanto a essa questão, recomendo-te vivamente a leitura desta thread:

Eu não percebo nada de matemática , posso me tornar um bom programador? (http://www.techzonept.com/showthread.php?t=167968&highlight=matem%E1tica)

É sem sombra de dúvidas uma das maiores discussões sobre esse tema aqui neste quadro ;) A thread não é muito esclarecedora, afinal de contas está em debate várias opiniões e algumas inflexíveis, mas cabe a ti filtrar o que te interessa saber ;)

xavi87
03-10-2007, 21:05
Boas.

Estão todos a esquecer-se de algo fundamental em programação, que são os comentários.
Em tudo aquilo que façam (mesmo no que aparenta ser de simples "leitura") metam comentários. O que faz, como faz, porque faz.

Vão ver que, uns meses depois, podem ser extremamente úteis... :)

Cya.

Tens razão. os comentarios sao de extrema importancia, pois se os programas forem daqueles com centenas e centenas de linhas de codigo, quando precisarmos de reler o codigo, os comentarios vao dar mesmo muito jeito.

Ja agora , a identação do codigo tb é muito importante. codigo bem organizado ajuda muito na leitura do mesmo.

Boa iniciativa deste topico. tentarei ajudar no que puder.

cumps a todos =)

HecKel
13-10-2007, 03:47
Verdade seja dita..., escolhi um mau nome para a thread. Isto é mais um mini-curso de Algoritmia do que de Programação.

O que vês nesta thread é a aplicação de expressões matemáticas à programação mas em sentido reverso. Utilizei a matemática para explicar o funcionamento de algumas funções/operações básicas da grande maioria das linguagens de programação.

O que lês aqui é apenas o motor, com esta thread não aprendes a programar, aprendes sim é a ver a programação de um outro prisma.

Frosticwaver2
10-01-2008, 21:54
Boas,
Eu apenas sei trabalhar no Pascal e VB. Esta thread deveria mudar de nome para..Algoritmia com Funções matemáticas ou algo do género coisa que não domino mas acho que não tem nada a ver com o ajudar a um novo programador...os livros apesar de serem caros são melhores que esta thread. Imaginemos que sou um iniciante e deparo-me com as ditas cujas funções de certa forma algo confusas mesmo para quem tem alguma lógica, fico intrigado.
Agradecia mesmo além de ser um "Sticky" que mudassem o nome da thread pois está a enganar quem quer aprender alguma coisita de programação que no inicio não é nada fácil e ao deparar com a dificuldade vai diminuir o interesse pelo mesmo.
Agradecido,

HecKel
11-01-2008, 08:45
Boas,
Eu apenas sei trabalhar no Pascal e VB. Esta thread deveria mudar de nome para..Algoritmia com Funções matemáticas ou algo do género coisa que não domino mas acho que não tem nada a ver com o ajudar a um novo programador...
O que seria redundante, algoritmia na prática é a aplicação de uma expressão matemática à programação, logo, é o que está nesta thread.

os livros apesar de serem caros são melhores que esta thread.

A ideia desta thread não é de forma alguma substituir um livro de programação, aliás, isso é impensável, como é que meia dúzia de posts conseguem sequer equiparar-se a um livro de programação?

Imaginemos que sou um iniciante e deparo-me com as ditas cujas funções de certa forma algo confusas mesmo para quem tem alguma lógica, fico intrigado.

Então aí recomendo-te a leres logo o inicio do segundo post, onde digo o seguinte:

Por vezes quem pensa em seguir EngªInformática, ou outro curso ligado à programação fica sempre reticente quando vê os planos curriculares e encontra uma série de matemáticas, muitos se questionam para que serve a matemática na programação, as analogias que vou dar são de matéria de 7º ano, no entanto quanto mais desenvolvida estiver a matemática mais triviais vão parecer os problemas de algoritmia.

Agradecia mesmo além de ser um "Sticky" que mudassem o nome da thread pois está a enganar quem quer aprender alguma coisita de programação que no inicio não é nada fácil e ao deparar com a dificuldade vai diminuir o interesse pelo mesmo.
Agradecido,

Mais uma vez, esta thread não tem como intuito substituir qualquer material pedagógico, mas sim complementá-lo. Tal como mostrei na minha citação, os exemplos que dou utilizam matéria que dão até ao 12º ano e, salvo uma ou outra excepção, vai para a matéria universitária. Se encontram dificuldade nos exemplos que dou, então é bom que reconsiderem se de facto querem programar. Programação não é suposto ser simples, e nesta thread apenas estão explicadas as operações básicas de quase todas as linguagens de programação.

Obrigado pelos comentários ;)

ASUS_SUPORTER
12-01-2008, 15:32
Grande thread. Bem que podia ir para sticky.
Cumpz e parabéns pelo trabalho.

Anfanger
21-01-2008, 14:21
Heckel enganaste-te aqui numa parte (no teu 4º post desta thread).

f(x) = ln(x) ; se x = 1
f(x) = e^x ; se x = -1
f(x) = 2 ; se x = 2
f(x) = -2 ; se x = -2
f(x) = e^(-x) ; se x != -1 e x != 1

em Pseudo-código ficaria:
select (x)
case 1 : f= ln(x) ;
case -1 : f = e^x ;
case 2 : f = 2 ;
case -1 : f = -2 ; //Aqui seria: case -2 : f = -2 ;
case else : e^(-x) ;

Só para não confundir algum membro novato que leia o post. :P

Bom trabalho, bom "Mini Curso". :D

HecKel
21-01-2008, 18:11
Heckel enganaste-te aqui numa parte (no teu 4º post desta thread).

f(x) = ln(x) ; se x = 1
f(x) = e^x ; se x = -1
f(x) = 2 ; se x = 2
f(x) = -2 ; se x = -2
f(x) = e^(-x) ; se x != -1 e x != 1

em Pseudo-código ficaria:
select (x)
case 1 : f= ln(x) ;
case -1 : f = e^x ;
case 2 : f = 2 ;
case -1 : f = -2 ; //Aqui seria: case -2 : f = -2 ;
case else : e^(-x) ;

Só para não confundir algum membro novato que leia o post. :P

Bom trabalho, bom "Mini Curso". :D
Tnks ;)

Editado :)

Master_piece
26-03-2008, 16:45
Comecei a "estudar" programação muito recentemente e por vontade propria, e comecei com C++ com um tutorial que encontrei na net.
Há aqui uma coisa que não entendi e é perferivel expor aqui a duvida do k aceitar o k ai está sem perceber, pois acho que compreender as coisas é muito melhor do que apenas as decorar.



f(x) = ln(x) ; se x = 1
f(x) = e^x ; se x = -1
f(x) = 2 ; se x = 2
f(x) = -2 ; se x = -2
f(x) = e^(-x) ; se x != -1 e x != 1 (Aqui f(x)=e^(-X) se x diferente de -1 e 1 certo?)
em Pseudo-código ficaria:
select (x)
case 1 : f= ln(x) ;
case -1 : f = e^x ;
case 2 : f = 2 ;
case -1 : f = -2 ;
case else : e^(-x) ; (mas aqui f(x) vai ser igual a e^(-x) se x diferente de -1, 1, -2 e 2???)



Segundo p meu ponto de vista aqui (f(x) = e^(-x) ; se x != -1 e x != 1) deveria estar f(x)=e^(-x); se x != -1 , x !=1, x != -2 e x != 2.

Sou muito noob nisto ainda e posso estar a interpretar mal.
Digam ai qualquer coise sff.

Cumps
Master

HecKel
26-03-2008, 17:06
A tua questão é sobre matemática e não programação, o exemplo das funções foi meramente ilustrativo e não era para ser levado tão à letra. Provavelmente nem dá para fazer uma função assim (por acaso tenho ideia que sim), mas o importante aqui é a forma como foi traduzido para pseudo-código.

acacn
06-04-2008, 13:48
Bem.. tenho que mandar as meninas e meninos do meu curso (Informatica para a saude) para aprenderem alguma coisa.. :D E quando falam que nao gostam nem percebem nada de mat e querem ser programadores, bem, acho que nao vale muito tentarem. A matematica é praticamente puro raciocinio, coisa que está sempre presente na programação.

Bom topico :D

dbu
06-04-2008, 13:58
Olha a acacn :D

Epá isso da matemática ser preciso para a programação, eu penso que não porque tenho 5 a matemática e no entanto tenho 20 a programação. Ou isso é um mito, ou sou eu que devo ser diferente LOL

sorry o offtopic

acacn
06-04-2008, 14:57
Olha a acacn :D

Epá isso da matemática ser preciso para a programação, eu penso que não porque tenho 5 a matemática e no entanto tenho 20 a programação. Ou isso é um mito, ou sou eu que devo ser diferente LOL

sorry o offtopic

no ensino superior a matematica e a programação sao bem diferentes, acredita :D btw, ola *

vpfilipe
01-05-2008, 19:14
Oi Heckel, desculpa la a pergunta estúpida, mas o que é IF??

Estou agora a tentar aprender um pouco sobre programação, e estou a ter algumas dificuldades em descobrir o que é o IF, lool xD

Aparicio
01-05-2008, 19:28
"If" é o inglês para "se".


If(x>0) Se x é maior que 0
f = 3x+1 ; f é igual a 3x+1
else se não
f = 1 ; f é igual a 1

vpfilipe
02-05-2008, 00:21
8) cheguei a pensar nessa possibilidade mas achei que não devia de ser xD

afinal e mesmo isso xD

Paulo Truta
02-05-2008, 01:36
Heckel para simplificar um pouco a coisa podes meter os exemplos em Pascal e o pseudo-código em português. Seria muito mais fácil para o utilizador comum.
Penso que passaste muito rápido para os procedimentos e funções. Também penso que funções é um bocado um choque. Estar habituado a colocar tudo num sítio e depois ter de sub-dividir o programa e declarar variáveis globais e comuns, começa a ser um pouco confuso. Mas estás a dar-lhe bem! Resumidamente o que eu aprendi em 4 ou 5 meses (Quando comecei a aprender programação), resumiste aqui a três folhas A4! Parabéns. Entretanto, poderei ajudar-te a completar mais o tópico, mas os exemplos colocarei em pascal. Cumps ;)