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

Post on 05-Jul-2020

3 views 0 download

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