Ir para o conteúdo
joao moreira

Introdução à Algoritmia e Lógica

Mensagens Recomendadas

joao moreira

Boa noite,

Gostaria de saber se tudo isto está correto :

.........................................................................................

<---- Lógica de Programação e Algoritmos ---->

Algoritmo:

- Algoritmo é os passos para a solução de um problema.

- Os passos que levam a uma solução são muitos.

Lógica de programação:

- Coerência.

- Racionalidade.

- Por que fazer de uma forma e não de outra?

- Arte de bem pensar.

- Ordem no pensamento.

Fases na concepção de um algoritmo:

- Entradas: Dados que alimentam o sistema, informações inseridas pelo usuário;

- Processamento: Cálculos e manipulação dos dados de entrada;

- Saída: resultado obtido do processamento dos dados;

- Teste de mesa: É a execução das três fases acima mencionadas, verificando o funcionamento na prática das intruções executadas.

<-- 1º Problema ->>

--------------------------------------------------------------------

Problema :

Mostrar o nome de uma pessoa.

Algoritmo mostra_nome

Inicio

Mostre "O nome da pessoa é João"

Fim

Teste de mesa :

O nome da pessoa é João

--------------------------------------------------------------------

<-- 2º Problema -->

--------------------------------------------------------------------

Problema :

Mostrar o nome de 3 pessoas.

Algoritmo mostra_nome

Inicio

Mostre "O nome da pessoa é João";

Mostre "O nome da pessoa é Manuel":

Mostre "O nome da pessoa é Francisco";

Fim

Teste de mesa :

O nome da pessoa é João

O nome da pessoa é Manuel

O nome da pessoa é Francisco

--------------------------------------------------------------------

Ou então :

Algoritmo mostra_nome

Inicio

Mostre "Os nomes sao : João, Manuel e Francisco";

Fim

Teste de mesa :

Os nomes sao : João, Manuel e Francisco

--------------------------------------------------------------------

.........................................................................................

Caso não esteja , gostaria imenso que corrigissem.

Tenham uma excelente noite !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Para já está tudo certo. Agora coloco-te eu um exercício simples:

Peça ao utilizador para inserir dois números inteiros. Devolva os resultados da soma, subtracção, multiplicação e divisão, do primeiro valor pelo segundo. Tenha em atenção a divisão por zero.

Exemplo de Input: 3, 6

Output: 9, -3, 18, 0.5

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Problema :

Peça ao utilizador para inserir dois números inteiros. Devolva os resultados da soma, subtracção, multiplicação e divisão, do primeiro valor pelo segundo. Tenha em atenção a divisão por zero.

Algoritmo thoga31;

var numero1, numero2, soma, subtracao, multiplicaçao, divisao de Real;

Inicio

numero1 <- 3;

numero2 <- 6;

soma <- numero1 + numero2;

subtracao <- numero1 - numero2;

multiplicaçao <- numero1 * numero2;

divisao <- numero1 / numero2;

mostrar "A soma de 3 por 6 é"+soma;

mostrar "A subtração de 3 por 6 é"+subtracao; // Aqui é "+subtracao" ou "-subtracao"? Varia dependendo se o número é positivo ou negativo?

mostrar "A multiplicação de 3 por 6 é"+multiplicacao;

mostrar "A divisão de 3 por 6 é"+divisao;

Fim

Teste de mesa :

numero1 = 3

numero2 = 6

soma = 9

subtracao = -3

multiplicação = 18

divisão = 0.5

Resolvi o problema já aplicando variáveis. Aprendi a usa-las à 20 minutos, portanto há uma grande probabilidade de estar mal :D

Desculpa só responder agora, eu estava a ver videos no youtube e esqueci-me da pergunta que te tinha feito xD

Deu bastante trabalho, pois eu sou newbie ainda ^^ Mt obg por colocares me este exercicios :) Tenho 99% de certeza que esta errado(Nao percebi bem o que me pediste mas acho que não fiz o pedido, penso que o que eu fiz apenas diz o resultado da multiplicação, divisao, subtração e soma dos dois numeros que coloquei, se tiver errado gostaria que me mostrasses como fica correto ;)), mas mesmo que erre, vou aprender, pois aprendemos com os erros ;)

