Your SlideShare is downloading. ×
Algoritmos e lp parte 1-introdução
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Algoritmos e lp parte 1-introdução

5,897

Published on

Parte 1 - Introdução: conceitos, linguagens de programação

Parte 1 - Introdução: conceitos, linguagens de programação

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,897
On Slideshare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
398
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Algoritmos e Linguagem de Programação Professor: Mauro Jansen Parte 1 - Introdução 09/2012
  • 2. Algoritmos e Ling.de ProgramaçãoProf. Mauro Introdução 2
  • 3. Lógica A Lógica estuda os processos válidos e gerais pelos quais atingimos a verdade [...] É a ciência das leis do pensamento. Palavra criada pelo filósofo grego Aristóteles (séc. IV a.C.) para estudar o pensamento humano e distinguir interferências e argumentos certos e errados É a ciência dos argumentos, ou seja, ela trata das conclusões a que chegamos a partir das evidências que as sustentam Algoritmos e Ling.de Programação Prof. Mauro Introdução 3
  • 4. Lógica: sistema lógico Sistema lógico é um conjunto de axiomas e regras de inferência que visam formalizar o raciocínio válido, dedutivo ou indutivo Axioma: hipótese, sentença ou proposição não provada mas considerada como óbvia ou de consenso inicial para formulação de uma teoria Inferência: é o processo pelo qual se chega a uma proposição, com base em axiomas Algoritmos e Ling.de Programação Prof. Mauro Introdução 4
  • 5. Lógica: Dedução Dedução caracteriza-se por apresentar conclusões que devem ser verdadeiras caso todas as premissas sejam verdadeiras. Exemplo Todo ser humano é mortal. Premissas Pedro é um ser humano. Portanto, Pedro é mortal. Conclusão O pensamento dedutivo parte do geral para o particular. Algoritmos e Ling.de Programação Prof. Mauro Introdução 5
  • 6. Lógica: Indução Indução: o pensamento indutivo consiste em partir de premissas particulares, na busca de uma lei geral. Exemplo O ferro conduz eletricidade. O pensamento indutivo O ferro é um metal. parte do particular para o geral. O ouro conduz eletricidade. O ouro é um metal. O cobre conduz eletricidade. O cobre é um metal. Logo: os metais conduzem eletricidade. Algoritmos e Ling.de Programação Prof. Mauro Introdução 6
  • 7. Algoritmos e Ling.de ProgramaçãoProf. Mauro Introdução 7
  • 8. Algoritmo Sequência ordenada de passos (instruções) necessários para a resolução de um problema ou processo. Procedimento passo a passo para resolução de um problema Exemplos de possíveis problemas do mundo real solucionáveis com algoritmos: Resolver uma operação matemática seguindo passos até chegar ao resultado final Assar uma pipoca no forno microondas Tomar medicamentos seguindo orientações médicas Cozinhar seguindo receitas culinárias Algoritmos e Ling.de Programação Prof. Mauro Introdução 8
  • 9. Algoritmo (exemplo) Receita de pipoca de microondas caseira 1. Em um prato refratário com tampa, coloque um ou mais “punhados” (mão cheia) de milho de pipoca comum 2. Acrescente 1 colher de sopa de água para cada “punhado” de milho colocado anteriormente 3. Coloque o prato refratário no microondas, com a tampa, por mais ou menos 5 minutos 4. Aguarde esfriar 5. Retire o prato do microondas Adaptado de http://tudogostoso.uol.com.br Algoritmos e Ling.de Programação Prof. Mauro Introdução 9
  • 10. Dados e Informações Dados: são os fatos em sua ordem primária. Matéria prima (bruta) Ex: preço de venda, nota, horas trabalhadas Informação: parte utilizável dos dados, que pode ser armazenada, transmitida ou permitir a dedução de novas informações. Produto final (acabado, lapidado) Ex: orçamento, resultado acadêmico, folha de pagamentoINFORMAÇÃO DADO CONHECIMENTO Algoritmos e Ling.de Programação Prof. Mauro Introdução 10
  • 11. Processamento de dados Qualquer trabalho de manipulação de dados que tenha como finalidade obter resultados previamente estabelecidos de modo a resolver determinado problema Tem 3 partes principais: ENTRADA, PROCESSAMENTO e SAÍDA Envolve TRANSMISSÃO, ARMAZENAMENTO, RECUPERAÇÃO, COMPARAÇÃO, COMBINAÇÃO de informaçõesENTRADA PROCESSAMENTO SAÍDA Algoritmos e Ling.de Programação Prof. Mauro Introdução 11
  • 12. Dados de entrada e saída Ao tentar resolver um problema, devemos identificar alguns dados que auxiliarão na sua resolução. Dados de Entrada: dão suporte à solução do problema. Ponto de partida. Dados de Saída: resultados esperados após solução. Através de um algoritmo os dados de entrada podem ser processados e teremos a solução do problema, que gerará uma saída de dados Algoritmos e Ling.de Programação Prof. Mauro Introdução 12
  • 13. Instrução e lógica de programação Instrução: Informação que indica ao computador uma ação elementar a executar Lógica de programação diz respeito à dedução de uma sequência de instruções tal que, fornecidos os dados de entrada, alcançaremos como saída a solução do problema inicialmente concebido, por meio da execução das instruções Algoritmos e Ling.de Programação Prof. Mauro Introdução 13
  • 14. (Um pouco mais sobre algoritmos:Conceitos, características, importância e passos para criação) Algoritmos e Ling.de Programação Prof. Mauro Introdução 14
  • 15. Conceitos “Algoritmo é uma seqüência de passos que visa atingir um objetivo bem definido” (FORBELLONE, 1999)“Algoritmo é uma seqüência de passos que deve ser seguida para a realização de uma tarefa” (ASCENCIO, 1999) “Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas” (MANZANO, 1997) Algoritmos e Ling.de Programação Prof. Mauro Introdução 15
  • 16. Conceitos “Um algoritmo é uma lista de instruções que, quando executadas, transformam dados de entrada até a saída. As instruções são um conjunto finito de etapas que podem ser executadas, numa ordem precisa, por um mecanismo determinista. Quando estas etapas são efetivamente executadas , a execução deve terminar após um tempo finito.” (HOLLOWAY, 2006) Algoritmos e Ling.de Programação Prof. Mauro Introdução 16
  • 17. Características de um algoritmo Ter fim; Não dar margem a dupla interpretação; Capacidade de receber dados do mundo exterior; Poder gerar informações de saída para o mundo externo ao ambiente do algoritmo; Ser efetivo; Algoritmos e Ling.de Programação Prof. Mauro Introdução 17
  • 18. Importância dos algoritmos “A noção de algoritmo é básica para toda a programação de computadores”. [KNUTH - Professor da Universidade de Stanford, autor da coleção “The art of computer programming” “O conceito central da programação e da ciência da computação é o conceito de algoritmo”. [WIRTH - Professor da Universidade de Zurique, autor de diversos livros na área e responsável pela criação de linguagens de programação como ALGOL, PASCAL e MODULA-2] Algoritmos e Ling.de Programação Prof. Mauro Introdução 18
  • 19. Passos para escrever um algoritmo Segundo ASCENCIO e CAMPOS (2002), os passos para a construção de algoritmos são os seguintes: Ler atentamente o enunciado, destacando os pontos mais importantes; Definir os dados de entrada; Definir o processamento; Definir os dados de saída; Construir o algoritmo uma das técnicas descritas a seguir; Testar o algoritmo realizando simulações. Algoritmos e Ling.de Programação Prof. Mauro Introdução 19
  • 20. Algoritmos e Ling.de ProgramaçãoProf. Mauro Introdução 20
  • 21. Responda: Quais são os raciocínios lógicos básicos e qual a dinâmica dos mesmos? Qual a importância da lógica para a criação de algoritmos e programação? O que é um algoritmo? Dê exemplos. O que são dados e informações? Qual o princípio básico do processamento de dados? O que é uma instrução? Dê exemplos. Quais são as características de um algoritmo? Qual a importância dos algoritmos? Cite os passos básicos para criar algoritmos. Algoritmos e Ling.de Programação Prof. Mauro Introdução 21
  • 22. Resolva: Um homem está à margem de um rio com uma raposa, uma dúzia de galinhas e um saco de milho. Ele pretende atravessar o rio com a sua carga numa canoa que só comporta ele e uma das suas cargas. Ele não pode deixar a raposa com as galinhas, nem as galinhas com o milho. Qual a sequência da passos (algoritmo) para atravessar o rio e chegar à outra margem com a raposa, as galinhas e o milho? Algoritmos e Ling.de Programação Prof. Mauro Introdução 22
  • 23. Algoritmo da travessia do rio Solução sem detalhes: Leva a galinha Volta Leva a raposa Volta com a galinha Deixa a galinha e Leva o milho Volta Leva o milho Volta Leva a galinha Algoritmos e Ling.de Programação Prof. Mauro Introdução 23
  • 24. Algoritmo da travessia do rio Solução com detalhes: INICIO Pega a galinha e entra na canoa Atravessa o rio até o lado destino, levando a galinha Deixa a galinha no lado destino Atravessa o rio de volta ao lado origem Desce da canoa, pega a raposa que está no lado origem e entra na canoa Atravessa o rio até o lado destino, levando a raposa Desce da canoa, deixa a raposa e pega a galinha Entra na canoa e atravessa o rio de volta ao lado origem, trazendo a galinha Desce da canoa, deixa a galinha e pega o milho Entra na canoa e atravessa o rio até o lado destino, levando o milho Deixa o milho e atravessa o ria de volta ao lado origem Desce da canoa, pega a galinha que está no lado origem e entra na canoa Atravessa o rio até o lado destino, levando a galinha FIM Algoritmos e Ling.de Programação Prof. Mauro Introdução 24
  • 25. Escreva os algoritmos: Escreva a sequência de passos (algoritmo) necessários para: Calcular a área de um retângulo Escovar os dentes Fritar um ovo Algoritmos e Ling.de Programação Prof. Mauro Introdução 25
  • 26. (Aonde queremos chegar com os algoritmos) Algoritmos e Ling.de ProgramaçãoProf. Mauro Introdução 26
  • 27. Linguagem de máquina O computador, nativamente, só entende uma linguagem: a linguagem (ou código) de máquina, que é uma linguagem que: Tem grau de dificuldade acentuado Requer do programador um conhecimento da arquitetura interna do hardware Exemplo de programa em código de máquina:C000 10111111C001 00000000C002 01110100 C000:C100 BF 00 74 68 51 66 56 57-1E 06 53 66 50 E8 BC 00C003 01101000 C000:C110 8B D9 D1 E1 16 5E 8E DE-8E C6 83 C5 02 8B C5 83... C000:C120 ED 16 8B F5 8B FD 2B F9-8B E8 B9 0C 00 FC F3 A5 Algoritmos e Ling.de Programação Prof. Mauro Introdução 27
  • 28. Linguagens de programação (LP’s) As linguagens de programação existem para tornar a programação mais próxima da nossa linguagem natural Maior facilidade Maior produtividade Código de máquina X linguagem de alto nível: Algoritmos e Ling.de Programação Prof. Mauro Introdução 28
  • 29. Linguagens de programação (LP’s) Exemplo de programa em uma linguagem de programação (Pascal): (* Programa CONTADOR – conta de 1 a 10 *) Var c: integer; Begin for c:=1 to 10 do writeln(c); writeln(‘Fim!’); End. Algoritmos e Ling.de Programação Prof. Mauro Introdução 29
  • 30. Linguagens de programação (LP’s) São programas (softwares) usados para criar outros programas. Transformam um conjunto de instruções de uma linguagem acessível em instruções da linguagem do computador (linguagem de máquina) Exemplos: •Pascal •C •Delphi •C++ •Visual Basic •C# •Java •PHP •PHP •Javascript Algoritmos e Ling.de Programação Prof. Mauro Introdução 30
  • 31. Características das LP’s Rigidez sintática: Idioma limitado e construções bem definidas A ordem dos termos ou uma vírgula a mais ou a menos faz diferença (a sintaxe deve ser seguida à risca) Rigidez semântica: não pode haver ambiguidades. O computador não tem idéia do que executa e nem inteligência para analisar a ordem Você deve ser bem claro em relação ao que quer que o computador execute Algoritmos e Ling.de Programação Prof. Mauro Introdução 31
  • 32. Características das LP’s Rigidez semântica - exemplo ilustrativo na língua portuguesa: A frase “A velhinha ouviu o barulho da janela.” pode ser interpretada de três maneiras: A velhinha ouviu o barulho produzido pela janela A velhinha estava junto à janela e ouviu o barulho A velhinha ouviu o barulho que veio através da janela Nesse caso, há pouca rigidez semântica Algoritmos e Ling.de Programação Prof. Mauro Introdução 32
  • 33. Tipos de linguagens de programação Quanto ao nível de abstração (facilidade de aprendizado) Alto nível Médio nível Baixo nível Quanto à forma de execução Compiladas Interpretadas Algoritmos e Ling.de Programação Prof. Mauro Introdução 33
  • 34. Nível de abstração das LPs Abstração: habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais Contexto em questão: máquina Está diretamente relacionada à facilidade de aprendizado e uso de uma linguagem de programação Algoritmos e Ling.de Programação Prof. Mauro Introdução 34
  • 35. Nível de abstração das LPs Alto nível: separa os detalhes da máquina. É mais próxima da linguagem humana Médio nível: separa os detalhes da máquina, mas permite o acesso aos mesmos Baixo nível: diretamente relacionadas com a arquitetura do hardware Algoritmos e Ling.de Programação Prof. Mauro Introdução 35
  • 36. Nível de abstração das LPs Homem / linguagem humana Linguagens de alto nível: ASP, C/C++, C#, Pascal/Object Pascal, Java, PHP, Python, Tcl, Basic/Visual Basic, Delphi Linguagens de médio nível: C, C++ Linguagens de baixo nível: Assembly e Linguagem de máquina MÁQUINA Algoritmos e Ling.de Programação Prof. Mauro Introdução 36
  • 37. Linguagem compilada – visão geral Linguagem compilada Converte o programa na linguagem de alto nível (programa fonte) para a linguagem de máquina (programa executável ou arquivo do tipo APLICATIVO) Funcionamento:Programa Código Programa Compilador Linkeditor fonte objeto executável bibliotecas Algoritmos e Ling.de Programação Prof. Mauro Introdução 37
  • 38. Linguagem compilada - elementos Programa fonte: (ou código fonte) instruções e símbolos de uma linguagem de programação escritos de forma lógica e ordenada, com o objetivo de comandar um computador na execução de uma função Normalmente são arquivos com extensão definida pela LP: .C , .PAS , .JAVA , .PHP , etc Compilador: (ou tradutor) programa que traduz um programa fonte em uma linguagem para um código objeto ou linguagem de mais baixo nível Código objeto: (ou código intermediário). Código resultante da compilação. Ainda não é executável diretamente pelo computador. Algoritmos e Ling.de Programação Prof. Mauro Introdução 38
  • 39. Linguagem compilada - elementos Linkeditor: (ou ligador) programa que liga os objetos gerados pelo compilador, criando o arquivo executável Bibliotecas: conjuntos de sub-programas, ou objetos previamente existentes que serão (re)utilizados na criação do programa executável Programa executável: arquivo final, que pode ser executado pelo computador através do sistema operacional Normalmente são arquivos com a extensão .EXE ou .COM Algoritmos e Ling.de Programação Prof. Mauro Introdução 39
  • 40. Linguagem compilada - exemplos Delphi Pascal/Object Pascal C Visual Basic Assembler, etc. Algoritmos e Ling.de Programação Prof. Mauro Introdução 40
  • 41. Linguagem interpretada – visão geral Linguagem interpretada Executa os comandos sem converter para a linguagem de máquina (não gera programa executável) Programa Interpretador Funcionamento: fonte (executa) Ou: InterpretadorPrograma Código ou Compilador Máquina virtual fonte objeto (executa) Algoritmos e Ling.de Programação Prof. Mauro Introdução 41
  • 42. Linguagem interpretada – exemplos: Java HTML ASP PHP Javascript Algoritmos e Ling.de Programação Prof. Mauro Introdução 42
  • 43. Ambientes de desenvolvimento São ambientes de desenvolvimento que integram diversas ferramentas para a criação de programas em uma linguagem de programação Também chamados de IDE´s (Integrated Development Environment) Exemplo de ferramentas encontradas nos IDE´s: Editor de textos adequado para a programação Ajuda (Help) on-line Compilador, linkeditor e depurador integrados Ferramentas para desenho de janelas (formulários) Algoritmos e Ling.de Programação Prof. Mauro Introdução 43
  • 44. Desenvolvimento de software Segue um ciclo de vida Análise: definição do QUÊ o programa deverá fazer Projeto: definição de COMO o programa executará seu objetivo Implementação: codificação (criação de um ou mais programas em uma linguagem) Testes: testes isolados e de integração Algoritmos e Ling.de Programação Prof. Mauro Introdução 44
  • 45. Programação de computadores O que preciso saber para programar? Noções de algoritmos e lógica de programação Conhecer a estrutura, comandos e símbolos da linguagem de programação escolhida Para linguagens de baixo nível, conhecer a arquitetura do hardware Prática... Muita prática Algoritmos e Ling.de Programação Prof. Mauro Introdução 45
  • 46. Atividade: Questionário 2 Qual a linguagem nativa do computador e qual as características da mesma? O que são linguagens de programação? Cite exemplos. Quais as características das linguagens de programação? Como classificam-se as linguagens de programação quanto ao: (dê exemplos de cada grupo) Grau de dificuldade Modo de execução Explique o funcionamento dos diferentes tipos de LPs Algoritmos e Ling.de Programação Prof. Mauro Introdução 46
  • 47. (Estruturas básicas para criação e representação de algoritmos) Algoritmos e Ling.de Programação Prof. Mauro Introdução 47
  • 48. Estruturação de algoritmos São formas possíveis de resolução e representação de algoritmos Resolução Sequencial Condicional Repetição Representação Linguagem natural / descrição narrativa Fluxograma Diagrama de Chapin Pseudocódigo Algoritmos e Ling.de Programação Prof. Mauro Introdução 48
  • 49. Estruturas de resolução Ao buscar uma solução de um problema criando um algoritmo, sempre teremos pelo menos uma das seguintes estruturas: Resolução Sequencial: sequência linear de instruções, uma após a outra Resolução Condicional: existência de “condições” para executar algumas instruções. Resolução com Repetição: algumas instruções precisam ser executadas várias vezes. Algoritmos e Ling.de Programação Prof. Mauro Introdução 49
  • 50. Estruturas de representação Linguagem natural / descrição narrativa Fluxograma Diagrama de Chapin Pseudocódigo Algoritmos e Ling.de Programação Prof. Mauro Introdução 50
  • 51. Linguagem natural Apesar de ser possível escrever algoritmos para pessoas usando a linguagem natural, ela não é adequada para a construção de algoritmos para o computador Não tem características das LP´s: Não têm rigidez sintática: Traga caneta azul ou preta. Traga caneta (Azul ou preta) Não tem rigidez semântica: A velhinha ouviu o barulho da janela Algoritmos e Ling.de Programação Prof. Mauro Introdução 51
  • 52. Linguagem natural x LP´s Ao decidir entra a linguagem natural ou as LP´s, temos um impasse, pois: A linguagem natural não é adequada por não ter rigidez sintática e semântica Torna-se impossível para o computador processar A linguagem de programação não é adequada por ter rigidez sintática e semântica Torna-se difícil para o programador iniciante Então, precisamos de outras alternativas... Algoritmos e Ling.de Programação Prof. Mauro Introdução 52
  • 53. Fluxograma São representações gráficas de algoritmos: Formas geométricas para representar o início, término e as instruções a serem executadas Setas para indicar o fluxo das ações Alguns símbolos representam situações especiais dos algoritmos: Tomadas de decisão e desvios Repetição Algoritmos e Ling.de Programação Prof. Mauro Introdução 53
  • 54. Fluxograma: símbolos básicos Início e término do algoritmo Setas indicam o fluxo da execução Instrução (entrada, saída, armazenamento ou processamento de dados) Tomada de decisão com possível desvio do fluxo Algoritmos e Ling.de Programação Prof. Mauro Introdução 54
  • 55. Fluxograma: exemploAlgoritmo em forma de Iníciofluxograma, parasolicitar dois números e Leia num1, num2mostrar qual o maior: sim não Num1>num2? Maior num1 Maior num2 Escreva Maior Fim Algoritmos e Ling.de Programação Prof. Mauro Introdução 55
  • 56. Fluxograma Vantagens: Facilidade proporcionada para compreensão do funcionamento Facilmente entendível por pessoas visuais Desvantagens: Não é uma representação prática: a correção implica em alterar vários desenhos Inadequado para algoritmos complexos e longos Inadequado para uso como ferramenta principal Recomendável apenas para representar a idéia geral de um algoritmo ou como “ensaio” para criação da solução Algoritmos e Ling.de Programação Prof. Mauro Introdução 56
  • 57. Diagrama de Chapin Criado por Ned Chapin a partir de trabalhos de Nassi-Shneidermann Apresenta uma visão hierárquica e estruturada da lógica do programa Algoritmos e Ling.de Programação Prof. Mauro Introdução 57
  • 58. Diagrama de Chapin: exemploAlgoritmo referente ao problema do maior número,representado em diagrama de Chapin: Leia num1, num2 num1>num2 sim não maior num1 maior num2 Escreva “O maior é: ”,maior Fim Algoritmos e Ling.de Programação Prof. Mauro Introdução 58
  • 59. Pseudocódigo Forma para a representação de algoritmos rica em detalhes, como a definição dos tipos das variáveis usadas no algoritmo. Assemelha-se à forma como os programas são escritos. Para traduzir o pseudocódigo para uma linguagem de programação, basta conhecer o vocabulário e regras sintáticas da linguagem. Busca a rigidez sintática e semântica, porém sem o detalhamento exigido nas linguagens de programação Algoritmos e Ling.de Programação Prof. Mauro Introdução 59
  • 60. Pseudocódigo – estrutura básica Estudaremos o pseudocódigo com mais detalhes posteriormente. Por enquanto, conheceremos apenas a estrutura básica de um pseudocódigo: Algoritmo <nome do Algoritmo> Variáveis <lista de variáveis> Início <bloco de comandos> Fim Algoritmos e Ling.de Programação Prof. Mauro Introdução 60
  • 61. Pseudocódigo - exemplo Pseudocódigo referente ao problema do maior número: Algoritmo Maior Var num1, num2, maior: inteiro: Inicio Leia(num1,num2); se (num1>num2) então maior num1; senão maior num2; fimse; escreva(maior); Fim Algoritmos e Ling.de Programação Prof. Mauro Introdução 61
  • 62. Atividade – questionário: Quais as estruturas básicas de resolução de problemas com algoritmos? Quais as formas de representação de algoritmos? Qual a característica, vantagens e desvantagens de cada uma delas? Qual a mais adequada para representação de algoritmos? Construa um fluxograma para somar dois números e mostrar o resultado Algoritmos e Ling.de Programação Prof. Mauro Introdução 62

×