rick_simmons 0 Denunciar post Postado Julho 1, 2005 Depois de um longo tempo sem ter tempo de desenvolver o resto do curso, volto a ativa para dar continuidade ao curso (desculpe a todos que esperaram). Mas vamos lá, a matéria desse módulo é o Português Estruturado, que nada mais é do que uma tradução literal de linguagem de programação (normalmente baseada em Pascal). Visão Geral: O português estruturado usa uma linguagem parecida com a dos índios "mim fazer isso, mim fazer aquilo" porém, voltada para a informática e é assim que iremos programar durante toda nossa vida ou até alguém criar uma maneira diferente de se escrever os nossos códigos. Ex: - Pegar primeiro número - Pegar segundo número - Resultado recebe primeiro número + segundo número - Mostrar resultado na tela Primeiros passos: Assim como vimos nos tópicos anteriores, um código é chamado de Algoritmo, que seria a estrutura do nosso programa e é com ela que vamos trabalhar. No nosso primeiro algoritmo em português estruturado, vamos fazer uma calculadora simples com dois números e duas operações matemáticas (soma e subtração), após analisaremos o algoritmo: 01 | algoritmo calculadora 02 | variaveis 03 | num1: inteiro 04 | num2, operacao: inteiro 05 | resultado: real 06 | inicio 07 | escrever ( 'Digite o primeiro numero: ' ) 08 | ler ( num1 ) 09 | escrever ( 'Digite o segundo numero: ' ) 10 | ler ( num2 ) 11 | escrever ( 'Digite 1 para soma ou 2 para subtracao' ) 12 | ler ( operacao ) 13 | se operacao = 1 14 | entao resultado <- num1 + num2 15 | senao se operacao = 2 16 | entao resultado <- num1 - num2 17 | senao 18 | inicio 19 | escrever ( 'Voce escolheu uma operacao invalida.' ) 20 | sair_do_programa ( verdadeiro ) 21 | fim 22 | escrever ( 'O resultado da conta eh: ', resultado ) 23 | fim Analisando o algoritmo - Vamos começar observando a linguagem. É uma linguagem bastante simples e legível, qualquer um pode entendê-la se prestar um pouco de atenção aos detalhes. É escrita de cima para baixo ( algoritmo sequêncial ) e possui algumas palavras-chave ( em negrito ) que não podem ser usadas para declaração de variáveis, por exemplo. - Agora vamos analisar o espaçamento. Vocês todos devem estar acostumados com ferramentas como o Windows Explorer aonde você escolhe a pasta e quando acessa alguma subpasta, ela aparece logo abaixo e um pouco para a direita dando a impressão de que ela realmente está dentro da pasta mãe. Em algoritmos funciona exatamente da mesma maneira, você pode notar que algumas linhas estão mais a direita pois é uma estruturação feita para ser mais legível e para rápido entendimento de que um comando só funciona se seu "pai" for verdadeiro. Importante: não é necessário fazer dessa maneira mas para a boa prática e melhor organização do seu código, é recomendada essa estrutura de código. - Linhas. Como podem ver, eu coloquei linhas no código não só para explicar aqui mas porque elas são muito importantes na hora de verificar erros uma vez que o compilador poderá dizer muitas vezes um erro do tipo "Comando não finalizado adequadamente na linha 32" e isso nos quebra quando não temos uma contagem de linhas. Para que esse tipo de situação não aconteça, é sempre bom usar um editor que mostre as linhas do código ao lado. - Analisando linha a linha. Vamos ver agora como funciona nosso algoritmo começando pela linha 01, que é nada mais, nada menos do que a declaração do nome do nosso programa. Em seguida, na linha 02, usamos o comando para dizer pro compilador que começou a declaração de variáveis e ele entenderá que tudo embaixo desse comando até o início do programa são variáveis que serão usadas no programa. Na declaração de variáveis, você pode notar que estamos usando 4 variáveis sendo 3 do mesmo tipo e 1 de outro tipo, mas porque eu declarei a "num1" antes da "num2" e "operacao"? Porque foi minha vontade. Poderia ser uma de cada vez, todas juntas ou como eu bem entender, desde que sejam do mesmo tipo. Logo após declarar minha variáveis, eu usei o comando "inicio" que diz ao meu compilador que ali começa o corpo do meu programa (o que o computador deve fazer), tudo o que estiver abaixo deste comando e antes do último comando "fim" que se encontra na linha 23, será usado como comando no desenrolar do nosso programa. Nas linhas 07 até 22 estão meus comandos. Começo enviando mensagens ao usuário para que ele nos informe valores que serão armazenados nas variáveis usando os comandos "escrever" e "ler" (que fazem exatamente o que dizem). Para sabermos que tipo de operação matemática devemos fazer, pedimos para que o usuário digite 1 se quiser somar ou 2 se quiser subtrair e se for informado um valor diferente, o programa envia um erro e termina a execução (linhas 18 até 21 - será melhor explicado depois). Para que possamos obter um resultado, temos um teste que atribui a variável "resultado" a soma OU a subtração dos números e para isso usamos o símbolo "<-" que diz que tudo o que estiver a direita dele será executado e logo após será jogado na variável que está no lado esquerdo, portanto só é possível ter UMA variável no lado esquerdo enquanto no lado direito pode se ter um programa inteiro (desde que o valor final seja do tipo da variável da esquerda). Por fim mostramos ao usuário o resultado final. Algumas observações: - Uma variável sempre terá um espaço na memória para seu valor mas se você atribuir mais de um valor, este será substituirá o antigo, então este será perdido. - Podemos escrever um programa inteiro sem enviar nenhuma mensagem para o usuário e na execução nada será visto. Isso é muito usado em rotinas que o usuário não precisa saber, coisas como uma manutensão de arquivos temporários. Exercícios: Deixei para o final uma pequena lista de exercícios para quem quiser exercitar seus conhecimentos adquiridos até aqui. Devo lembrar que não existe nada melhor para um programador do que praticar a programação então aconselho tentar resolver os exercícios e por si próprios criar novos e resolver. Qualquer dúvida, de qualquer tipo, deve ser solicitada uma ajuda pois informática é uma ciência exata então dúvidas não podemos ter. 1) Acrescentar no algoritmo do tópico as operações de divisão e multiplicação. 2) Criar um algoritmo que leia a idade de 5 pessoas e diga quem é a mais velha e quem é a mais nova. 3) Criar um algoritmo que faça a fórmula de Baskara ao ser informada a fórmula x² - 2x - 8 = 0 Fórmula de Baskara: -b +- raiz(b² - 4ac) ---------------------------- 2a É isso ai galera, espero que apoveitem e desenvolvam seu raciocínio e aprimore seus conhecimentos na arte da informática! Até mais! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Compartilhar este post Link para o post Compartilhar em outros sites
Tigger 0 Denunciar post Postado Julho 1, 2005 algoritmo "TESTE"varNUM1, NUM2, OPERACAO: INTEIRORESULTADO: REALinicioEscreva("Informe o Primeiro Numero: ")Leia(NUM1)Escreva("Infome o Segundo Numero: ")Leia(NUM2)Escreval("Escolha a operacao que gostaria de fazer: ")Escreval("1 - ADIÇÃO")Escreval("2 - SUBTRAÇÃO")Escreval("3 - DIVISÃO")Escreval("4 - MULTIPLICAÇÃO")leia(OPERACAO)SE ( ( OPERACAO < 1 ) E ( OPERACAO > 4 ) )ENTAO EscrevaL("Operacao Invalida!!")FIMSESE OPERACAO = 1 ENTAO RESULTADO <- NUM1 + NUM2 Escreva("O resultado final é:",RESULTADO)SENAO SE OPERACAO= 2 ENTAO RESULTADO <- NUM1 - NUM2 Escreva("O resultado final é:",RESULTADO) SENAO SE OPERACAO = 3 ENTAO RESULTADO <- NUM1 / NUM2 Escreva("O resultado final é:",RESULTADO) SENAO SE OPERACAO = 4 ENTAO RESULTADO <- NUM1 * NUM2 Escreva("O resultado final é:",RESULTADO) FIMSE FIMSE FIMSEFIMSEfimalgoritmoCorrigindo a falha.... :D Compartilhar este post Link para o post Compartilhar em outros sites
rick_simmons 0 Denunciar post Postado Julho 4, 2005 e se o cara digitar -1 o q acontece? Compartilhar este post Link para o post Compartilhar em outros sites
Ocuringa 0 Denunciar post Postado Julho 9, 2005 No primeiro exercicio basta acrescentar algumas linhas de comando:Algoritmo Calculadora...11 | escrever ( 'Digite 1 para soma, 2 para subtracao, 3 para multiplicacao e 4 para divisao' )12 | ler ( operacao )13 | se operacao = 114 | entao resultado <- num1 + num215 | senao se operacao = 216 | entao resultado <- num1 - num217 | senao se operacao = 318 | entao resultado <- num1 * num219 | senao se operaçao = 420 | entao resultado <- num1 / num221 | inicio22 | escrever ( 'Voce escolheu uma operacao invalida.' )23 | sair_do_programa ( verdadeiro )24 | fim25 | escrever ( 'O resultado da conta eh: ', resultado )26 | fimAcrescentei as linhas de comando 11, 17, 18, 19, 20 Poderia usar o comando Case, mas como não foi citado não quis estragar o curso me adiantando.Ocuringa Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Agosto 20, 2005 Muito interessante esse curso. Parabéns rick_simmons, pena que ainda não está completo. Fico no aguardo da continuidade. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 17, 2005 3) Criar um algoritmo que faça a fórmula de Baskara ao ser informada a fórmula x² - 2x - 8 = 0 Fórmula de Baskara: -b +- raiz(b² - 4ac) ---------------------------- 2a e eu sei fórmula de Bháskara? É claro que não, afinal estou ainda na sétima série. Posso pular essa parte? E o curso parou? Compartilhar este post Link para o post Compartilhar em outros sites
Bucketheadkrz 0 Denunciar post Postado Setembro 17, 2005 Inu_Yasha, Vou tentar ensinar a fórmula de Báskara. Normalmente se lê a fórmula assim: ax² + bx + c = 0 Na fórmula x² - 2x - 8 = 0, a letra A = 1, B= -2 e C= -8. Ou seja, "A" é sempre aquele que tá do lado de x² e nunca vai ser 0, "B" é que está do lado de x e "C", digamos assim, é o número isolado. Quando você fizer o algoritmo, tem que notar que A (diferente) 0 (senão não seria uma equação do segundo² grau) e Delta (b² - 4ac) (diferente) negativo (nã existe a raiz quadrada de números negativos). Lembrando também que você terá de fazer duas operações, uma positiva: -b + raiz(b² - 4ac) ---------------------------- 2a ...e outra negativa: -b - raiz(b² - 4ac) ---------------------------- 2a Que na verdade, o x pode ter dois valores quando o número é maior que 0, mas isso não irá influenciar no resultado, apenas faça o algoritmo para exibir os valores de x. Boa sorte... PS.: Desculpa pela minha intromissão ao rick_simmons Compartilhar este post Link para o post Compartilhar em outros sites
Inu_Yasha 0 Denunciar post Postado Setembro 17, 2005 O.oeu nao consigo....só sei sistemas de equações, não equações de segundo grau...vou esperar até ano que vem para aprender...vlw por tentar me ensinar ;) Compartilhar este post Link para o post Compartilhar em outros sites
pedrovoltaire 0 Denunciar post Postado Janeiro 5, 2006 Não vai mais continuar Simmons ?Estamos esperando.É dificil encontrar tão bem explicado assim.Volte logo Compartilhar este post Link para o post Compartilhar em outros sites
José Marques S. Júnior 0 Denunciar post Postado Fevereiro 6, 2006 http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Fiz um programa bem simples em pascal que pode resolver equações do 2° grau. Para quem estiver interesado em aprender um pouco de pascal http://forum.imasters.com.br/public/style_emoticons/default/clap.gif ---------------------------------------------------------------------------------------- Program baskara ; var // A questão é: X²-2x-8=0 // a,b,c,rd,rx1,rx2:real; function delta(a,b,c:real):real; begin delta:=(b * b )-4 * a * c; end; function x1(b,a,c:real):real; begin x1:=(-b+sqrt(delta(a,b,c)))/2*a; end; function x2(b,a,c:real):real; begin x2:=(-b-sqrt(delta(a,b,c)))/2*a; end; Begin textcolor(lightred); writeln('Digite o valor de "a":'); read(a); writeln('Digite o de "b":'); read( b ); writeln('Agora digite "c":'); read( c ); rd:=delta(a,b,c); rx1:=x1(a,b,c); rx2:=x2(a,b,c); writeln('Delta vale: ',rd:5:2); writeln; writeln('X linha vale: ',rx1:5:2); writeln; writeln('X duas linhas vale: ',rx2:5:2); readkey; End. Compartilhar este post Link para o post Compartilhar em outros sites
Guilex 0 Denunciar post Postado Março 8, 2007 algoritmo "TESTE" var NUM1, NUM2, OPERACAO: INTEIRO RESULTADO: REAL inicio Escreva("Informe o Primeiro Numero: ") Leia(NUM1) Escreva("Infome o Segundo Numero: ") Leia(NUM2) Escreval("Escolha a operacao que gostaria de fazer: ") Escreval("1 - ADIÇÃO") Escreval("2 - SUBTRAÇÃO") Escreval("3 - DIVISÃO") Escreval("4 - MULTIPLICAÇÃO") leia(OPERACAO) SE ( ( OPERACAO < 1 ) E ( OPERACAO > 4 ) )ENTAO EscrevaL("Operacao Invalida!!") FIMSE SE OPERACAO = 1 ENTAO RESULTADO <- NUM1 + NUM2 Escreva("O resultado final é:",RESULTADO) SENAO SE OPERACAO= 2 ENTAO RESULTADO <- NUM1 - NUM2 Escreva("O resultado final é:",RESULTADO) SENAO SE OPERACAO = 3 ENTAO RESULTADO <- NUM1 / NUM2 Escreva("O resultado final é:",RESULTADO) SENAO SE OPERACAO = 4 ENTAO RESULTADO <- NUM1 * NUM2 Escreva("O resultado final é:",RESULTADO) FIMSE FIMSE FIMSE FIMSE fimalgoritmo Corrigindo a falha.... :D Faltou um detalhe:SE ( ( OPERACAO < 1 ) E ( OPERACAO > 4 ) )ENTAO isto nunca acontecerá porque um número não pode ser menor que 1 e maior que 4 ao mesmo tempo, desta forma fica assim: SE ( ( OPERACAO < 1 ) OU ( OPERACAO > 4 ) )ENTAO Mais de um ano depois e eu aqui lendo essas antiguidades heuhuehee abraços! Compartilhar este post Link para o post Compartilhar em outros sites
QuIx 0 Denunciar post Postado Março 22, 2007 Muitoooo bom to lendo a seção inteira ^^' Compartilhar este post Link para o post Compartilhar em outros sites
Dr. André 0 Denunciar post Postado Abril 12, 2007 Não vejo a hora de ver a aula 4... Compartilhar este post Link para o post Compartilhar em outros sites
BRuNiNhU! 0 Denunciar post Postado Maio 21, 2007 01 | algoritmo calculadora02 | variaveis03 | num1: inteiro04 | num2, operacao: inteiro05 | resultado: real06 | inicio07 | escrever ( 'Digite o primeiro numero: ' )08 | ler ( num1 )09 | escrever ( 'Digite o segundo numero: ' )10 | ler ( num2 )11 | escrever ( 'Digite 1 para soma, 2 para subtracao, 3 para multiplicacao, 4 para divisao' )12 | ler ( operacao )13 | se operacao = 114 | entao resultado <- num1 + num215 | senao se operacao = 216 | entao resultado <- num1 - num217 | senao se operacao = 318 | entao resultado <- num1 * num219 | senao se operacao = 420 | entao resultado <- num1 / num221 | senao22 | inicio23 | escrever ( 'Voce escolheu uma operacao invalida.' )24 | sair_do_programa ( verdadeiro )25 | fim26 | escrever ( 'O resultado da conta eh: ', resultado )27 | fimMeu consegui fazer isto, mas o negócio de por a báskara num consegui porque não sei o que tenho que escrever para conseguir ler a programação. Ajudem ae por favor!Gente por favor vamos freqüentar mais aqui, porque como eu, tem muita gente querendo aprender. Grato. Compartilhar este post Link para o post Compartilhar em outros sites
elle 0 Denunciar post Postado Janeiro 15, 2008 Boa tarde a todos, esperoestar a postar no sitio certo. tenho um trabalho para entregar esta semana e não sei trabalhar muito bem com matrizes. Espero que me possam ajudar a fazer um algoritmo em português estruturado que me resolva o meu problema. O enunciado do trabalho é o seguinte: "A Igreja da Sagrada Família em Barcelona é uma obra de referência na Arquitectura, da autoria de Antoni Gaudí. Esta igreja apresenta diversas curiosidades a níveis arquitectónico, artístico e de engenharia. A sua construção iniciou-se no final do século XIX e actualmente ainda não se encontra acabada estando edificado pouco mais de metade do projecto inicial de Gaudí. Uma das curiosidades desta igreja é a existência, numa das suas fachadas, de um criptograma constituído por uma matriz quadrada (4 linhas por 4 colunas). Cada elemento da matriz é um número inteiro. Existem diversas combinações de quatro elementos desta matriz cuja soma é igual a 33 (a idade de Jesus Cristo quando foi crucificado). A matriz seguinte representa o criptograma referido acima: 1 14 14 4 11 7 6 9 8 10 10 5 13 2 3 15 Entre outras combinações, todas as linhas e todas as colunas, assim como ambas as diagonais, somam 33. É o caso, por exemplo, da linha 2, constituída pelos números 11, 7, 6, 9 (11+7+6+9=33). Ao todo existem 310 combinações de 4 dos elementos da matriz que produzem um somatório igual a 33. Pretende-se com este trabalho o desenvolvimento de um programa em Português Estruturado que permita verificar, para uma matriz quadrada de qualquer dimensão, se o somatório das suas linhas, colunas e das duas diagonais, totalizam um determinado valor. A dimensão da matriz e o valor do somatório a verificar são dados lidos pelo programa. No final, o programa indica se a matriz verifica o somatório ou não, ou seja, se o somatório de todas as linhas, colunas e diagonais corresponde ao valor fornecido ou não (neste caso, basta que o somatório falhe uma vez). Sugere-se ainda que os alunos procurem construir outras matrizes que obedeçam a esta propriedade, para além daquela que é apresentada como exemplo. ________________________________________ Na resolução deste trabalho deverão ser usados subprogramas e variáveis indexadas. " Obrigado pela vossa atençao. O meu email é tixinha_666@hotmail.com. Saudações. Compartilhar este post Link para o post Compartilhar em outros sites
quitZAUMMM 18 Denunciar post Postado Janeiro 15, 2008 bom você postow em lugar errado sim =//.!!! + beleza você tentow fazer? espero q sim !! poste até onde conseguiw e quais as duvidas Compartilhar este post Link para o post Compartilhar em outros sites
*Fênix* 0 Denunciar post Postado Julho 16, 2008 Caso alguém esteja com problemas na criação do código através do programa Visualg, segue o exemplo do primeiro exercício: var num1, num2: inteiro operacao, resultado: real inicio // Seção de Comandos Escreva 'Digite o primeiro numero: ' Leia (num1) Escreva 'Digite o segundo numero: ' Leia (num2) Escreva '1 SOMA, 2 SUBTRAI, 3 MULTIPLICA E 4 DIVIDE' Leia (operacao) Se operacao = 1 entao resultado <- num1 + num2 Senao Se operacao = 2 entao resultado <- num1 - num2 Fimse Se operacao = 3 entao resultado <- num1 * num2 Senao Se operacao = 4 entao resultado <- num1 / num2 FIMSE Escreva '(O Resultado da conta eh: , resultado)' fimalgoritmo Compartilhar este post Link para o post Compartilhar em outros sites
Julihermes Carlos 0 Denunciar post Postado Março 13, 2009 iae galera! fiz o primeiro exercicio e add mais coisa em so pra ficar mais "bonitinho"! se vcs rodarem no visualg do geito q estar ai vai pegar direitinho. vamos ao codigo: algoritmo "cauculadora" // Função : // Autor : // Data : 12/3/2009 // Seção de Declarações var valor1 , valor2 , resultado : real operacao : caracter // Seção de Comandos inicio escreval ("************************* Cauculadora *************************") escreval ("LEGENDA: Soma (+), Subtração (-), Multiplicação (*) e Divisão (/)") escreval ("---------------------------------------------------------------") escreval (" ") escreva ("Digite o primeiro valor: ") leia (valor1) escreva ("Qual operação você vai usar (digite sue sinal)? ") leia (operacao) escreva ("Digite o segundo valor: ") leia (valor2) escreval ("---------------------------------------------------------------") se operacao = "+" entao resultado <- valor1 + valor2 escreval ("Você escolheu a Adição") escreval ("Sua conta:") escreval (valor1," +",valor2," =",resultado) fimse se operacao = "-" entao resultado <- valor1 - valor2 escreval ("Você escolheu a Subtração") escreval ("Sua conta:") escreval (valor1," -",valor2," =",resultado) fimse se operacao = "*" entao resultado <- valor1 * valor2 escreval ("Você escolheu a Multiplicação") escreval ("Sua conta:") escreval (valor1," *",valor2," =",resultado) fimse se operacao = "/" entao resultado <- valor1 / valor2 escreval ("Você escolheu a Divisão") escreval ("Sua conta:") escreval (valor1," /",valor2," =",resultado) fimse se (operacao <> "+") e (operacao <> "-") e (operacao <> "*") e (operacao <> "/") entao escreval ("Você escreveu um sinal invalido, tente novamente") fimse fimalgoritmo vlw galera e comentem como estar meu codigo, se ta ruim ou bom!!! e mais uma coisa, esse tópico ñ estar mais em uso ñ? a ultima resposta é do ano passado flw!!!! Compartilhar este post Link para o post Compartilhar em outros sites
aandre 0 Denunciar post Postado Junho 2, 2009 E aí Rick. A minha sugestão é que você poderia incorporar à esse mini curso, um compilador de portugol para melhor assimilação. Eu por exemplo antes de entrar na faculdade, estava lendo umas apostilas de portugol e praticando no Visualg. Mas ao começar o curso superior o professor que nos ensina lógica iniciou com fluxo e portugues estruturado mas, dois meses depois ele só lecionou com fluxograma. E então você pode escrever mais ou menos o que disse gandhi: "Que importância faz se seguimos por caminhos diferentes, desde que alcancemos o mesmo objetivo?". Mas nós temos o direito de encontrar um menor espaço para encurtar dois pontos. Eu vejo que tenho mais facilidade e começar com portugol de que com fluxograma. E com o ensino do primeiro, temos a nosso favor além do papel, alguns softwares para compilar que fizemos. Esse é meu ponto de vista. Abraços. Compartilhar este post Link para o post Compartilhar em outros sites
samukbh 0 Denunciar post Postado Julho 30, 2009 Alguem poderia fazer a questao 2 do exercicio proposta la em cima...sobre colocar a idade de cinco e mostrar qual é a mais velha no resultado....queria entender como se faz esse algoritimo...abraz Compartilhar este post Link para o post Compartilhar em outros sites