Вы находитесь на странице: 1из 26

ALGORITMOS

Aprenda a programar #1: Voc pode programar para alcanar inmeros objetivos, como por exemplo, desenvolver um software, para automatizar tarefas, quem sabe vende-lo e ficar rico! ou melhor ainda, j pensou em criar um jogo de computador? ficar famoso e. rico! Voc tambm pode programar para web, desenvolver aplicativos e se fizer sucesso, hmm pode ficar rico! rsrs Sim, a rea de tecnologia um mercado em constante crescimento e com salrios iniciais relativamente altos. Se voc tem uma paixo em especial por computadores, por que no entender sua linguagem e se comunicar melhor com eles ^^

Qual a diferena da linguagem compilada para interpretada?


Na linguagem interpretada, o cdigo fonte traduzido para linguagem de mquina no momento da interpretao (execuo), e o cdigo fica visvel, enquanto na compilada, este feito anteriormente, no sendo possvel visualizar o cdigo fonte.

Ouvi dizer, que existem linguagens de baixo e alto nvel, qual a diferena?
Resumidamente, as linguagens de baixo nvel, so aquelas que possuem contato direto com o ,hardware do computador, geralmente linguagens compiladas, como por exemplo C, C++, Assembly Enquanto as linguagens de alto nvel o contato com o software, exemplos so linguagens interpretadas como Python, PHP, JavaScript, Pascal Aprenda a programar #2 | O que um Algoritmo: O algoritmo, uma instruo, ou uma ordem que voc dar ao computador, para que ele realize determinada tarefa. Ao contrrio do que a maioria das pessoas pensam, o computador no inteligente, quem inteligente, o programador! Em nossa linguagem, se eu fosse criar um algoritmo explicando o que acontece quando acordo at o momento que saio de casa seria mais ou menos o seguinte:

Inicio Diogo Rocha desperta abre os olhos Desliga o despertador Olha as horas Agradece a Deus por esse dia senta na cama coloca o primeiro p no cho pe o segundo fica de p tira o colete cala o chinelo anda at o banheiro entra no banheiro escova os dentes penteia o cabelo troca de roupa pega a mochila FIM iremos aprender a programar em uma pseudo-linguagem, conhecida como Portugol ou Portugus Estruturado. Aprenda a programar #3 | Variveis: Mostra o que so variveis, os tipos de variveis e as palavras reservadas do Portugol. ] sa

Variveis

Ou seja, toda varivel tem um nome, valor e tipo. Mas voc no falou de tipo, o que isso? As variveis, podem sem classificadas em: numrica (numeros reais ou inteiros); caracteres (sequncias de texto); booleanas (verdadeiro ou falso); Em portugol, temos os tipos: real, inteiro, caractere e logico

: O primeiro caractere de sua varivel, deve ser necessariamente letra ou underline _. No pode comear em nmeros Nomes de variveis no podem ter espaos em branco. Nada de Coca Cola por exemplo. Uma varivel correta seria CocaCola, tudo junto e sem espaos. Essa aqui chega a ser difcil No permitido variveis com mais de 127 caracteres (pasmem! quem criaria uma varivel desse tamanho?) E por fim, em Portugol, diferente de outras linguagens de programao, as variveis no so case sensivity, ou seja, elas no diferenciam maisculas de minsculas. Logo, DiOgO = diogo

Aprenda a programar #4 | Primeiro Programa: Como a estrutura de um algoritmo, como feita a declarao de variveis e finalmente o primeiro programa (Ol Mundo!). e a partir de agora ser necessrio para um melhor acompanhamento, que todos j tenham o VisualG instalado na mquina.

Estrutura do portugol
Todo e qualquer algoritmo, ter sempre um Nome, Declarao de variveis, Incio e Fim. Na estrutura abaixo: Algoritmo nome-do-seu-algoritmo VAR nome-da-var: tipo nome-da-var2: tipo INICIO | | | | FIMALGORITMO

O que declarao de variveis?


Ela necessria para que o interpretador entenda que aquela palavra uma varivel, alm de ser til em muitos casos, para que no d um erro em seu programa futuramente devido a um erro de digitao, acusando de imediato onde est o erro.