Mereces mesmo ser Moderador. Foste a pessoa que mais se dedicou a ajudar-me desde que estou neste fórum :) Boa noite !

A minha lista mais completa :

<---- Lógica de Programação e Algoritmos ---->

Algoritmo:

- Algoritmo é os passos para a solução de um problema.

- Os passos que levam a uma solução são muitos.

-----

Lógica de programação:

- Coerência.

- Racionalidade.

- Por que fazer de uma forma e não de outra?

- Arte de bem pensar.

- Ordem no pensamento.

-----

Fases na concepção de um algoritmo:

- Entradas: Dados que alimentam o sistema, informações inseridas pelo usuário;

- Processamento: Cálculos e manipulação dos dados de entrada;

- Saída: resultado obtido do processamento dos dados;

- Teste de mesa: É a execução das três fases acima mencionadas, verificando o funcionamento na prática das intruções executadas.

-----

Variáveis e Tipos de Dados:

-Variáveis: expressões que podem conter ou armazenar valores;

Tipos de Dados (os mais usados são):

- Inteiro: são números inteiros, ex.: idade = 35

- Real: qualquer número, inclusive os fracionários, ex.: valor = 35,46

- Caracter: Qualquer conjunto de caracter alfanumérico, ex.:

NOTA : Um número Inteiro é também um número Real, Porém um número Real nem sempre é Inteiro.

-----

<-- 1º Problema ->>

--------------------------------------------------------------------

Problema :

Mostrar o nome de uma pessoa.

Algoritmo mostra_nome

Inicio

Mostre "O nome da pessoa é João"

Fim

Teste de mesa :

O nome da pessoa é João

--------------------------------------------------------------------

<-- 2º Problema -->

--------------------------------------------------------------------

Problema :

Mostrar o nome de 3 pessoas.

Algoritmo mostra_nome

Inicio

Mostre "O nome da pessoa é João";

Mostre "O nome da pessoa é Manuel":

Mostre "O nome da pessoa é Francisco";

Fim

Teste de mesa :

O nome da pessoa é João

O nome da pessoa é Manuel

O nome da pessoa é Francisco

--------------------------------------------------------------------

Ou então :

Algoritmo mostra_nome

Inicio

Mostre "Os nomes sao : João, Manuel e Francisco";

Fim

Teste de mesa :

Os nomes sao : João, Manuel e Francisco

--------------------------------------------------------------------

<-- 3º Problema -->

Problema :

Calcular a média de duas notas e mostrar essa média.

algoritmo média;

Inicio

ler a primeira nota;

ler segunda nota;

somar as duas notas;

dívidir a soma das notas por 2;

mostrar a média;

Fim

Teste de mesa:

5 // valor da primeira nota (inventado)

7 // valor da segunda nota (inventado)

12 // soma das duas notas

6 // divisão das duas notas

6 // média final

--------------------------------------------------------------------

<-- 3º Problema já com variáveis -->

Problema :

Calcular a média de duas notas e mostrar essa média.

algoritmo media;

var nota1, nota2, soma, media de Real;

Inicio

nota1 <- 5 ; // nota1 recebe o valor de 5

nota2 <- 7;

soma <- nota1 + nota2;

media <- soma / 2;

mostrar "A Media é"+media; // ou mostrar media

Fim

Teste de Mesa:

nota1 = 5

nota2 = 7

soma = 5 + 7 = 12

media = 12 / 2 = 6

6

OU ENTÃO ( DE FORMA MAIS SIMPLES):

algoritmo media;

var nota1, nota2, media de Real;

Inicio

nota1 <- 5 ; // nota1 recebe o valor de 5

nota2 <- 7;

media <- nota1 + nota2 / 2;

mostrar "A Media é"+media;

Fim

Teste de Mesa:

nota1 = 5

nota2 = 7

media = 5 + 7 / 2 = 8.5

8.5

-> DA UM VALOR DIFERENTE ! NAO PODE SER FEITO DESTA FORMA. TEM QUE SER DESTE GEITO :

