algoritmo - João Medeiros

Propaganda
Introdução a Algoritmos e
À Lógica de Programação
João Medeiros
FATERN 2010.2
Objetivos
• Apresentar os conceitos básicos sobre algoritmos e
lógica de programação.
• Apresentar formas distintas para representação do
raciocínio da lógica algorítmica.
ID]HPRVXVRGHDOJRULWPRVFRQVWDQWHPHQWHQDQRVVDYLGDFR
QDVPDLVGLYHUVDVVLWXDo}HVH[SDUDDFRUGDUSDUDGLULJLUSDU
DEDUEDSDUDFR]LQKDUHWF9DPRVH[HPSOL¿FDUPHOKRU2OKDQ
RTXDGUR,VHULDHOHXPDOJRULWPR"
O que é Programação?
• Fazer com que o computador faça
exatamente o que queremos que
ele faça
• Criar uma rotina para que,
seguindo uma lógica passo-a-passo,
possamos alcançar a resolução de
um problema computacional.
• Passo a passo da resolução:
algoritmo
4XDGUR6HULDHVWHXPDOJRULWPR"
3DUD UHVROYHU XP SUREOHPD TXDOTXHU p QHFHVViULR TX
SULPHLUDPHQWHHQFRQWUDGDXPDPDQHLUDGHGHVFUHYHUHVWHSU
GH XPD IRUPD FODUD H SUHFLVD 'HSRLV p SUHFLVR TXH HQFRQ
XPD VHTrQFLD GH SDVVRV TXH SHUPLWDP TXH R SUREOHPD
Algoritmo
•
“Algoritmo é um conjunto finito de regras que provê uma seqüência de operações para resolver um
tipo de problema específico, em um tempo determinado” (Knuth, A Arte de Programar, 1997)
•
Características:
✴ Um algoritmo sempre termina, ele deve ter um fim. Na verdade, cada ação do algoritmo, cada
passo, deve ser simples o bastante de forma a ser executada em um intervalo de tempo finito.
✴ As instruções do algoritmo devem estar em uma seqüência lógica, ou seja, deve existir uma
ordem de execução dos passos da seqüência.
✴ Cada ação é descrita precisamente e sem ambigüidades, ou seja, o algoritmo não pode dar
margem à dupla interpretação.
✴ Um algoritmo sempre produz um ou mais resultados (saídas), podendo não exigir dados de
entrada.
✴ Um algoritmo sempre solucionar um determinado problema, justamente, para que tenha uma
utilidade.
•
Um algoritmo é uma solução do problema e não a solução, ou seja podem existir vários algoritmos
para o mesmo problema.
Fases Básicas da
Construção de Algoritmos
• Entrada: São os dados de entrada do algoritmo, os valores que ele
vai usar no processamento para chegar à solução do problema.
Fornecidos pelo usuário, fazendo uso de algum dispositivo de
entrada de dados, tal como, um teclado, um mouse ou um leitor de
código de barras.
• Processamento: São os procedimentos utilizados para chegar ao
resultado final, para alcançar a resolução do problema. Esses
procedimentos são executados no processador do computador e os
valores parciais são armazenados na memória (memória RAM).
• Saída: São os dados já processados. É o resultado do
processamento. Estes dados de saída são apresentados em algum
dispositivo de saída. Por exemplo, a tela de um monitor.
Para construir um
algoritmo, identifique
,QWURGXomRj3URJUDPDomR
• Quais dados são necessários
para começar o algoritmo? Que
dados ele vai precisar para
executar? – ENTRADA
• Quais são os cálculos que
precisam ser feitos e quais
decisões precisam ser tomadas?
– PROCESSAMENTO
• Quais dados devem ser exibidos
para o usuário? – SAÍDA
)LJXUD
3RU LVVR DQWHV GH FRQVWUXLU XP DOJRULWPR SDUH SDUD SHQVDU H
LGHQWL¿FDU
‡ 4XDLVGDGRVVmRQHFHVViULRVSDUDFRPHoDURDOJRULWPR"4XH
GDGRVHOHYDLSUHFLVDUSDUDH[HFXWDU"±(175$'$
‡ 4XDLVVmRRVFiOFXORVTXHSUHFLVDPVHUIHLWRVHTXDLVGHFLV}HV
SUHFLVDPVHUWRPDGDV"±352&(66$0(172
‡ 4XDLVGDGRVGHYHPVHUH[LELGRVSDUDRXVXiULR"±6$Ë'$
Exemplo
• algoritmo para calcular a média aritmética de dois números.
Quais seriam as fases desse algoritmo?
• Entrada: os dois números (afinal, para calcular a média,
você precisa ter os dois valores)
• Processamento: o cálculo da média (que seria somar os
dois números e dividir por dois)
• Saída: a média (que era o objetivo do problema)
GH GHVFUHYHU RV SDVVRV SULQFLSDLV GD VROXomR SDUD XP SUREOHP
8PDUHFHLWDGHERORSRUH[HPSORpXPDGHVFULomRQDUUDWLYD2XW
H[HPSORVVmRWRPDUEDQKRYHU4XDGURHFDOFXODUDPpGLDGH
Representação de
Algoritmos:
DOXQRYHU4XDGUR
Descrição Narrativa
,QWURGXomRj3URJUDPDomR
• Vantagem:Todos falamos e
conhecemos o português e
sabemos, bem ou mal, fazer
uma descrição, uma lista de
atividades.
)LJXUD
• Desvantagens
• Não há um padrão
4XDGUR$OJRULWPRSDUD&DOFXODUD0pGLDGHXP$OXQR'HVFULomR1DUUDWLYD
• Imprecisão
4XDGUR$OJRULWPRSDUDWRPDUEDQKR'HVFULomR1DUUDWLYD
4XDO D YDQWDJHP"7RGRV IDODPRV H FRQKHFHPRV R SRUWXJXrV H
VDEHPRVEHPRXPDOID]HUXPDGHVFULomRXPDOLVWDGHDWLYLGDGHV
( DV GHVYDQWDJHQV" %HP SULPHLUR QmR Ki XP SDGUmR &DGD
SHVVRDSRGHHVFUHYHUFRPRTXLVHUHPWySLFRVVHPWySLFRVXVDQGR
YHUERVQRLQ¿QLWLYRRXQmRHWF2XWUDGHVYDQWDJHPpDLPSUHFLVmR
XPDYH]TXHDHVSHFL¿FDomRSRGHQmR¿FDUFODUDRX¿FDUDPEtJXD
,QWURGXomRj3URJUDPDomR
Representação de
Algoritmos:
2V SULQFLSDLV VtPERORV GR ÀX[RJUDPD VmR DSUHVHQWDGRV QD
,QWURGXomRj3URJUDPDomR
)LJXUDDRODGRGHFDGDVtPERORHVWiDVXDXWLOL]DomR$OpPGHVVHV
VtPERORV DV VHWDV TXH RV XQHP LQGLFDUmR D GLUHomR GR ÀX[R GH
H[HFXomRGRDOJRULWPR(GHQWURGHFDGDVtPERORGHYHVHUHVFULWRR
2V SULQFLSDLV
VtPERORV GR ÀX[RJUDPD VmR DSUHVHQWDGRV QD
TXHRFRUUHUiQDTXHODIDVH
)LJXUDDRODGRGHFDGDVtPERORHVWiDVXDXWLOL]DomR$OpPGHVVHV
VtPERORV DV VHWDV TXH RV XQHP LQGLFDUmR D GLUHomR GR ÀX[R GH
H[HFXomRGRDOJRULWPR(GHQWURGHFDGDVtPERORGHYHVHUHVFULWRR
TXHRFRUUHUiQDTXHODIDVH
Fluxograma
•
Vantagem:
•
Ferramenta conhecida em outras áreas
•
Figuras dizem mais que palavras
•
•
•
Tem uma padrão mundial e pode ser
compreendido em qualquer lugar
•
9DPRVLOXVWUDURXVRSDUDTXHYRFrSRVVDHQWHQGHUPHOKRU6XSRQKD
XPDOJRULWPRSDUDFDOFXODUDPpGLDGHXPDOXQRHDSUHVHQWDUHODSDUD
)LJXUD6LPERORJLDGR)OX[RJUDPD
RXVXiULR&RPRHOH¿FDULDUHSUHVHQWDGRXVDQGRÀX[RJUDPD"
Exemplo de fluxograma
9DPRVLOXVWUDURXVRSDUDTXHYRFrSRVVDHQWHQGHUPHOKRU6XSRQKD
&RPHoDPRVRÀX[RJUDPDXVDQGRRVtPERORGH
XPDOJRULWPRSDUDFDOFXODUDPpGLDGHXPDOXQRHDSUHVHQWDUHODSDUD
LQtFLR
RXVXiULR&RPRHOH¿FDULDUHSUHVHQWDGRXVDQGRÀX[RJUDPD"
Mais claro de ler, evita ambigüidades
Desvantagens
•
)LJXUD6LPERORJLDGR)OX[RJUDPD
Dá pouca atenção aos dados, não
descreve como representá-los
Pode se tornar complicado de ler e
entender
'HSRLVGHQWURGRVtPERORSDUDHQWUDGDGHGDGRV
FRORFDPRVDVGXDVQRWDVGRDOXQRTXHIRUDP
&RPHoDPRVRÀX[RJUDPDXVDQGRRVtPERORGH
FKDPDGDVGH1H1
LQtFLR
1RVtPERORGHSURFHVVDPHQWR¿FRXRFiOFXORGD
'HSRLVGHQWURGRVtPERORSDUDHQWUDGDGHGDGRV
PpGLDGRDOXQR'HVVDIRUPD0pGLDUHFHEHXVRGR
FRORFDPRVDVGXDVQRWDVGRDOXQRTXHIRUDP
VtPEROR SDUDLQGLFDUDDWULEXLomRGHXPYDORUR
FKDPDGDVGH1H1
YDORUGH1VRPDGRFRP1HGLYLGLGRSRU
1RVtPERORGHSURFHVVDPHQWR¿FRXRFiOFXORGD
'HSRLVTXHDPpGLDpFDOFXODGDXVDPRVRVtPEROR
PpGLDGRDOXQR'HVVDIRUPD0pGLDUHFHEHXVRGR
GHVDtG‡DGHGDGRVSDUDGL]HURTXHTXHUHPRVTXH
VtPEROR SDUDLQGLFDUDDWULEXLomRGHXPYDORUR
VHMDDSUHVHQWDGRDRXVXiULR
YDORUGH1VRPDGRFRP1HGLYLGLGRSRU
)LQDOPHQWHRVtPERORGH)LPpXVDGRSDUDLQGLFDU
'HSRLVTXHDPpGLDpFDOFXODGDXVDPRVRVtPEROR
TXHRÀX[RJUDPDDFDERX
GHVDtG‡DGHGDGRVSDUDGL]HURTXHTXHUHPRVTXH
VHMDDSUHVHQWDGRDRXVXiULR
)LJXUD)OX[RJUDPDSDUD&DOFXODUD0pGLDGHXPDOXQR
)LQDOPHQWHRVtPERORGH)LPpXVDGRSDUDLQGLFDU
TXHRÀX[RJUDPDDFDERX
( DJRUD VH IRVVH R PHVPR DOJRULWPR GHVFULWR QR 4XDGUR &DOFXODUD0pGLDGHXP$OXQRRQGHVHSUHFLVDFKHFDUVHRDOXQRIRL
)LJXUD)OX[RJUDPDSDUD&DOFXODUD0pGLDGHXPDOXQR
Nós diríamos: vários! E, geralmente, mal resolvemos um problema,
novos vão surgindo para serem resolvidos e, mal tendo tempo para
SHQVDUOiHVWDPRVQyVQRYDPHQWHSDUDUHVROYrORVeFRUUHWRD¿UPDU
que todo ser humano é um “resolvedor de problemas” nato, sendo
que cada um tem a sua própria lógica de resolução (vide Figura 01).
Problemas existem?
• Não utilize esse
algoritmo
Figura 1. Exemplo de um Algoritmo para Resolução de Problemas.
)LJXUDDRODGRGHFDGDVtPERORHVWiDVXDXWLOL]DomR$OpPGHVVHV
VtPERORV DV VHWDV TXH RV XQHP LQGLFDUmR D GLUHomR GR ÀX[R GH
H[HFXomRGRDOJRULWPR(GHQWURGHFDGDVtPERORGHYHVHUHVFULWRR
TXHRFRUUHUiQDTXHODIDVH
Fluxograma
Como ficaria o algoritmo das médias se
precisarmos checar se o aluno foi reprovado ou
não?
,QWURGXomRj3URJUDPDomR
)LJXUD6LPERORJLDGR)OX[RJUDPD
9DPRVLOXVWUDURXVRSDUDTXHYRFrSRVVDHQWHQGHUPHOKRU6XSRQKD
XPDOJRULWPRSDUDFDOFXODUDPpGLDGHXPDOXQRHDSUHVHQWDUHODSDUD
RXVXiULR&RPRHOH¿FDULDUHSUHVHQWDGRXVDQGRÀX[RJUDPD"
&RPHoDPRVRÀX[RJUDPDXVDQGRRVtPERORGH
LQtFLR
'HSRLVGHQWURGRVtPERORSDUDHQWUDGDGHGDGRV
FRORFDPRVDVGXDVQRWDVGRDOXQRTXHIRUDP
FKDPDGDVGH1H1
1RVtPERORGHSURFHVVDPHQWR¿FRXRFiOFXORGD
PpGLDGRDOXQR'HVVDIRUPD0pGLDUHFHEHXVRGR
VtPEROR SDUDLQGLFDUDDWULEXLomRGHXPYDORUR
YDORUGH1VRPDGRFRP1HGLYLGLGRSRU
'HSRLVTXHDPpGLDpFDOFXODGDXVDPRVRVtPEROR
GHVDtG‡DGHGDGRVSDUDGL]HURTXHTXHUHPRVTXH
VHMDDSUHVHQWDGRDRXVXiULR
)LQDOPHQWHRVtPERORGH)LPpXVDGRSDUDLQGLFDU
TXHRÀX[RJUDPDDFDERX
)LJXUD)OX[RJUDPDSDUD&DOFXODUD0pGLDGHXPDOXQR
Algoritmos simples
( DJRUD VH IRVVH R PHVPR DOJRULWPR GHVFULWR QR 4XDGUR &DOFXODUD0pGLDGHXP$OXQRRQGHVHSUHFLVDFKHFDUVHRDOXQRIRL
DSURYDGRRXQmR"&RPR¿FDULD"
)LJXUD)OX[RJUDPDPDLVFRPSOHWRSDUDFDOFXODUDPpGLDGHXPDOXQR
Verificação da situação do aluno
6H SUHVWDU DWHQomR WRGD D SULPHLUD SDUWH GR DOJRULWPR p LJXDO DR
ÀX[RJUDPDDQWHULRU3RUpPDSDUWLUGHVVHSRQWRSUHFLVDPRVXVDUR
VtPERORGHGHFLVmR2WH[WRTXHpFRORFDGRGHQWURGHVVHVtPERORpR
Representação de Algoritmos:
Linguagem Algorítmica ou
Pseudocódigo
• Consiste na definição
de uma
pseudolinguagem de
programação, cujos
comandos são em
português, mas já
lembram um pouco a
estrutura de uma
linguagem de
programação
estruturada
algoritmo “calcularMedia”
var N1, N2, Media : real
inicio
leia(N1, N2)
Media <- (N1 + N2)/2
se media>=6 entao
escreva(“aprovado”)
senao
escreva(“reprovado”)
fimse
fimalgoritmo
Representação de Algoritmos:
Linguagem Algorítmica ou
Pseudocódigo
• Vantagens
• Usa o português como base.
• Podemos definir com detalhes os dados e tipos utilizados, até
estruturas.
• É relativamente fácil passar para uma linguagem de computador
• Desvantagens
• Utiliza uma linguagem que não é real para o trabalho.
• Não é padronizada.
Lógica de Programação
• Lógica é a ciência que estuda as leis do raciocínio; é a correção/validação do
pensamento; é o encadeamento, ordenação de idéias; É a arte de bem pensar
• se o guarda-roupa está fechado e a camisa que quero está no guarda-roupa,
então, preciso primeiro abrir o guarda-roupa para poder pegar a camisa
• Lógica de Programação é o encadeamento lógico de instruções para o
desenvolvimento de programas.
• Programa é a implementação das instruções de um algoritmo em uma
linguagem de programação.
• Instrução representa um passo do algoritmo. Uma ação que não pode ser
subdividida.
• ex: Trocar uma lâmpada é uma instrução?
DOWRQtYHOYDOYDOYDOSRUpPHPOLQJXDJHPGHPiTXLQDHOD
GDULD RULJHP D EHP PDLV LQVWUXo}HV YLGH )LJXUD 3RU LVVR VHULD
QHFHVViULRXVDUXPWUDGXWRUSDUDFRQYHUWHUDOLQJXDJHPGHDOWRQtYHO
,QWURGXomRj3URJUDPDomR
Linguagem de
Programação
WUDEDOKDVRPHQWHFRPFyGLJRVQXPpULFRVEDVHDGRVQRVQ~PHURVH
HP OLQJXDJHP
GH PiTXLQD PDLV IiFLO Qp" 9DOH UHVVDOWDU TXH XP
VLVWHPDELQiULRTXHUHSUHVHQWDPLPSXOVRVHOpWULFRVDXVHQWH]HUR
H SUHVHQWH XP $VVLP TXDOTXHU OLQJXDJHP GH SURJUDPDomR GHYH
SURJUDPDHPOLQJXDJHPGHDOWRQtYHOTXHIRLWUDGX]LGRSDUDH[HFXWDU
HVWDUVLWXDGDHQWUHGRLVH[WUHPRVRGDOLQJXDJHPQDWXUDOGRKRPHP
HP GHWHUPLQDGR
FRPSXWDGRU SUHFLVD VHU WUDGX]LGR QRYDPHQWH H
PXLWRFODUDSRUpPOHQWDHDPEtJXDHRGDOLQJXDJHPGHPiTXLQD
PXLWRUiSLGDSRUpPFRPSOH[DSDUDVHUXWLOL]DGDSRU³JHQWHQRUPDO´
PXLWDV YH]HV
UHHVFULWR SDUD TXH SRVVD VHU H[HFXWDGR HP RXWUR
(VWHpRFRQFHLWRGHQtYHOGHOLQJXDJHPOLQJXDJHPGHDOWRQtYHOVmR
FRPSXWDGRUTXHQmRWHQKDRPHVPRFRQMXQWRGHLQVWUXo}HV
DTXHODVPDLVSUy[LPDVGDOLQJXDJHPKXPDQDGiSUDHQWHQGHURTXH
HVWiHVFULWROLQJXDJHPGHEDL[RQtYHOVmRDTXHODVPDLVVHPHOKDQWHV
( FRPR
p IHLWD HVVD WUDGXomR" $ WUDGXomR p IHLWD XVDQGR XP
jOLQJXDJHPGHPiTXLQD3DUDGHL[DUPDLVFODURYDPRVGHWDOKDUXP
WUDGXWRUSRXFRPDLVRTXHpHVVDWDOGHOLQJXDJHPGHPiTXLQD
VLPSOHV QmR" $JRUD H[SOLFDQGR PHOKRU WUDGXWRU QR
• Conjunto finito de palavras,
comandos e instruções escritos comFRQWH[WRGHOLQJXDJHQVGHSURJUDPDomRpXPSURJUDPDTXHUHFHEH
o
objetivo de orientar a realização de FRPR HQWUDGD XP SURJUDPD HP OLQJXDJHP GH DOWR QtYHO FKDPDGR
SURJUDPDIRQWHHSURGX]FRPRVDtGDDVLQVWUXo}HVGHVWHSURJUDPD
uma tarefa pelo computador
WUDGX]LGDV SDUD OLQJXDJHP GH PiTXLQD FKDPDGR SURJUDPD
• ex: C, Pascal, Java, C#, PHP eREMHWR ([LVWHP EDVLFDPHQWH WUrV WLSRV GH WUDGXWRUHV &RPSLODGRU
,QWHUSUHWDGRUH0RQWDGRU3RUpPQRFRQWH[WRGHVWDGLVFLSOLQDDSHQDV
Phyton
)LJXUD
YDPRVWUDEDOKDUFRPRVGRLVSULPHLURVWLSRVHSRULVVRDSHQDVHOHV
7RGDV DV LQVWUXo}HV TXH R FRPSXWDGRU SUHFLVD H[HFXWDU ¿FDP
• Linguagens:
• auto nível - Legíveis por
humanos
• baixo nível - Próximos à
linguagem de máquina
VHUmRH[SOLFDGRVDVHJXLU
FRGL¿FDGDV QD VXD PHPyULD PHPyULD 5$0 HP XPD OLQJXDJHP
SUySULDTXHpDOLQJXDJHPGHPiTXLQDD~QLFDTXHHOHHQWHQGH$
OLQJXDJHPGHPiTXLQDVyDSUHVHQWD=(526H8168PH[HPSORGH
LQVWUXomRVHULD2UHVXOWDGRGDH[HFXomRGHVVD
LQVWUXomRYDULDULDGHDFRUGRFRPRWLSRGHFRPSXWDGRUXWLOL]DGRXP
0DFLQWRVKIDUiXPDFRLVDXPFRPSXWDGRUGDOLQKD3&IDUiRXWUDHWF
3RLVFDGDFRPSXWDGRUWHPVHXFRQMXQWR~QLFRGHLQVWUXo}HVGH¿QLGR
SHORIDEULFDQWHGRFKLS&DGDLQVWUXomRLGHQWL¿FDXPDDOWHUDomRHRX
FRQVXOWDGRYDORUGHXPDSRVLomRGDPHPyULDGRFRPSXWDGRU
&RPR D OLQJXDJHP GH PiTXLQD p EHP FRPSOLFDGD H PXGD GH
FRPSXWDGRU SDUD FRPSXWDGRU FRQVWUXLU XP SURJUDPD GLUHWDPHQWH
QHVVD OLQJXDJHP SRGH VHU PXLWR GLItFLO WHGLRVR H GHPRUDGR 'HVVD
)LJXUD([HPSORGH7UDGXomR
IRUPDRVSURJUDPDVVmRHVFULWRVHPOLQJXDJHQVGHDOWRQtYHOFRPR
& RX -DYD SRU H[HPSOR H VmR FRQYHUWLGRV WUDGX]LGRV SDUD D
OLQJXDJHPGHPiTXLQDHVSHFt¿FDSDUDTXHSRVVDPVHUH[HFXWDGRV
&RPSLODGRU
WUDGX] GH XPD YH] Vy WRGR R SURJUDPD HVFULWR HP
SHOR FRPSXWDGRU 3RU H[HPSOR YDPRV VXSRU XPD VRPD GH GRLV
YDORUHV WHQGR TXH R YDO YDL UHFHEHU D VRPD GHOH PHVPR FRP R
SXGHVVH SHJDU HVVH SURJUDPD WUDGX]LGR H H[HFXWDU QR FDVR OHU
SRGHULDXVDUHQWmRXPWUDGXWRUGRWLSRFRPSLODGRURXXPWUDGXWRUGR
YLGH)LJXUD
WLSRLQWHUSUHWDGRU
Linguagem de
Programação - Tradutores
2 WUDGXWRU GR WLSR &RPSLODGRU LULD SHJDU WRGR R SURJUDPD HVFULWR
HP LQJOrV OLQJXDJHP GH DOWR QtYHO H LULD WUDGX]LU HOH SDUD XP RXWUR
SURJUDPD HP SRUWXJXrV OLQJXDJHP GH PiTXLQD SDUD TXH YRFr
SXGHVVH SHJDU HVVH SURJUDPD WUDGX]LGR H H[HFXWDU QR FDVR OHU
YLGH)LJXUD
)LJXUD)XQFLRQDPHQWRGR&RPSLODGRU
• Compilador: traduz de uma
vez só todo o programa escrito -iRWUDGXWRUGRWLSR,QWHUSUHWDGRULULDSHJDUXPDDXPDDVSDODYUDV
em linguagem de alto nível
GRSURJUDPDHVFULWRHPLQJOrVOLQJXDJHPGHDOWRQtYHOHLULDWUDGX]LU
FDGD SDODYUD LQVWUXomR SDUD R SRUWXJXrV OLQJXDJHP GH PiTXLQD
(código-fonte) para um programa
( FDGD SDODYUD WUDGX]LGD VHULD LPHGLDWDPHQWH OLGD H[HFXWDGD SHOR
equivalente escrito em linguagem
FRPSXWDGRU VHP JHUDU
QHQKXP RXWUR DUTXLYR FyGLJRREMHWR YLGH
)LJXUD)XQFLRQDPHQWRGR&RPSLODGRU
de máquina (código-objeto)
)LJXUD
• Interpretador: traduz (sem
gerar código-objeto) e em
seguida executa, uma a uma, as
instruções de um programa em
linguagem de alto nível (códigofonte)
-iRWUDGXWRUGRWLSR,QWHUSUHWDGRULULDSHJDUXPDDXPDDVSDODYUDV
GRSURJUDPDHVFULWRHPLQJOrVOLQJXDJHPGHDOWRQtYHOHLULDWUDGX]LU
FDGD SDODYUD LQVWUXomR SDUD R SRUWXJXrV OLQJXDJHP GH PiTXLQD
( FDGD SDODYUD WUDGX]LGD VHULD LPHGLDWDPHQWH OLGD H[HFXWDGD SHOR
FRPSXWDGRU VHP JHUDU QHQKXP RXWUR DUTXLYR FyGLJRREMHWR YLGH
)LJXUD
)LJXUD)XQFLRQDPHQWRGR,QWHUSUHWDGRU
$OJXPDV
LQIRUPDo}HV
DGLFLRQDLV
VREUH
FRPSLODGRUHV
H
LQWHUSUHWDGRUHVVmR
‡ 2FyGLJRREMHWRSURJUDPDWUDGX]LGRSDUDDOLQJXDJHPGH
PiTXLQDTXHpSURGX]LGRSRUXPFRPSLODGRUSRGHVHU
H[HFXWDGRYiULDVYH]HVVHPDQHFHVVLGDGHGHUHFRPSLODomR
)LJXUD)XQFLRQDPHQWRGR,QWHUSUHWDGRU
Linguagem de Programação Tradutores
Informações Adicionais
• O código objeto (programa traduzido para a linguagem de máquina) que
é produzido por um compilador pode ser executado várias vezes sem a
necessidade de re-compilação.
• Todo programa interpretado deve re-executar todo o processo de
interpretação independentemente de ter havido ou não modificações no seu
código fonte.
• Um programa que já tenha sido compilado uma vez tende a ser executado
mais rapidamente que um programa que precise ser interpretado (que
sempre terá que executar o processo de interpretação completo).
• Linguagens compiladas: C, Fortran, Pascal, Assembler, Java.
• Linguagens Interpretadas: PHP, Javascript, Python, Perl.
$SUHQGDSUDWLFDQGR
Exemplo da aula
3DUDTXHSRVVDPRVFRPHoDUDGHVHQYROYHUDOJRULWPRVQDSUy[LPD
XQLGDGH p LPSRUWDQWH TXH YRFr Mi FRQVLJD HVSHFL¿FDU DV IDVHV GH
Problema: Ler um valor de temperatura em Fahrenheit e
XP SUREOHPD H HQFDL[DU HVVDV IDVHV HP XPD UHSUHVHQWDomR GH
calcular
o seu valor correspondente em Celsius e, depois,
DOJRULWPRGDVTXHDJHQWHGHWDOKRXDWpDJRUDGHVFULomRQDUUDWLYDRX
apresentar
esse valor ao usuário. Um problema de física!
ÀX[RJUDPD'HVVDIRUPDYDPRVGDUXPH[HPSORSDUDTXHGHSRLV
YRFrSRVVDID]HURVH[HUFtFLRVRN"
Vamos
especificar as fases do problema e encaixar essas fases
9DPRVDQDOLVDURVHJXLQWHSUREOHPD/HUXPYDORUGHWHPSHUDWXUD
em
representação
deYDORU
algoritmo
das que
detalhamos
até
HPuma
)DKUHQKHLW
H FDOFXODU R VHX
FRUUHVSRQGHQWH
HP &HOVLXV
H
GHSRLVDSUHVHQWDUHVVHYDORUDRXVXiULR8PSUREOHPDGHItVLFD%HP
agora
(descrição narrativa ou fluxograma)
FRPRYRFrSRGHQmRHVWDUOHPEUDGRGDIyUPXODYRXOKHDGLDQWDU
Fórmula
7& 7)±
RQGH7& 7HPSHUDWXUDHPJUDXV&HOVLXVH
7) 7HPSHUDWXUDHPJUDXV)DKUHQKHLW
6DEHQGR GLVVR TXDLV VHULDP DV IDVHV GR SUREOHPD HQWUDGD
SURFHVVDPHQWR H VDtGD H FRPR ¿FDULD D UHSUHVHQWDomR GHVVH
XQLGDGH p LPSRUWDQWH TXH YRFr Mi FRQVLJD HVSHFL¿FDU DV IDVHV GH
XP SUREOHPD H HQFDL[DU HVVDV IDVHV HP XPD UHSUHVHQWDomR GH
DOJRULWPRGDVTXHDJHQWHGHWDOKRXDWpDJRUDGHVFULomRQDUUDWLYDRX
ÀX[RJUDPD'HVVDIRUPDYDPRVGDUXPH[HPSORSDUDTXHGHSRLV
YRFrSRVVDID]HURVH[HUFtFLRVRN"
Exemplo da aula
9DPRVDQDOLVDURVHJXLQWHSUREOHPD/HUXPYDORUGHWHPSHUDWXUD
HP )DKUHQKHLW H FDOFXODU R VHX YDORU FRUUHVSRQGHQWH HP &HOVLXV H
Quais
seriam as fases do problema (entrada, processamento
GHSRLVDSUHVHQWDUHVVHYDORUDRXVXiULR8PSUREOHPDGHItVLFD%HP
FRPRYRFrSRGHQmRHVWDUOHPEUDGRGDIyUPXODYRXOKHDGLDQWDU
e saída)
e como ficaria a representação desse algoritmo em
descrição narrativa e usando fluxograma?
7& 7)±
RQGH7& 7HPSHUDWXUDHPJUDXV&HOVLXVH
7) 7HPSHUDWXUDHPJUDXV)DKUHQKHLW
Entrada:
6DEHQGR GLVVR TXDLV VHULDP DV IDVHV GR SUREOHPD HQWUDGD
SURFHVVDPHQWR H VDtGD H FRPR ¿FDULD D UHSUHVHQWDomR GHVVH
Processamento:
DOJRULWPRHPGHVFULomRQDUUDWLYDHXVDQGRÀX[RJUDPD"
6H OHUPRV R SUREOHPD YDPRV YHU TXH D SULPHLUD FRLVD TXH
Saída:
SUHFLVDPRV p OHU XP YDORU GH WHPSHUDWXUD HP )DKUHQKHLW (QWmR
(175$'$ 9DORUHP)DKUHQKHLW'HSRLVSUHFLVDPRVXVDUDIyUPXOD
j3URJUDPDomR
Exemplo da aula
)LJXUD
Exercícios
1. Escolha dois exemplos do seu cotidiano que poderiam ser descritos fazendo uso de algoritmos e represente
esses exemplos através de descrição narrativa e de fluxograma.
2. Identifique as fases de cada um dos problemas abaixo e depois, represente cada um dos problemas usando
um fluxograma:
•
Calcular e exibir a média ponderada de duas notas dadas, de tal forma que a nota1 tenha peso 6 e a
nota2 tenha peso 4.
•
Reajustar um salário inicial em 15 %1
•
Calcular o desconto de 23% sobre o preço de um produto
•
Checar se um determinado número fornecido pelo usuário é positivo (maior do que zero) ou negativo
(menor do que zero). Imprima como resultado, as palavras “positivo” ou “negativo”, conforme o caso.
3. Com suas palavras, quais seriam as diferenças entre um compilador e um interpretador?
4. Qual a diferença entre algoritmo e programa?
Download