Escola de Ciências e Tecnologia UFRN Introdução a Algoritmos Prof. Aquiles Burlamaqui Nélio Cacho Luiz Eduardo Eduardo Aranha ECT1103 – INFORMÁTICA FUNDAMENTAL • Manter o telefone celular sempre desligado/silencioso quando estiver em sala de aula; • Nunca atender o celular na sala de aula; Objetivo da Aula • Introduzir o conceito de algoritmos Por que estudar Construção de Algoritmos? • Problema: construir uma trave de madeira ! Diante de um Problema a solução é ... • • Análise – etapa onde o problema a ser resolvido é estudado em detalhes para definição dos materiais e passos necessários para a sua resolução. Algoritmo – utilização de ferramentas para descrever o problema com suas soluções. – Ferramentas – descrição narrativa, fluxograma ou português estruturado Por que estudar Construção de Algoritmos? • Análise: o que eu preciso para resolver tal problema ? – Material: madeira e ferramentas Por que estudar Construção de Algoritmos? • Análise: – Usar pregos ou parafusos ? – Esta decisão implica em usar martelo ou chave de fenda: Definir Passos 1 - Serrar a madeira para ficar no tamanho desejado 2 – Pregar as pontas formando a trave Algoritmos - Definição – Uma sequência de passos que visa atingir um objetivo bem definido. – Tem como objetivo representar o raciocínio (ordem dos passos) envolvido na realização de uma tarefa. – Exemplo (Ligar o Carro): • • • • Ligar o carro Pisar na embreagem Passar a primeira marcha Soltar a embreagem lentamente,enquanto pisa no acelerador. Algoritmos - Características • Finitude: algoritmos devem terminar após um número finito de passos; • Definição: cada passo deve ser precisamente definido • Entradas: devem ter zero ou mais entradas • Saídas: devem ter uma ou mais saídas; • Efetividade: todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado. Exemplo de Problema • Defina um programa que receba dois números pelo teclado, calcula a média aritmética destes dois números e imprime o resultado no monitor; • Quais ferramentas posso utilizar para definir meu algoritmo ? Read, Add, Sto, Div, Write, Cmp, Jump, Mul, Sub Exemplo de Problema • Defina um programa que receba dois números pelo teclado, calcula a média aritmética destes dois números e imprime o resultado no monitor; • Análise: – 1 : Recebe dois números pelo teclado, então devo usar Read – 2: calcula a média aritmética que é (A+B)/2. Neste caso tenho que usar a operação ADD e DIV, além de carregar o 2 para fazer a divisão. – 3: Imprimi o resultado no monitor. Neste caso, tenho que usar o Write Exemplo de Problema • Defina um programa que receba dois números pelo teclado, calcula a média aritmética destes dois números e imprime o resultado no monitor; Endereço Valor 1 Read (FA) (7) 2 Read (FA) (8) 3 ADD (7)(8) 4 STO (2)(7) 5 DIV (8)(7) 6 WRITE(7)(FB) 7 8 Read, Add, Sto, Div, Write Qual é o problema de descrever algoritmos em termos de linguagem de máquina ? Endereço (Hex) Valor 1 Read (FA) (14) 2 Read (FA) (15) 3 Read (FA) (16) 4 STO (4)(17) 5 MUL(17)(14) 6 STO(5)(17) Apesar de preciso, o algoritmo torna-se muito longo 7 MUL(17)(15) 8 STO(6)(17) 9 MUL(17)(16) A ADD (14) (15) B ADD (15) (16) C STO (F)(17) D DIV (16)(17) E STO (46)(16) F SUB(17)(16) 10 CMP(16)(13) 11 WRITE(FB)(“REPROVADO”) 12 JUMP (14) 13 WRITE(FB)(“APROVADO”) Formas de representação de algoritmos • • • • Descrição Narrativa Fluxograma Pseudocódigo Linguagens de Programação Formas de representação de algoritmos • Descrição Narrativa – Uso da linguagem natural; – Temos a inconveniência da má interpretação, originando ambigüidades e imprecisões. – Vejamos mais um exemplo: a troca de um pneu furado. – Analisar as ambigüidades e imprecisões. Descrição Narrativa • Algoritmo – – – – – – afrouxar ligeiramente as porcas; suspender o carro; retirar as porcas e o pneu; colocar o pneu reserva e as porcas; abaixar o carro; dar o aperto final nas porcas. Conceitos Fundamentais • Algoritmo – De modo a torná-lo não ambíguo uma formalização é necessária. – Definição de regras de semântica e sintaxe. Fluxograma • Uso de formas geométricas distintas produzindo ações distintas Início ou fim do fluxograma. Entrada de dados. Cálculo de expressões. Saída de resultados. Tomada de decisão Fluxo. Fluxograma Pseudocódigo • Uso de linguagem própria, aproximando-se mais das linguagens de alto nível, chamado, também de pseudolinguagem ou ainda portugol. • Forma geral: Algoritmo < nome_do_algoritmo > < declaração_de_variáveis > Início < Instruções > Fim Pseudocódigo • Algoritmo Média_do_aluno Real: m1,m2,m3,media Início Leia(m1,m2,m3) media ((m1*4)+(m2*5)+(m3*6))/15 Se (média >= 70) então Escreva (“APROVADO”) Senão Escreva (“REPROVADO”) Fim_se Fim Endereço Valor 1 Read (FA) (14) 2 Read (FA) (15) 3 Read (FA) (16) 4 STO (4)(17) 5 MUL(17)(14) 6 STO(5)(17) 7 MUL(17)(15) 8 STO(6)(17) 9 MUL(17)(16) A ADD (14) (15) B ADD (15) (16) C STO (F)(17) D DIV (16)(17) E STO (46)(16) F SUB(17)(16) 10 CMP(16)(13) 11 WRITE(FB)(“REPROVADO”) 12 JUMP (14) 13 WRITE(FB)(“APROVADO”) Linguagens de Programação • Linguagens de Programação – Uma linguagem de programação é um método padronizado para expressar instruções para um computador. – É um conjunto de regras sintáticas e semânticas usadas para definir um programa de computador. Linguagens de Programação • Linguagens de baixo nível – Linguagens de máquina, assembly • Linguagens de alto nível – Fortran, Cobol, C, C++, Java, Python, Lua, Basic, Pascal, Sage... Conceitos Básicos • Baixo nível – Código otimizado,Indicado para situações onde não há opção de alto nível • Alto nível – Programação do algoritmo mais fácil – Portabilidade – Manutenção do código Processadores de Linguagens • Compilação • Interpretação Compilação Professor: Aquiles Burlamaqui Site • http://www.ect.ufrn.br/modulo/ect1103/