algoritmo media;

var nota1, nota2, media de Real;

Inicio

nota1 <- 5 ; // nota1 recebe o valor de 5

nota2 <- 7;

media <- (nota1 + nota2) / 2;

mostrar "A Media é"+media;

Fim

Teste de Mesa:

nota1 = 5

nota2 = 7

media = (5 + 7) / 2 = 6

8.5

<----------------------------------------------------------------Praticar---------------------------------------------------------------->

Calcular a média de duas notas e mostrar essa média.

algoritmo media;

var nota1, nota2, media;

Inicio

nota1 <- 8;

nota2 <- 6;

media <- nota1 + nota2 / 2;

Mostrar media;

Fim

Teste de Mesa:

nota1 = 8

nota2 = 6

media = 8 + 6 / 2

7

-----------------------------------------

Problemas :Calcular o dobro da soma de duas notas

algoritmo dobro;

vac nota1, nota2, soma, dobro;

Inicio

nota1 <- 2; ----> ainda nao esta finalizado

nota2 <- 4;

soma <- nota1 + nota2;

dobro <- soma * 2

Mostrar "o dobro da soma das duas notas é"+dobro"

Fim

---------------------------------------

Problema :

Peça ao utilizador para inserir dois números inteiros. Devolva os resultados da soma, subtracção, multiplicação e divisão, do primeiro valor pelo segundo. Tenha em atenção a divisão por zero.

Algoritmo thoga31;

var numero1, numero2, soma, subtracao, multiplicaçao, divisao de Real;

Inicio

numero1 <- 3;

numero2 <- 6;

soma <- numero1 + numero2;

subtracao <- numero1 - numero2;

multiplicaçao <- numero1 * numero2;

divisao <- numero1 / numero2;

mostrar "A soma de 3 por 6 é"+soma;

mostrar "A subtração de 3 por 6 é"+subtracao;

mostrar "A multiplicação de 3 por 6 é"+multiplicacao;

mostrar "A divisão de 3 por 6 é"+divisao;

Fim

Teste de mesa :

numero1 = 3

numero2 = 6

soma = 9

subtracao = -3

multiplicação = 18

divisão = 0.5

Editado por joao moreira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Well, não posso ler esse post imenso neste momento, mas já reparei pela resolução do meu exercício que não estás a perceber pseudo-código na generalidade.

Eu disse-te para pedires dois números ao utilizador, e tu simplesmente atribuíste às variáveis os valores do exemplo que coloquei. Disse para se ter em atenção a divisão por zero, e não o fizeste.

Não entendi a tua dúvida no output da subtracção. Aquele "+" não é uma operação numérica, nem é ele a dizer se o nº é negativo ou não. A variável já guarda em si o sinal. O "+", quanto muito, será de concatenação.

Pseudo-código não tem de seguir uma sintaxe especifica. Cada um usa a sua, desde que seja inteligível. Portanto, para verificar a divisão por zero o que se deve fazer? Verificar se o 2º número é zero. Faz-se um "SE" no pseudo-código.

Eu vou dar a minha proposta de resolução para aprenderes umas coisinhas.

btw, mete os códigos dentro das tags CODE. Edita esse post e coloca-as.

PROGRAMA exercicio
VARIAVEL
  a, b : Inteiro

INÍCIO
  ESCREVER "Introduza 2 números inteiros:"
  LER a, b
  ESCREVER "         Soma = " & a+b
  ESCREVER "   Subtraccao = " & a-b
  ESCREVER "Multiplicacao = " & a*b
  ESCREVER "      Divisao = "
  SE (b = 0) ENTÃO
     ESCREVER "ERRO, DIV POR ZERO"
  SE-NÃO
     ESCREVER a/b
FIM

A resolução em Pascal, que é para veres como o pseudocódigo reflecte o código final numa lingaugem de programação mais "tradicional":

program exercicio;
var a, b : integer;
begin
  writeln('Introduza 2 numeros inteiros:');
  readln(a, b);
  writeln('         Soma = ', a+b);
  writeln('   Subtraccao = ', a-b);
  writeln('Multiplicacao = ', a*b);
  write('      Divisao = ');
  if (b = 0) then
     writeln('ERRO, DIV POR ZERO');
  else
     writeln(a/b :0:5);
  readln;  // pausa