Na estrutura do Portugol, dentro da seo VAR, declaramos a varivel da seguinte maneira: Nome-da-var: tipo ex: meunome: caractere

Vamos ento criar nosso primeiro programa!


Na tela Inicial do VisualG, j temos a estrutura de nosso portugol pronta, como expliquei no incio do post. algoritmo ol mundo var inicio escreva(Ol Mundo!) fimalgoritmo

No entendi nada! o que esse escreva?


Sua funo escrever na tela o texto entre (aspas) Se voc est utilizando o visualg, ao digitar este cdigo e apertar F9, o cdigo ser executado, e voc ver que estar escrito na tela apenas a frase: Ol Mundo!

E porqu no h nada no campo das variveis?


Porque ainda no utilizamos nenhuma. No cdigo acima, como vocs podem ver, foi utilizado apenas um minsculo pedao do que podemos fazer em portugol. No algoritmo a seguir, vamos fazer o uso da funo leia() e de variveis. algoritmo leianumero var num: inteiro inicio escreva(Digite um nmero: ) leia(num) escreva(O nmero digitado : , num)

fimalgoritmo

Entendendo o algoritmo
Foi declarado a varivel num, como inteiro. Ou seja, poder receber qualquer nmero nofracionrio (-2, -3, -20, 0, 1, 2, 40, 18) Em seguida, o algoritmo ir solicitar ao usurio que digite um nmero, escrevendo na tela a seguinte frase: Digite um nmero: Se vocs notarem, h um espao aps os : e antes da , isso necessrio para que o cursor d o espao desejado. Como falei em um post anterior da srie, o computador no inteligente, ou seja, voc tem que explicar tudo a ele, passo a passo. o leia(num) ir aguardar com o cursor na tela at que o usurio digite um nmero inteiro e tecle enter. O num a varivel que declaramos no incio do algoritmo, lembram? E finalmente, o resultado. escreva(O nmero digitado : , num) importante notar, que no escreva, tudo o que estiver entre aspas, vai ser tratado como um texto qualquer, ento para retornarmos o contedo de uma varivel, fechamos primeiro as aspas, colocamos uma vrgula e digitamos o nome da varivel, para s ento fechar o parenteses.

Treinem mais um pouco


Galera, que tal treinar mais um pouco 1. Crie um algoritmo que leia 2 nmeros e mostrem o resultado. 2. Crie um algoritmo que leia o nome e a idade de algum, e mostre na tela o que foi digitado. var num: inteiro num2: inteiro inicio escreva ("Digite o primeiro numero:") leia (num) escreva ("O numero digitado :", num) escreva ("Digite o segundo numero:") leia (num2) escreva ("O numero digitado :", num2) fimalgoritmo

LER NOME E IDADE var nome: caractere idade: inteiro inicio // Seo de comandos escreva ("Digite o nome da pessoa:") leia (nome) escreva ("Digite a idade da pessoa:") leia (idade) escreva ("O nome da pessoa :", nome, " e sua idade :", idade "anos" )

fimalgoritmo SOMAR DOIS NUMEROS var num1: inteiro num2: inteiro inicio // Seo de comandos escreva ("Digite o primeiro numero:") leia (num1) escreva ("Digite o segundo numero:") leia (num2) escreva ("A soma dos dois numeros :", num1+num2)

fimalgoritmo

ALGORITMO LER NOME, IDADE E ANO NASCIMENTO var nome: caractere idade: inteiro ano: inteiro inicio // Seo de comandos escreva ("Digite o nome da pessoa:") leia (nome) escreva ("Digite a sua idade:") leia (idade) escreva ("Digite o seu ano de nascimento:") leia (ano) escreva ("O nome da pessoa " ,nome, "sua idade ", idade,"e seu ano de nascimento :" ,ano)

fimalgoritmo

LER DATA DE NASCIMENTO algoritmo "datadenacimento" var dia: inteiro mes: literal ano: inteiro

inicio escreva ("Digite o dia do seu nascimento:") leia (dia) escreva ("Escreva o mes que voce nasceu:") leia (mes) escreva ("Digite o seu ano de nascimento:") leia (ano) escreva ("O dia " ,dia, "o mes ", mes,"e seu ano de nascimento :" ,ano)

fimalgoritmo

