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 VHTrQFLD 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 GHVDtGDGHGDGRVSDUDGL]HURTXHTXHUHPRVTXH VtPEROR SDUDLQGLFDUDDWULEXLomRGHXPYDORUR VHMDDSUHVHQWDGRDRXVXiULR YDORUGH1VRPDGRFRP1HGLYLGLGRSRU )LQDOPHQWHRVtPERORGH)LPpXVDGRSDUDLQGLFDU 'HSRLVTXHDPpGLDpFDOFXODGDXVDPRVRVtPEROR TXHRÀX[RJUDPDDFDERX GHVDtGDGHGDGRVSDUDGL]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 GHVDtGDGHGDGRVSDUDGL]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?