end.

E em Python, apenas por curiosidade e constatares as diferenças entres linguagens:

# Python 3.x
print("Introduza 2 números inteiros:")
a, b = int(input()), int(input())
print("Soma = {1}\nSubtracção = {2}\nMultiplicação = {3}\nDivisão = {4}".format(a+b, a-b, a*b, "ERRO, DIV POR ZERO" if b == 0 else a/b))

EDIT: enquanto andava para cima e para baixo, reparei que, entre outras coisas, calculaste a média mal. Esqueceste-te dos parêntesis!


Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Muito obg por todas essas correçoes e por teres resolvido o problema em 3 formas diferentes ! Estas realmente a ajudar-me a crescer no mundo da programação ;)

Essa matéria do "se" ainda não estudei, pois só vi umas 5 video-aulas, mas pretendo aprender hoje. Essas video aulas que observei parecem estar erradas em certas coisas. Aconselhas-me a aprender através do Portugol? Em qual programa escreveste os codigos? Estou um pouco confuso pois não sei se este professor está a explicar bem :

http://www.youtube.com/watch?v=FBrIPhiTmWk&list=PLF79155378AD6F63A

Gostaria que me desses uns links sobre esta matéria da logica e algoritmos ( que englobasse essa parte condicional do "se"), pois eu acho que estou "perdido" e penso que estou a estudar o errado.

Mais uma vez mt obg por me ajudares e dedicares o teu tempo á comunidade ! Tem um bom dia !

Editado por joao moreira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Acho que consegui fazer corretamente :) Vê, fiz em Portugol :

algoritmo "media"
var a, b:Inteiro
INICIO
escreval ("Introduza 2 números:")
leia (a, b)
escreval ("Soma = ", a+b)
escreval ("Subtraccao = ", a-b)
escreval ("Multiplicacao = ", a*b)
se (b = 0) entao
	 escreval ("ERRO, DIVISAO POR ZERO")
senao
	 escreval ("divisão:", a/b)
fimse
fimalgoritmo

Este calcula a media ;)

 //Problema: calcular a media de duas notas.
algoritmo "Calcular a media"
var
nota1, nota2, soma, media:Real
inicio
escreval ("digite o valor da primeiro nota:")
leia (nota1)
escreval ("digite o valor da segunda nota:")
leia (nota2)
soma <- nota1 + nota2
media <- soma / 2
escreval ("A media é", media)
fimalgoritmo

Editado por joao moreira

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
EMCM

Acho que está tudo correto, só mudaria uma coisa no algoritmo de cálculo da média, apagava a variável "soma", está aí a mais.

Vê como ficava.

algoritmo "Calcular a media"
var
nota1, nota2, media:Real
inicio
escreval ("digite o valor da primeiro nota:")
leia (nota1)
escreval ("digite o valor da segunda nota:")
leia (nota2)
media <- (nota1 + nota2) / 2
escreval ("A media é", media)
fimalgoritmo

Percebeste? :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

(um exercício no fim :D)

@joao moreira, eu não conheço muitos links, e muito menos vídeo-aulas. Sinceramente confio pouco nelas, são escassas as de qualidade. Infelizmente quem se aventura nisso é quem acha que sabe e não quem sabe mesmo, pois quem sabe mesmo não costuma ter tempo para essas coisas. Só vi até hoje uma excelente colecção de vídeo-aulas, e eram de Química Orgânica.

Vejo que estás a evoluir, mas acho que ainda estás muito preso. Digo isto porquê?

Bom, eu não utilizei nenhum programa para escrever aqueles códigos, por acaso escrevi-os de cabeça aqui. Não dependas de programas muito especializados para tudo.

Para escrever pseudo-código não é preciso nenhum programa específico. Para escrever código numa linguagem de programação, um bom editor de texto já se torna útil - aqui aproveita-se, e escreve-se lá também os pseudo-códigos, fica mais bonito visualmente enquanto se escreve.