algoritmo "EscrevaNomeIdade" var nome: literal idade: inteiro inicio escreva ("Digite o seu nome:") leia (nome) escreva ("sua idade:") leia (idade) escreva ("seu nome " ,nome, "sua idade ", idade) fimalgoritmo

Aprenda a programar #5 | Operadores Aritmticos: O explica como atribuir valores variveis e mostra quais so os operadores aritmticos.

Retrospectiva do ltimo episdio post


Foi visto no post/tutorial anterior, declarao de variveis, como escrever uma mensagem ao usurio, e insero de dados a partir de interao com o leitor, como no exemplo abaixo: algoritmo exemplo var empresa: caractere inicio escreva(Que empresa oferece hospedagem de sites pelo melhor custo/benefcio? ) leia(empresa) escreva(Voc digitou: ,empresa) fimalgoritmo

Atribuio
Utilizaremos este smbolo/sinal/setinha, para atribuir um valor a uma varivel: <Exemplo: numero <- 10 id <- 18 e tambm, podemos atribuir a uma varivel, o valor de outra varivel. A questo que eu quero atribuir a varivel id, o valor da varivel x como seria? simples id <- x .

Operadores aritmticos
em uma frmula matemtica, teramos que passar tudo para uma linha apenas. o que chamamos de linearizao.

//Faa um programa que leia 2 notas e mostre a mdia delas. Sendo que deve possuir a seguinte interao: //Digite a 1 nota: //Difite a 2 nota: //A mdia : algoritmo "Media" var nota1: inteiro nota2: inteiro media: real inicio escreva ("Digite a 1 nota:") leia (nota1) escreva ("Digite a 2 nota:") leia (nota2) media:= (nota1+nota2)/2; escreva ("A media " ,nota1, "+", nota2, "/2", "=", media)

fimalgoritmo

Aprenda a programar #6 | Operadores Lgicos e Relacionais: Esse post fala sobre os operadores relacionais e lgicos, alm de falar um pouco da tabela verdade. ^

Operadores relacionais
Os operadores relacionais, servem para realizar a comparao entre duas expresses, e resultam apenas um valor Verdadeiro ou Falso.

por exemplo: 2 + 2 < 5 ==> Verdadeiro 18 <> 18 ==> Falso

Os operadores lgicos

2 + 2 < 5) e (18 <> 18) resulta FALSO, pois como podemos observar na tabela verdade acima, Verdadeiro e Falso resulta Falso. .

Difcil? No, basta um pouco de treino


Que tal responder alguns desafios? retornando o resultado da expresso, sendo ele, Verdadeiro ou Falso. 1. 2. 3. 4. 5. ((3 + 5) / 2) > 0) : V (3 * 3 > 10) ou (2 + 2 < 10) : F ou V = V (10 <> 5) ou (1 + 1 = 0) : V ou F = V (2 + 3 >= 5) e (18 / 3 < 7) : V e V =V (1 + 1 = 0) e (0 1 > 0) : FeF=F

algoritmo "Media" var nv1: real nv2: real nvt: real media: real inicio escreva ("Digite a nota da V1:") leia (nv1) escreva ("Digite a nota da V2:") leia (nv2) escreva ("Digite a nota da VT:") leia (nvt) media:= ((nv1*2)+(nv2*2)+nvt)/5)); escreva ("A media , nota da V1:" ,nv1," peso 2 + nota da V2:", nv2, " peso 2+ nota da Vt:" ,nvt, " Tudo dividido por 5") escreva (" Sua media = ", media)

fimalgoritmo /

Aprenda a programar #7 | Algoritmos Condicionais


Veja como utilizado a estrutura se no portugol.

Estrutura condicional
Vejamos Se o Flamengo vencer entao . ele ser campeo da libertadores fimse ento, poderia basicamente dizer que em um algoritmo a sintaxe seria a seguinte: se <condio> entao . <aes a serem realizadas se a condio for verdadeira> //pode ser uma ou mais fimse

sei que o computador no entenderia se eu colocasse simplesmente ele ser campeo da libertadores, ento como ficaria isso em um algoritmo?
Esse foi um exemplo bem didtico, mas em portugol, seria mais ou menos o seguinte: se (vencedor = Flamengo) entao . escreva(Flamengo ser o campeo da Libertadores!!!) fimse

