Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve...

28
Algoritmos Introdução à Computação para a Engenharia Ambiental Prof. Jó Ueyama

Transcript of Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve...

Page 1: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Algoritmos

IntroduçãoàComputaçãoparaaEngenhariaAmbiental

Prof.JóUeyama

Page 2: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

2

Self-drivingcars

Page 3: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Algoritmo

•  Computadornãotemsensopróprio–  devereceberinstruçõesexplícitas(algoritmos)

•  Umalgoritmocorretodevepossuir3qualidades:1) Cadapassodoalgoritmodeveserumainstruçãoque

possaserrealizada

2) Aordemdospassosdeveserprecisamentedeterminada

3) Oalgoritmodeveterfim(programaçãoestruturada)

3

Page 4: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmo

•  Algoritmoparatrocarpneudeumcarro

4

Início

Fim

TrocarPneu

EseoestepeesTvervazio!?Issodemandaumadecisãoentredoiscursospossíveis

Page 5: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmo

•  Algoritmoparatrocarpneudeumcarro

5

Início

Fim

Estepevazio?

Chamaroborracheiro TrocarPneu

Estruturacondicional

sim não

Écertoqueesseprocessopoderiasermelhordetalhado

Page 6: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmo

•  Algoritmoparatrocarpneudeumcarro

6

Início

Fim

Estepevazio?

Chamaroborracheiro

Levantarocarro

sim não

podeserdetalhadoDesparafusararodaRemoverarodaColocaroestepeParafusararodaAbaixarocarro

podeserdetalhado

Estruturaseqüencial

Page 7: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmo

•  Algoritmoparatrocarpneudeumcarro

7

Início

Fim

Estepevazio?

Chamaroborracheiro

Levantarocarro

sim não

DesparafusararodaRemoverarodaColocaroestepeParafusararodaAbaixarocarro

Desapertaroparafuso1Desapertaroparafuso2Desapertaroparafuso3Desapertaroparafuso4

Apertaroparafuso1Apertaroparafuso2Apertaroparafuso3Apertaroparafuso4

ÉumarepeTçãoinconveniente

ÉumarepeTçãoinconveniente

Page 8: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

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

Page 9: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Recapitulando •  Lucrandocomoopensourceso*ware

– Vendadecontratosdesuporte– Comercializarextensõesaoprodutoinicial– Vendadadocumentaçãodoprograma– Vendadoscódigosbinários

•  Como?Porque?Portabilidade?

– Vendadaexperiênciacomoconsultor

•  Exemplosdeopensource– MySQLdatabase,ApacheWebServer,Firefox,Sambaservidordearquivoedeimpressão

9

Page 10: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Recapitulando •  Exibiracompilaçãoeaexecuçãodeumcódigo

•  Executarohexdump-Chello|more– Apontarasbibliotecasinclusasnoexecutável

•  Diferençaentreumarquivoexecutáveleumarquivotexto?(ArquivoMS-Word?)– ArquivotextocontémcaracteresdeacordocomatabeloASCII(‘65’é‘A’)

– Arquivosbináriosnecessitamdeoutrosprogramasparaleremasinformaçõesnoarquivo

10

Page 11: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

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

Page 12: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

ComponentesdeumFluxograma •  Início•  Procedimento•  Estruturadedecisão•  RepeTção•  Fim

12

Page 13: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmos•  OutrosexemplosquerequeiramrepeTção?•  Cálculodamédiadas3provas•  Cálculodamédiadas3provasedaturma•  CálculodatemperaturamédiaobTdade3sensores– Muitocomumparaambientesquerequeiramconfiabilidade

– Desenvolverestealgoritmonoquadro

13

Page 14: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Algunsconceitosadicionais•  Bit(binarydigit)éamenorunidadedainformação

•  Ovalordeumbitéarmazenadocomo:– Cargaelétricaacimaouabaixodeumnívelemumcapacitornamemória

– OndaseletromagnéTcasquepercorremmaterialsólidoounaatmosfera

– NafibraóTcazeroseunsrepresentamausênciaoupresençadeluz

14

Page 15: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Algunsconceitosadicionais•  Byteéoconjuntodeoitobitsquenormalmenterepresentaumcaractere“j”,“2”,“@”,etc.

•  ASCIIusa8bitspararepresentarumcaractere•  UNICODE(e.g.UTF-8)uTlizade1a4bytespararepresentarumcaractere

•  PalavraéumasequênciadebitsdetamanhofixoqueéprocessadoemconjuntopelaCPU

•  Palavraéaunidadedetransferênciaentreamemóriaeoprocessador

15

Page 16: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Algunsconceitosadicionais•  Hierarquiadamemória(capacidadeetempodeacesso)– Registrador– Cache– MemóriaPrincipal(RAM)– MemóriaSecundária(discos)– Memóriadebackup

16

Page 17: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmos

•  Emumaestruturaseqüencial,ospassossãotomadosemumaseqüênciapré-definida.

17

EstruturaSeqüencial

Page 18: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmos•  UmaestruturacondicionalpermiteaescolhadogrupodeaçõesaserexecutadoquandodeterminadacondiçãoéounãosaTsfeita.– Exemplo:calcularamédiadecadaalunoedaturma

18

EstruturaCondicional

?sim não

Page 19: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

EstruturadeAlgoritmos•  UmaestruturaderepeTçãopermitequeumaseqüênciadecomandossejaexecutadarepeTdamenteatéqueumadeterminadacondiçãodeinterrupçãosejasaTsfeita.

•  FalardarepeTçãodamédiadaturma– Comodeixarovalordaturmaaserdefinidaemtempodeexecução?

19

EstruturadeRepeTção

?

sim

não

Page 20: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

DesenvolvimentodoAlgoritmo

•  Começamoscomumaafirmaçãogenéricadasoluçãodoproblemaeprosseguimosatéoalgoritmofinal,aumentandosistemaTcamenteoníveldedetalhamento.

Page 21: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

DesenvolvimentodoAlgoritmo

•  Issodependedoagentequeiráexecutaroalgoritmo

•  Oscomputadorestêmumconjuntomuitolimitadodeinstruçõeseoalgoritmodeveserexpressonostermosdessasinstruções.

•  Comosabersejátemosumnívelsuficientededetalhesnoalgoritmo?

Page 22: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Dronesparapulverização

Page 23: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

Droneparapulverização

•  Seisbicosparaapulverizaçãoagrícola•  Podecarregarumpayloadde10Kg•  Autonomiade15minutos•  Podecobrir100hectaresdeumdiadeserviço•  OvoopodeserprogramadoviaGPS

Page 24: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

CrossCompiler

•  Oucompiladorcruzado–éumcompiladorquecriaosexecutáveisparaoutrasplataformas,ondeosprogramasserãorodados

•  MuitoadotadoparaprogramardisposiTvosquenãopossuemcapacidadepararodarumcompilador

•  Porexemplo,umcompilarquerodaemumWindows7equegeracódigosparaumsmartphoneAndroid

Page 25: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

CrossCompiler

Page 26: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

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).

Page 27: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

DesenvolvimentodoAlgoritmo

2)Elaboraroalgoritmopararesolverumaequaçãodosegundograu

Ax2+Bx+C=0

OsvaloresdeA,BeCdevemserfornecidospelousuário

27

Page 28: Algoritmoswiki.icmc.usp.br/images/d/d4/Aula01_algoritmos_Jó2016.pdf · 2018-09-25 · – deve receber instruções explícitas (algoritmos) • Um algoritmo correto deve possuir

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