Ainda tens muito para aprender, pelo que vou já dar umas luzes. Pretendo com isto que abras um pouco as asas e não te aconchegues de mais nessa "área de conforto".

Para escrever código utiliza-se um editor de texto (abrange tantas linguagens quantas aquelas que o seu syntax highlighter suportar), ou um IDE (Integrated Development Environment, e que costuma ser mais restrito a algumas linguagens). O código-fonte será compilado ou interpretado, dependendo da LP (linguagem de programação). Por exemplo, Pascal é uma LP compilada (gera executáveis, perceptíveis pelo OS), e Python é interpretada (depende de um interpretador para que o código seja executado).

Acho muito bem que estejas a estudar lógica e algoritmia, mas convinha entretanto começares a pegar numa LP para poderes compilar/interpretar o código e veres na realidade o que o teu código está mesmo a fazer. Neste momento os teus "testes de mesa" são fictícios, pois é aquilo que tu achas que se vai obter e não aquilo que se obtém mesmo - pode coincidir ou não, depende se resolveste bem os exercícios.

Acho bem que estejas a experimentar o Portugol. É pena que esteja descontinuado, eu mesmo o experimentei quando o descobri e achei uma ferramenta muito promissora para os iniciados em programação. Foi a partir dela que me inspirei, aliás, para desenvolver o meu estilo de escrita de pseudo-códigos.

Entretanto sei que perguntas te saltaram na cabeça que nem pipocas: "qual o editor de texto que uso?", "qual a LP por que começo?", etc.

Mais uma vez, calma. A resposta a estas questões, especialmente acerca da linguagem pela qual começar, depende de várias coisas.

Primeiro aviso: há quem te vá aconselhar de forma imparcial, e há quem te vá aconselhar com base nos gostos e "crenças" pessoais.

O meu método de aconselhamento é simples: tento ir de encontro ao que o outro precisa e quer, não àquilo que eu gosto e uso - não tenho de impingir nada a ninguém. Cada um escolhe por si.

Portanto, primeira questão: o que pretendes fazer no mundo da programação? Aplicações desktop? Aplicações web? Aplicações móveis? De tudo um pouco?

De seguida, que OS usas? Suspeito que seja Windows, por isso aconselho que, após dares os primeiros passos na programação, penses seriamente numa distribuição GNU/Linux. Ubuntu ou Linux Mint são boas opções para quem vem de Windows. Pessoalmente uso Ubuntu nos tempos livres.

Por fim, já tens alguma LP em mente, ou conjunto de LP's?


Agora, um pequeno exercício para veres algo novo: ciclos.

Implemente um programa que peça ao utilizar 10 números inteiros. Indique, no final, qual foi o maior, o menor e a média.

Restrições: só pode utilizar, no máximo, 5 variáveis. Recorra a um ciclo (ENQUANTO... FAZER..., PARA... ATÉ... FAZER..., ou REPETIR... ATÉ QUE...).

Exemplo de Input: 8, 11, 13, 2, 0, 8, 20, 29, 10, 22

Output: Máx = 29; Mín = 0; Média = 12.3

Não deste ainda, mas pesquisa. A programação é, em grande parte, feita de auto-aprendizagem por necessidade e gosto, não por umas aulas virtuais ou livros conceituados.

Cumprimentos. ;)

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Muito obrigado por todos esses conselhos! Eu realmente quero muito aprender a linguaguem Lua e C/C++, pois o meu principal objetivo é a criação de jogos para android e para windows ( Atualmente estou mais interresado em criação para android). Tenho 15 anos e estou a estudar programação por gosto e tambem, assim, quando chegar á faculdade já irei ter uma grande vantagem, pois terei bastantes conhecimentos adquiridos quando lá chegar. Eu quero mesmo ser programador, uso computadores desde os 5 anos e é algo que me fascina ;)

Em relação ao editor de texto, disseste para usar um editor de texto, consideras o notepad ++ bom para um iniciante como eu ? É o meu preferido para programar.

Sim uso windows, não estou a compreender isso da distribuição linux/GNU, pois eu nunca usei Linux nem GNU :P Quais são as vantagens deles?