. antes da ao, necessrio?


No, esses quatro pontos, um artifcio que estou usando aqui no blog para indicar que ali, existe um espao ou uma tabulao, j que se eu simplesmente der o espao aqui no blog, ele no ir interpretar e ficar como se no houvesse nada

entendi essa parte mas e se a condio for falsa?


Se voc no mandar o computador fazer nada, ele nada far! (by eu) Nesse caso, podemos fazer nosso algoritmo de duas maneiras: 1 utilizar dois condicionais SE. Um exemplo bem didtico e de fcil entendimento: 1. 2. 3. 4. 5. 6. 7. 8. se dinheiro >= 30 entao . ir_ao_cinema <- verdadeiro . assistir_tv <- falso fimse se dinheiro < 30 entao . ir_ao_cinema <- falso . assistir_tv <- verdadeiro fimse

e a segunda opo, que bem melhor e de mais agradvel leitura 1. 2. 3. 4. 5. 6. 7. se dinheiro >= 30 entao . ir_ao_cinema <- verdadeiro . assistir_tv <- falso senao . ir_ao_cinema <- falso . assistir_tv <- verdadeiro fimse //dinheiro variavel //ir_ao_cinema uma variavel // assistir_tv varivavel

Observem que agora na linha quatro, apareceu uma palavrinha nova para ns O senao O senao

Para que serve o senao?


O senao, ser executado sempre que o resultado do se for falso.

algoritmo "Calcula area do circulo" var area: real raio: real inicio escreva ("Entre com o raio do circulo:") leia (raio) se raio > 0 entao area <- PI*(raio^2) // EXPONENCIACAO escreva ("A area do circulo de raio:", raio, "", area) fimse

se raio <= 0 entao escreva ("Raio nao pode ser nulo ou negativo!") fimse

fimalgoritmo 1 2 Faa um algoritmo que receba um nmero e mostre uma mensagem caso este nmero seja maior que 10. Faa um algoritmo que receba um nmero, e informe se este nmero est no intervalo de 100 a 200.

algoritmo "Faa um algoritmo que receba um nmero e mostre uma mensagem caso este nmero seja maior que 10." // Funo : // Autor : // Data : 10/5/2013 // Seo de Declaraes var num: inteiro inicio escreva("Digite um nmero: ") leia(num) se num > 10 entao escreva ("verdadeiro") escreva (" o numero e mesmo maior q 10 ele :", num) senao escreva("Falso o numero digitado menor que dez !!") fimse fimalgoritmo

algoritmo "Faa um algoritmo que receba um nmero, e informe se este nmero est no intervalo de 100 a 200." var num: inteiro inicio escreva ("Digite um numero:") leia (num) se (num >=100) e (num <= 200) entao escreva ("ok, este numero esta entre 100 e 200")

senao escreva ("nao e entre 100 e 200") fimse fimalgoritmo

ESCOLHA... CASO...
aprendemos sobre estrutura condicional, quando e como utilizar o operador SEENTAO-SENAO, porm, dependendo da ocasio, quando se h muitas escolhas diferentes, nosso cdigo pode ficar grande, e de difcil leitura Nesse caso, entra mais uma funo em nosso querido algoritmo, o ESCOLHA CASO CASO OUTROCASO =)

Comentrios
Em portugol, nossos comentrios so tudo aquilo precedido por // (duas barras)

Para que serve os comentrios?


Os comentrios em um cdigo, serve para facilitar o entendimento por outros programadores. No podemos ser egostas em pensar que apenas voc que o escreveu deve entende-lo, outras pessoas mais cedo ou mais tarde, precisaro ter acesso ao cdigo para dar manuteno ao mesmo, seja ele software livre ou no. o.

E finalmente o Algoritmo
algoritmo "Classificao de Atletas" var nome: literal categoria: literal idade: inteiro inicio escreva ("Digite o nome do atleta: ") leia(nome) escreva ("Informe a idade do atleta: ")

