Download - Aula 1 Algoritmo e Pseudo-código
SeijiIsotani,[email protected]
PAE:ArmandoM.Toda,Geiser [email protected]@gmail.com
Aula1AlgoritmoePseudo-código
Departamento deSistemas deComputaçãoUniversidade deSãoPauloSSC600– Introdução aCiência deComputação I
Informações sobre ocurso
• Sitedocursohttps://edisciplinas.usp.br/course/view.php?id=39957
• Atividadesonline:http://moodle.caed-lab.com
• Cronogramadasaulas– Serádisponibilizadonoedisciplinas
ObjetivosdoCurso
Apresentarosconceitosbásicosparaodesenvolvimentodeprogramas,
utilizandouma linguagemdeprogramaçãocomoapoio
DesenvolveroPensamentoComputacional
Oqueé?
• Programa: codificaçãodeumalgoritmo emumalinguagemdeprogramação(Ascencio,1999)
Oqueé?
• Pensamentocomputacional:pensamentonosproblemasdeformaanalítica edesenvolvimentodesoluçõesemformadealgoritmos(Easterbrook,2014)
PensamentoComputacional
Técnicasespecíficasdepensamentocomputacionalincluem:• Decomposiçãodoproblema• Reconhecimentodepadrões• Generalizaçãodepadrõesparadefinirabstraçõesoumodelos
• Projetodealgoritmos• Análisededadosevisualização
Problemas
• Somartrêsnúmeros
Passo1:Recebertrêsnúmeros
Passo2:Somarostrêsnúmeros
Passo3:Mostraroresultadoobtido
Problemas
• Trocarumalâmpada
Problemas
• Sacardinheironobanco24horas
• Pararesolveros problemasapresentados você precisa pelo menos:– Indicar quais são asentradas esperadas– Indicar quais são assaídas produzidas– Umconjunto depassos não ambíguospara transformar asentradas nas saídas.
Issoéumalgoritmo
Algoritmo
Umalgoritmo éumconjuntodeatividades que podem serexecutadas passo apassopara resolver problemas
Outrasdefinições:- http://en.wikipedia.org/wiki/Algorithm- RobertSedgewick – Algorithms inC,3rdEd,Addison Wesley
Algoritmo
• Característicasbásicas– ter fim– não dar margem à dupla interpretação
– capacidade de receber dado(s) de entrada domundo exterior
– poder gerar informações de saída para o mundoexterno ao do ambiente do algoritmo
– ser efetivo (todas as etapas especificadas noalgoritmo devem ser alcançáveis em um tempofinito)
Masperaí....
• Umalgoritmoéumprograma?– Não.Umprogramaéumadaspossíveisrepresentaçõesdeumalgoritmo.
• Umalgoritmoéumprocesso?– Não,processoéaatividadedeexecutarumprogramae,consequentemente,tambéméaatividadedeexecutarumalgoritmo.
Algoritmosestãoemtodaaparte
Nãoadiantafugir
• Imaginequevocêqueiracomprarnumsiteonline– Umalgoritmovaianalisarsuasatividadeserecomendarcoisasparacomprar
– Umalgoritmoiráverificarseucartãodecrédito– Umalgoritmoiráidentificaramaneiramaiseficientedeentregaroprodutonasuacasa
• Nãovaicompraronline?– Existeumalgoritmoparamaximizarasvendascolocandoosprodutosnaprateleirademaneiradiferenciada
• Emcomputaçãotudoviraalgoritmos
Senãoépossívelfugir,entãojunte-seaeleJ.
Sejaumcriadordealgoritmodeprimeiralinha!
Como?
Comocriaralgoritmos?
• Parasetornarum bomcozinheiro,vocênão devememorizar livros elivrosde receitas.
• Vocêestuda receitas existentes.• Você pratica fazê-los.• Você experimenta com suasprópriasvariações.
• Atéquepossainventar suasprópriasreceitas.
Comocriaralgoritmos?
• Parasetornarumbomprofissionaldacomputação,vocênãodevememorizarlivroselivrosdealgoritmos.
• Vocêestuda algoritmosfamosos.• Vocêpratica implementá-loseexecutá-los.• Depoispassaareconhecerpadrõesmaisgerais,eaexperimentar implementaçõescomsuasprópriasvariações.
• Atéque,finalmente,vocêiráinventar seusprópriosalgoritmos.
OK.Agoraeuseioqueéumalgoritmo!
Mascomo“escrever”ourepresentarumalgoritmo?
• DescriçãoNarrativa• Fluxograma• Pseudocódigo
DescriçãoNarrativa
Ecomorepresentarumalgoritmo?
• Descriçãonarrativa:– consisteemanalisaroenunciadodoproblemaeescrever,utilizandolinguagemnatural,ospassosaseremseguidosparasuaresolução(receitadebolo).
– Pontopositivo:Nãoénecessárioaprendernovosconceitos,poisalínguanaturaljáébemconhecida.
– Pontonegativo:Alínguanaturalabreespaçoparaváriasinterpretações,dificultandoatranscriçãodessealgoritmoparaprograma
Exemplo– DescriçãoNarrativa
• Descriçãonarrativa:– PASSO1– Receberosdoisnúmerosqueserãomultiplicados
– PASSO2– Multiplicarosnúmeros– PASSO3– Mostraroresultadoobtidodamultiplicação
Crieumalgoritmoparaexibiroresultadodamultiplicaçãodedoisnúmeros
• Descriçãonarrativa:– PASSO1– Receberumnúmero– PASSO2– Multiplicaronúmero*2– PASSO3– Mostraroresultadoobtidodamultiplicação
Exemplo- DescriçãoNarrativaCrieumalgoritmoparaexibirodobro
(n*2)deumnúmero
Fluxograma
Ecomorepresentarumalgoritmo?
• Fluxograma:– consisteemanalisaroenunciadodoproblemaeescrever,utilizandosímbolosgráficos,ospassosaseremseguidosparasuaresolução
– Pontopositivo:Oentendimentodeelementosgráficosémaissimplesqueoentendimentodetextos.
– Pontonegativo:Osfluxogramasdevemserentendidoseoalgoritmoresultantenãoédetalhado.Issodificultasuatranscriçãoparaumprograma
Fonte:http://wiki.icmc.usp.br/index.php/Scc-101(2011101)
Exemplo- FluxogramaCrieumalgoritmoparaexibiroresultado
damultiplicaçãodedoisnúmeros
Entradadedados
Cálculo Saídadedados
Exemplo- FluxogramaCrieumalgoritmoparaexibirodobrode
umnúmero
Pseudocódigo
Ecomorepresentarumalgoritmo?
• Pseudocódigo:– consisteemanalisaroenunciadodoproblemaeescrever,pormeioderegraspredefinidas,ospassosaseremseguidosparasuaresolução
– Pontopositivo:Representaçãoclarasemasespecificaçõesdelinguagemdeprogramação.Apassagemdoalgoritmoparaqualquerlinguagemdeprogramaçãoémaissimples.
– Pontonegativo:Asregrasdopseudocódigodevemseraprendidas
ALGORITMODECLAREn1,n2,mLEIAn1,n2m← n1*n2ESCREVAm
FIM
Exemplo- PseudocódigoCrieumalgoritmoparaexibiroresultado
damultiplicaçãodedoisnúmeros
Exemplo- Pseudocódigo
Existemváriasformasdeescreveropseudocódigo.Exemplos:
Multplicacao (n1,n2)m←n1*n2RETORNEm
FIM
ALGORITMODECLAREn1,n2,mLEIAn1,n2m← n1*n2ESCREVAm
FIM
algoritmo “Multiplicação”var
n1,n2,m:inteiroinicio
escreva(“Digitedoisnúmeros:”)leia(n1)leia(n2)mß n1*n2escreva(“Multiplicação=”,m)
fimalgoritmo
Exemplo- Pseudocódigo
ALGORITMODECLAREn1,n2,mLEIAn1,n2m← n1*n2ESCREVAm
FIM
ExemplocódigoC
CódigoC#include<stdio.h>voidmain() {int n1,n2,m;scanf("%d%d",&n1,&n2);m =n1*n2;printf("\n%d",m);
}
ALGORITMODECLAREn1,n2,mLEIAn1,n2m← n1*n2ESCREVAm
FIM
ALGORITMODECLAREn,mLEIAnm←n*2ESCREVAm
FIM
Exemplo- FluxogramaCrieumalgoritmoparaexibirodobrode
umnúmero
Exercício
• Façaumprogramaquerecebaoraio ecalculeoperímetro dacircunferêncianas trêsformasderepresentaçãodealgoritmos(descriçãonarrativa,fluxogramaepseudocódigo)
perimetroß 2*pi *raio