Bem realmente não aprendi essa parte da programação desse exercicio, mas vou pesquiser na Internet como disseste. Eu só não sei onde vou para aprender funções, repetições, sequenciações e condições ( a condição e a repetição já sei agora os outros nem tanto..

Eu queria muito saber onde posso adquirir os teus conhecimentos em logica e algoritmos, eu estou mesmo "perdido" em relação ao que devo aprender, pois eu não sei onde posso encontrar fontes credíveis subordinadas ao tema dos algorítmos.

Eu vi alguns exercicios de algoritmos na internet e não fui capaz de resolver nenhum, pois os meus conhecimentos ainda são só do cálculo da media e os que indiquei em cima.. Se não for por programação consigo resolver esses problemas matematicos, mas com a programação observo que a quantidade de codigos que conheço é muito limitada, logo não consigo escrever o programa corretamente... Desde já muito obrigado pela ajuda que me tens vindo dar, já disse muitas vezes, mas nunca é de mais afirmar que es um excelente moderador e garanto-te que es a pessoa que mais me ajudou desde que entrei no mundo da programação. Nem sei como te agradecer ;)

( Desculpa o facto de o texto estar com alguns erros, escrevi muito a pressa pois estou sem tempo ;)

Aguardo resposta

Tem uma boa noite !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Obrigado EMCM por me mostrares essa forma mais simples ;) Sim, percebi. Eu já fiz dessa forma, mas no antes eu pensava que a forma que fazia era mais simples, mas realmente como dizes é mais facil e torna o código mais pequeno, logo fica mais fácil de entender ;) Tem uma boa noite !

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
thoga31

Eu realmente quero muito aprender a linguaguem Lua e C/C++, pois o meu principal objetivo é a criação de jogos para android e para windows ( Atualmente estou mais interresado em criação para android).

Inclui Java na lista. E se queres mesmo Android, Java é mandatório. ;)

Em relação ao editor de texto, disseste para usar um editor de texto, consideras o notepad ++ bom para um iniciante como eu ? É o meu preferido para programar.

Sim, Notepad++ é uma boa escolha para quem está a começar. Foi aquele que usei mais até recentemente, e ainda hoje o utilizo em certas ocasiões. Não é, de longe, o melhor, mas é agradável.

Sim uso windows, não estou a compreender isso da distribuição linux/GNU, pois eu nunca usei Linux nem GNU :P Quais são as vantagens deles?

Não são coisas independentes. Vê aqui um pouco de informação acerca do assunto. ;)

As vantagens não são óbvias para quem está habituado ao Windows. Mas que são muitas, lá isso são. As únicas "desvantagens" residem no facto dos "grandes jogos" não terem uma versão para estes sistemas, o que é uma pena, assim como outros softwares mais "avançados". Mas, para programação, as vantagens são várias. Um dia mais tarde virás a perceber melhor isso, mas deixo um exemplo: em Windows, se quiseres, na linha de comandos, passar o output de um programa como input para outro, a coisa complica-se pois não está preparado para isso. Por outro lado, o terminal de um sistema *NIX permite-te isso. Aliás, todo o seu funcionamento baseia-se neste princípio. Quem programa em Bash usa regularmente programas como se fossem argumentos ou comandos, isto porque ele vai funcionar exactamente como isso: chamo o programa A, e o seu output vai servir imediatamente de input ao programa B. Isto permite coisas fantásticas que só são possíveis nestes sistemas, e que em Windows é uma dor de cabeça emular.

Bem realmente não aprendi essa parte da programação desse exercicio, mas vou pesquiser na Internet como disseste. Eu só não sei onde vou para aprender funções, repetições, sequenciações e condições ( a condição e a repetição já sei agora os outros nem tanto..

Eu queria muito saber onde posso adquirir os teus conhecimentos em logica e algoritmos, eu estou mesmo "perdido" em relação ao que devo aprender, pois eu não sei onde posso encontrar fontes credíveis subordinadas ao tema dos algorítmos.

Eu vi alguns exercicios de algoritmos na internet e não fui capaz de resolver nenhum, pois os meus conhecimentos ainda são só do cálculo da media e os que indiquei em cima.. Se não for por programação consigo resolver esses problemas matematicos, mas com a programação observo que a quantidade de codigos que conheço é muito limitada, logo não consigo escrever o programa corretamente... Desde já muito obrigado pela ajuda que me tens vindo dar, já disse muitas vezes, mas nunca é de mais afirmar que es um excelente moderador e garanto-te que es a pessoa que mais me ajudou desde que entrei no mundo da programação. Nem sei como te agradecer ;)