leia(idade) // At aqui tudo bem, ele pede o nome e idade, l os valores e joga nas respectivas variveis escolha idade // A funo escolha ir interpretar os casos abaixo em cima da varivel idade caso 5,6,7,8,9,10 // Caso a varivel idade receba os valores de 5 a 10, ir atribuir na varivel categoria o valor: infantil categoria <- "infantil" caso 11,12,13,14,15 // Caso a varivel idade receba os valores de 11 a 15, ir atribuir na varivel categoria o valor: juvenil categoria <- "juvenil" caso 16,17,18,19,20 // Caso a varivel idade receba os valores de 16 a 20, ir atribuir na varivel categoria o valor: junior categoria <- "junior" caso 21,22,23,24,25 // Caso a varivel idade receba os valores de 21 a 25, ir atribuir na varivel categoria o valor: profissional categoria <- "profissional" outrocaso // E se a varivel idade no receber nenhum dos valores acima mencionados, vamos atribuir a varivel categoria o valor: invlido categoria <- "INVALIDO" fimescolha // O fimescolha finaliza a funo que abrimos anteriormente escreva("Categoria: ",categoria) // E este ltimo escreva, serve para que possamos mostrar o resultado ao usurio

fimalgoritmo algoritmo "Verificar disponiblidade" var marca, dispo: literal tamanho: inteiro inicio escreva("Digite o marca do tnis: ") leia(marca) escreva("Digite o tamanho desejado: ") leia(tamanho) escolha marca caso "Nike","Mizuno","All Star" escolha tamanho caso 38,39,40,41 dispo <- "diponvel" outrocaso dispo <- "indisponvel" fimescolha caso "Rainha","Kildare","Umbro","Penalty" escolha tamanho caso 40,41,42 dispo <- "Disponvel" outrocaso dispo <- "indisponvel" fimescolha outrocaso dispo <- "indisponvel" fimescolha

escreva("Esse tnis est: ", dispo) fimalgoritmo

ESTRUTURAS DE REPETIO As estruturas de repetio, iro repetir determinados comandos, at que uma comparao lgica se torne verdadeira ou falsa.
Na estrutura repita ate, todos os comandos sero executados e, ao final, haver uma expresso lgica, para que avalie a repetio, esta que somente ir cessar quando essa expresso for verdadeira

// sintaxe da estrutura de repetio repita <comandos> ate <expresso lgica/relacional> Agora um exemplo didtico 1 algoritmo "DemonstraRepeticao" 2 3 var 4 i: inteiro 5 6 inicio 7 8 i <- 1 9 repita escreva(i) 10 i <- i + 1 11 12 ate i > 10 13 14 fimalgoritmo Este algoritmo ir retornar na tela do usurio os nmeros: 1 2 3 4 5 6 7 8 9 10

Mais porqu?
Primeiramente foi declarado a varivel i como inteiro, logo em seguida utilizamos uma estrutura de repetio, o repita-ate, pedimos para escrever o valor de i e acrescentamos ao seu valor mais uma unidade, ou seja, i + 1. e at quando isso ser repetido? At que o valor de i seja maior que 10 Ento quando o valor de i chegou a 11, ele perguntou se i era maior que 10, como a resposta foi verdadeira, ele encerrou a repetio e foi para o prximo comando Como no temos mais nada, encerramos nosso algoritmo.

Algoritmo "MediaHarmonica"
var a, b, c, MH, i: real NOME: caractere inicio i <- 1 Repita escreva("Entre com o nome do aluno: ") leia(nome) escreval ("Entre com as notas das trs provas") escreva("Digite a primeira nota: ") leia(a) escreva("Digite a segunda nota: ") leia(b) escreva("Digite a terceira nota: ") leia(c) MH <- 3/(1/a + 1/b +1/c) escreval("A mdia harmnica do aluno: ", NOME, " ", MH) i <- i + 1 ate i > 40 FimAlgoritmo
algoritmo "Media Harmonica" var a,b,c, mh,i: real nome: literal inicio i <- 1 repita escreval("Digite o nome do aluno: ") leia(nome) escreval("============================ ") escreval("Informe a nota de 3 provas do aluno: ") escreval("============================ ") escreval("Informe a primeira nota : ") leia(a) escreval("============================ ") escreval("Informe a segunda nota : ")

