Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve...
Transcript of Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve...
Algoritmos
IntroduçãoàComputaçãoparaaEngenhariaAmbiental
Prof.JóUeyama
2
Self-drivingcars
Algoritmo
• Computadornãotemsensopróprio– devereceberinstruçõesexplícitas(algoritmos)
• Umalgoritmocorretodevepossuir3qualidades:1) Cadapassodoalgoritmodeveserumainstruçãoque
possaserrealizada
2) Aordemdospassosdeveserprecisamentedeterminada
3) Oalgoritmodeveterfim(programaçãoestruturada)
3
EstruturadeAlgoritmo
• Algoritmoparatrocarpneudeumcarro
4
Início
Fim
TrocarPneu
EseoestepeesTvervazio!?Issodemandaumadecisãoentredoiscursospossíveis
EstruturadeAlgoritmo
• Algoritmoparatrocarpneudeumcarro
5
Início
Fim
Estepevazio?
Chamaroborracheiro TrocarPneu
Estruturacondicional
sim não
Écertoqueesseprocessopoderiasermelhordetalhado
EstruturadeAlgoritmo
• Algoritmoparatrocarpneudeumcarro
6
Início
Fim
Estepevazio?
Chamaroborracheiro
Levantarocarro
sim não
podeserdetalhadoDesparafusararodaRemoverarodaColocaroestepeParafusararodaAbaixarocarro
podeserdetalhado
Estruturaseqüencial
EstruturadeAlgoritmo
• Algoritmoparatrocarpneudeumcarro
7
Início
Fim
Estepevazio?
Chamaroborracheiro
Levantarocarro
sim não
DesparafusararodaRemoverarodaColocaroestepeParafusararodaAbaixarocarro
Desapertaroparafuso1Desapertaroparafuso2Desapertaroparafuso3Desapertaroparafuso4
Apertaroparafuso1Apertaroparafuso2Apertaroparafuso3Apertaroparafuso4
ÉumarepeTçãoinconveniente
ÉumarepeTçãoinconveniente
EstruturadeAlgoritmo
• Algoritmoparatrocarpneudeumcarro
8
Início
Fim
Estepevazio?
Chamaroborracheiro
Levantarocarro
sim não
RemoverarodaColocaroestepe
Abaixarocarro
Existeparafusop/desapertar?sim
não
desapertarparafuso
Existeparafusoparaapertar?sim
não
apertarparafuso
EstruturaderepeTção
Recapitulando • Lucrandocomoopensourceso*ware
– Vendadecontratosdesuporte– Comercializarextensõesaoprodutoinicial– Vendadadocumentaçãodoprograma– Vendadoscódigosbinários
• Como?Porque?Portabilidade?
– Vendadaexperiênciacomoconsultor
• Exemplosdeopensource– MySQLdatabase,ApacheWebServer,Firefox,Sambaservidordearquivoedeimpressão
9
Recapitulando • Exibiracompilaçãoeaexecuçãodeumcódigo
• Executarohexdump-Chello|more– Apontarasbibliotecasinclusasnoexecutável
• Diferençaentreumarquivoexecutáveleumarquivotexto?(ArquivoMS-Word?)– ArquivotextocontémcaracteresdeacordocomatabeloASCII(‘65’é‘A’)
– Arquivosbináriosnecessitamdeoutrosprogramasparaleremasinformaçõesnoarquivo
10
Recapitulando • ExibiraexecuçãodocódigoparaimprimiratabelaASCII– ASCIIélimitadoaromanle5ers– Limitadoa7bitseporissosósuporta128caracteres(incluindocaracteresdecontrole,<ENTER>,ESC,etc.)
– ExtendedASCIIsuporta256caracteres• UNICODE
– Suportacaracteresdeváriaslínguascomochinês,japonês,árabe,tailandês,etc.
11
ComponentesdeumFluxograma • Início• Procedimento• Estruturadedecisão• RepeTção• Fim
12
EstruturadeAlgoritmos• OutrosexemplosquerequeiramrepeTção?• Cálculodamédiadas3provas• Cálculodamédiadas3provasedaturma• CálculodatemperaturamédiaobTdade3sensores– Muitocomumparaambientesquerequeiramconfiabilidade
– Desenvolverestealgoritmonoquadro
13
Algunsconceitosadicionais• Bit(binarydigit)éamenorunidadedainformação
• Ovalordeumbitéarmazenadocomo:– Cargaelétricaacimaouabaixodeumnívelemumcapacitornamemória
– OndaseletromagnéTcasquepercorremmaterialsólidoounaatmosfera
– NafibraóTcazeroseunsrepresentamausênciaoupresençadeluz
14
Algunsconceitosadicionais• Byteéoconjuntodeoitobitsquenormalmenterepresentaumcaractere“j”,“2”,“@”,etc.
• ASCIIusa8bitspararepresentarumcaractere• UNICODE(e.g.UTF-8)uTlizade1a4bytespararepresentarumcaractere
• PalavraéumasequênciadebitsdetamanhofixoqueéprocessadoemconjuntopelaCPU
• Palavraéaunidadedetransferênciaentreamemóriaeoprocessador
15
Algunsconceitosadicionais• Hierarquiadamemória(capacidadeetempodeacesso)– Registrador– Cache– MemóriaPrincipal(RAM)– MemóriaSecundária(discos)– Memóriadebackup
16
EstruturadeAlgoritmos
• Emumaestruturaseqüencial,ospassossãotomadosemumaseqüênciapré-definida.
17
EstruturaSeqüencial
EstruturadeAlgoritmos• UmaestruturacondicionalpermiteaescolhadogrupodeaçõesaserexecutadoquandodeterminadacondiçãoéounãosaTsfeita.– Exemplo:calcularamédiadecadaalunoedaturma
18
EstruturaCondicional
?sim não
EstruturadeAlgoritmos• UmaestruturaderepeTçãopermitequeumaseqüênciadecomandossejaexecutadarepeTdamenteatéqueumadeterminadacondiçãodeinterrupçãosejasaTsfeita.
• FalardarepeTçãodamédiadaturma– Comodeixarovalordaturmaaserdefinidaemtempodeexecução?
19
EstruturadeRepeTção
?
sim
não
DesenvolvimentodoAlgoritmo
• Começamoscomumaafirmaçãogenéricadasoluçãodoproblemaeprosseguimosatéoalgoritmofinal,aumentandosistemaTcamenteoníveldedetalhamento.
DesenvolvimentodoAlgoritmo
• Issodependedoagentequeiráexecutaroalgoritmo
• Oscomputadorestêmumconjuntomuitolimitadodeinstruçõeseoalgoritmodeveserexpressonostermosdessasinstruções.
• Comosabersejátemosumnívelsuficientededetalhesnoalgoritmo?
Dronesparapulverização
Droneparapulverização
• Seisbicosparaapulverizaçãoagrícola• Podecarregarumpayloadde10Kg• Autonomiade15minutos• Podecobrir100hectaresdeumdiadeserviço• OvoopodeserprogramadoviaGPS
CrossCompiler
• Oucompiladorcruzado–éumcompiladorquecriaosexecutáveisparaoutrasplataformas,ondeosprogramasserãorodados
• MuitoadotadoparaprogramardisposiTvosquenãopossuemcapacidadepararodarumcompilador
• Porexemplo,umcompilarquerodaemumWindows7equegeracódigosparaumsmartphoneAndroid
CrossCompiler
DesenvolvimentodoAlgoritmo
1) Elaborar um algoritmo que calcula a área de um triângulo (A = (b*h)/2).
26
2) Ler uma temperatura em graus Celsius e convertê-la em Fahrenheit.F = C(9:0=5:0)+32:0
3) Crie um algoritmo que lê a nota de 3 provas e verifica se o aluno foi aprovado (média >= 5,0).
DesenvolvimentodoAlgoritmo
2)Elaboraroalgoritmopararesolverumaequaçãodosegundograu
Ax2+Bx+C=0
OsvaloresdeA,BeCdevemserfornecidospelousuário
27
DesenvolvimentodoAlgoritmo
D>=0?
X1=-B+raiz(D)/2*AEscrever
“Nãoháraízesreais”
sim não
LerA
LerB
LerCD=B*B-4*A*C
X2=(-B-raiz(D))/2*A
EscreverX1eX2
fim
Início