É assim, não queiras aprender algoritmia só com pseudo-código, não dá. Adquirem-se as bases e passa-se a uma linguagem de programação. A primeira pode não ser logo aquela que nos será mais útil no futuro, principalmente no teu caso: tens 15 anos, um vasto tempo livre em mãos e mais 3 anos antes da universidade. Tens tempo de aprender não só 1 ou 2 LP's, mas sim várias. E isso é bom. Enquanto te "especializas" numa que te seja útil, será sempre saudável ir vendo outra. E sempre podes jogar com aquilo que vais aprender na universidade: C é uma certeza. Outras também dão Haskell, Java ou OCaml.

Eu não aprendi algoritmia e lógica com livros. A minha história nesse aspecto está desprovida de fontes de informação. Eu comecei no meu 10º ano com a minha nova calculadora TI 84+SE e fui ver as páginas finais do livro de instruções: era uma lista de todos os comandos da calculadora, com sintaxe e exemplos.

Basicamente comecei a programar por tentativa-erro. Primeiro fiz formulários com menus para Física e Química, e depois coisas mais complexas. No meu 11º ano já dominava bem a calculadora, e tinha noções de lógica adquiridas all by myself, às quais somei o que dei em Filosofia - foi aí que finalmente aprendi tabelas de verdade, a disjunção exclusiva, etc. Foi aí que descobri que a inversão de operadores aquando da negação, que descobri quando os ciclos falhavam, constituia afinal as Leis de De Morgan, etc.

No meu 12º ano iniciei-me em Pascal na disciplina de Aplicações Informáticas B, e desde então que tenho vindo a aprender cada vez mais coisas. Onde aprendi muito foi precisamente aqui no P@P.

Ou seja, isto para te dizer que nem sempre é preciso um livro, uma colectânea de vídeo-aulas ou muitos tutoriais para se aprender bem. Se tiveres um bom raciocínio e vontade de aprender, rapidamente te vais aperceber que muito daquilo que nós sabemos foi um trabalho de verdadeira conjectura e experiências tipo "what if" partindo de conhecimentos mais básicos.

Por exemplo, eu aprendi métodos encadeados em Pascal só por mim. Um dia perguntei-me "e se colocar um procedimento dentro de outro?", experimentei, fiz vários testes para ver os níveis de acesso criados, e pronto.

Não penses "uau, que génios" e tal. Não é nada disso: vais ver que um dia também serás um desses "génios iluminados". Pelo menos estás a entender bem aquilo que te vamos dizendo, ao contrário de outros com quem já lidei.

Se quisesses aprender Pascal e com esta LP fazer as tuas primeiras experiências, eu podia-te indicar este tutorial que conheço bem - fui eu que o escrevi (se quiseres dar uma vista de olhos antes de fazer o download, também está na Wiki).

Para outras LP's, o Google terá de ser o teu guia. Não disponho de muito tempo para isso.

Quanto ao problema que te propus, vamos dar uma olhadela ;)

Um ciclo (ou mais correctamente estrutura de repetição) executa uma série de código repetidamente, sendo controlado por uma condição de paragem. Cada execução desse código é denominada iteração.