leia(b) escreval("============================ ") escreval("Informe a terceira nota : ") leia(c) escreval("============================ ") se (mh = 7) e (mh <= 10) entao escreval("Aluno aprovado") senao escreval("Aluno em recuperacao") fimse escreval("A media harmonica do aluno : ", nome, " e ", mh:2:2) escreval("============================ ") ate i > 10 fimalgoritmo

Aprenda a Programar #10 | Algoritmos Estruturas de repetio 2


ENQUANTO... FAA

Diferentemente do repita-ate, onde todos os comandos so interpretados, para s ento haver uma expresso lgica verificando se deve ou no continuar a repetio, o enquanto-faca ir avaliar uma expresso lgica e, enquanto esta for verdadeira, ir executar os comandos Sintaxe do Enquanto .. faca 1 enquanto <expresso lgica ou relacional> faca <comandos> 2 3 fimenquanto

=)

Exemplo 1
Neste exemplo, vou criar um algoritmo utilizando o repita-ate e depois o mesmo algoritmo, s que dessa vez utilizando a estrutura enquanto faca, explicando passo-a-passo a vocs, para que possam entender a diferena entre ambos. Faa um algoritmo que solicite que o usurio digite um nmero, e informe se este nmero maior que 10. O programa s pode parar de solicitar o nmero quando este for igual a 0 (zero)

algoritmo "Ex 1" var numero: inteiro inicio

algoritmo "Ex 2" var numero: inteiro inicio numero <- 1

repita escreva ("Digite um numero:") leia (numero) limpatela // limpa a tela se (numero > 10) entao escreva ("ok, este numero e maior q 10") senao escreva ("numero menor q 10") fimse ate (numero =0) fimalgoritmo

enquanto numero <> 0 faca escreva("Digite um nmero: ") leia(numero) limpatela se (numero > 10) entao escreval("O nmero ",numero," maior que 10") senao escreval("O nmero ",numero," menor que 10") fimse fimenquanto fimalgoritmo

Nesse exemplo, comeamos nosso algoritmo atribuindo o valor 1 a varivel nmero, para que possamos comear a utilizar nossa estrutura de repetio, conforme podem ver na linha 9; E na linha 10, nossa condio para que o lao continue sendo executado, ou seja, enquanto a varivel numero for diferente de 0 (zero), continuaremos executando o programa, e o usurio digitando nmeros para descobrir se maior ou menor que zero (como se fosse necessrio um

programa para isso rsrsrs) claro, claro, apenas um exemplo didtico Mas que tal ver se realmente aprendeu? Deixo aqui ento um desafio a vocs

Deixo aqui ento um desafio a vocs 1. Crie dois algoritmos, um utilizando a estrutura de repetio repita .. ate e outro utilizando o enquanto .. faca. 2. Uma loja est vendendo trs modelos de carro, o algoritmo deve ler o nome e o valor (R$) dos seguinte automveis: GOL, PALIO, CORSA 3. Ao final, informar quantos carros de cada modelo foram vendidos e o valor total arrecadado em reais. 4. O programa s pode encerrar quando o valor do veculo for igual a zero. Good Luck

algoritmo Conta carros var carro: literal soma: real valor: real gol: real palio: real corsa: real

inicio valor <- 1 gol <- 0 // quantidades de gol corsa <- 0 // quantidade de corsas palio <- 0 // quantidade de palios soma <- 0 // soma dos valores enquanto valor <> 0 faca escreval("Vendomos:")

escreval ("GOL:R$ 33790 ; PALIO:R$ 34290 ; CORSA:R$ 32436.") escreva ("Qual a sua escolha ? ou 0 para sair:") leia ( carro ) se ( carro = "0") entao valor <- 0 senao escreva ("Insira o valor do automovel:") leia (valor) fimse limpatela escolha carro caso "GOL" gol <- gol +1 caso "PALIO" palio <- palio +1 caso "CORSA" corsa <- corsa +1 outrocaso escreva ("Nao temos esse carro!!") fimescolha soma <- soma + valor fimenquanto escreval ("---------------VENDAS-----------") escreval("GOLs vendidos: ",gol) escreval("PALIOs vendidos: ",palio) escreval("CORSAs vendidos: ",corsa) escreval("Valor total arrecadado com as vendas: R$",soma) fimalgoritmo // linha 23 valor nao pode ser 0 senao encerra

Вам также может понравиться