Há essencialmente 3 tipos de ciclos, os quais podem existir em todas as linguagens ou não, ou então que têm derivações:

  • Enquanto... Fazer...
    Este ciclo decorre enquanto a condição de controlo for verdadeira. Quando esta se tornar falsa, o ciclo interrompe.
    Sintaxe:
    ENQUANTO (condição) FAZER
      Código do ciclo
    FIM-ENQUANTO
    


    Exemplo:

    A = 0
    ENQUANTO (A <= 10) FAZER
      Ler A
    FIM-ENQUANTO
    


    Neste exemplo, estamos a pedir ao utilizador a introdução de um número A, e o ciclo vai decorrer, pedindo um novo número A, enquanto este for igual ou inferior a 10. Nós pretendemos um números superior a 10.

  • Repetir... Até que...
    É o mesmo que o anterior, mas o que muda é a condição. O ciclo mantém-se em execução enquanto a condição for falsa. Assim que esta se torne verdadeira, o ciclo interrompe.
    Síntaxe:
    REPETIR
      Código do ciclo
    ATÉ QUE (condição)
    


    Exemplo (faz o mesmo que o anterior):

    A = 0
    REPETIR
      Ler A
    ATÉ QUE (A > 10)   <-- reparar bem na mudança da condição!
    


  • Para... Até... Fazer...
    Este ciclo tem uma particularidade: não tem propriamente uma condição de paragem. É antes controlado por um iterador. Basicamente pegamos numa variável e vamos incrementando-a, segundo um passo (há linguagens que não suportam a definição do passo).
    Sintaxe:
    PARA iterador = valor_inicial ATÉ valor_final (PASSO p) FAZER
      Código do ciclo
    FIM-PARA
    


    Este ciclo vai ser explicado na resolução do exercício que te propus... nada como um bom exemplo para se perceber.

Nota: o ciclo irá verificar a condição quando chegar à linha para o fazer. Se o ciclo tiver 100 linhas, e ao executar a linha 23 a condição cumpre-se, o ciclo não interrompe aí - ele continua as restantes 77 linhas. Se entretanto houver mudanças que voltem a condição a não ser cumprida, o ciclo não interrompe. Por isso existe, em várias LP's, dois comandos break e continue.

Resolução do exercício:

PROGRAMA Numeros10
VARIAVEL i, n, max, min, soma : Inteiro

INÍCIO
  Ler n
  max = n
  min = n
  soma = n

  PARA i = 2 ATÉ 10 PASSO 1 FAZER
     Ler n
     soma = soma + n
     SE n > max ENTÃO max = n
     SE n < min ENTÃO min = n
  FIM-PARA

  ESCREVER "Mínimo = " & min
  ESCREVER "Máximo = " & max
  ESCREVER " Media = " & soma/10
FIM

Em Pascal:

program numeros10;
var i, n, min, max, soma : integer;
begin
  readln(n);

  // inicializamos as variáveis com o primeiro número. Não se deve inicializar com outro qualquer.
  max := n;
  min := n;
  soma := n;

  // já lemos um número, por isso vamos ler do 2º ao 10º
  for i := 2 to 10 do begin
     readln(n);
     Inc(soma, n);
     if (n > max) then max := n;
     if (n < min) then min := n;
  end;

  writeln('Maximo = ', max);
  writeln('Minimo = ', min);
  writeln(' Media = ', soma / 10 :0:5);
  readln;  // pausa
end.

E em Python:

l = []
for i in range(10):
   l.append(int(input()))
print("Maximo = {0}\nMínimo = {1}\nMédia = {2}".format(max(l), min(l), sum(l)/10)

Como podes ver, em Python não tens uma estrutura "típica". É antes uma versão que utiliza um range, no qual se pode definir 3 argumentos: o início, o fim e o passo. Como eu quero simplesmente introduzir 10 números, passo apenas um argumento: o fim. Por defeito, o início será 0 e o passo 1.

Mas isto são assuntos mais específicos, mas que acho que não faz mal nenhum já começares a ler: pelo menos ficas a saber que há variedade.

Editado por thoga31

Knowledge is free! | Occasional Fortnite player

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
joao moreira

Li o teu post 4 vezes e penso que esclareceste todas as minhas dúvidas ;) Muito obrigado por todo o apoio ! Vou começar agora a dedicar-me ainda mais e daqui a alguns dias colocarei nesta secção num post os meus progressos ;) Vou aprofundar ainda mais essa matéria da estrutura de repetição e muitas outra.

Desejo-te uma feliz Páscoa com tudo de bom ! :)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.