A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL.

Apresentações semelhantes


Apresentação em tema: "Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL."— Transcrição da apresentação:

1 Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL

2 Apresentação Definição Variáveis Estrutura sequencial Estrutura condicional Estrutura de repetição Procedimentos e funções Vetor e Matriz Sandro Carvalho Izidoro

3 Definição Para resolver um problema através de um computador é necessário encontrar uma maneira de descrevê-lo de uma forma clara e precisa. Assim se faz necessário estabelecer uma sequência de passos que conduzam à sua resolução. Esta sequência de passos é designada por algoritmo. O conceito central de programação e da ciência da computação é o de algoritmo. Programar é basicamente construir algoritmos. Algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações. Sandro Carvalho Izidoro

4 Definição Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples sem necessidade de conhecer a sintaxe de nenhuma linguagem de programação. Os programas de computadores nada mais são do que algoritmos escritos em uma linguagem de programação (Perl, Pascal, C/C++, Fortran, Java, etc.) e que são interpretados e executados por um computador. Sandro Carvalho Izidoro

5 Definição Exemplo A seguir um exemplo de um algoritmo para somar 2 números. O que esse algoritmo faz é: Obter o primeiro número; Obter o segundo número; Somar os 2 números; Escrever o resultado. Sandro Carvalho Izidoro Algoritmo declare a,b,c numerico inicio leia a leia b c a + b escreva c Fim algoritmo

6 Definição Algoritmo declare a,b,c numerico inicio leia a leia b c a + b escreva c Fim algoritmo Sandro Carvalho Izidoro {Programa que soma 2 numeros } Program Soma; var A, B, C : integer; begin Readln( A ); Readln( B ); C := A + B; Writeln( C ); end. /*Programa que soma 2 números */ #include int main(void){ int A, B, C; scanf("%d", A ); scanf("%d", B ); C = A + B; printf("%d", C ); }

7 Definição Algoritmo declare a,b,c numerico inicio leia a leia b c a + b escreva c Fim algoritmo Sandro Carvalho Izidoro #!/usr/bin/perl # Somando dois numeros. my ($a, $b, $c); print "Digite o valor de A: "; $a = ; print "Digite o valor de B: "; $b = ; $c = $a + $b; print "Soma: $c\n";

8 Variáveis Sabe-se da matemática que uma variável é a representação simbólica dos elementos de um certo conjunto.Nos algoritmos, destinados a resolver um problema no computador, cada variável corresponde uma posição de memória cujo conteúdo pode variar ao longo do tempo durante a execução do programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um único valor a cada instante. Toda variável é identificada por um nome ou identificador. Assim, por exemplo, em um algoritmo para cálculo das raízes de uma equação de 2º grau (ax 2 +bx+c = 0), os identificadores A, B, C podem representar as posições de memória que armazenam os coeficientes da equação. Sandro Carvalho Izidoro

9 Variáveis Declaração de Variáveis As variáveis só podem armazenar valores de um mesmo tipo e são classificadas como numéricas, lógicas e literais. A declaração de variáveis tem a seguinte forma: declare lista-de-identificadores nome-do-tipo Exemplo: declare MASSA, CODIGO, X_5 numérico TESTE, SIM lógico NOME_PROTEINA literal Sandro Carvalho Izidoro

10 Variáveis Declaração de Variáveis Um identificador é formado por 1 ou mais caracteres, sendo que o 1º caractere deve, obrigatoriamente, ser uma letra e os caracteres seguintes, letras ou dígitos, não sendo permitido o uso de símbolos especiais. Identificadores permitidos AX_5NOTAA3_2BMATRICULA1G3H5 Identificadores NÃO permitidos 5BX-YE(13)NOTA[1] A:BB*D Sandro Carvalho Izidoro

11 Variáveis Comentários Com a finalidade de simplificar o compreensão de um algoritmo é utilizado um instrumento denominado comentário. Os comentários podem ser colocados em qualquer ponto do algoritmo onde se façam necessários. Exemplo declare MAT, {Nº de matrícula do aluno} NOTA, {Total de pontos no semestre} COD {Código do curso} numérico Sandro Carvalho Izidoro

12 Variáveis Variável Simples declare x, y, n numerico … x 100 / n escreva x Variável Composta Homogênea Variáveis compostas homogêneas correspondem a posições de memória, identificadas por um mesmo nome, individualizadas por índices e cujo conteúdo é de mesmo tipo. declare medias[1:50] numerico... leia medias[13] Sandro Carvalho Izidoro

13 Variáveis Variável Composta Heterogênea Variáveis compostas heterogêneas são conjuntos de dados logicamente relacionados, mas de tipos diferentes (numérico, literal, lógico). São também conhecidos como registros ou estruturas. Cada componente é individualizado pela explicitação de seu identificador. declare Funcionario registro (Nome, Rua, Sexo literal, Numero, CEP, CPF, Salario numérico, Nascimento literal)... leia Funcionario.Nome, Funcionario.CPF Funcionario.Salario Funcionario.Salario + Aumento Sandro Carvalho Izidoro

14 Estrutura Sequêncial Estrutura sequêncial em algoritmos Comando de atribuição Comandos de entrada e saída Operadores relacionais e lógicos Sandro Carvalho Izidoro

15 Estrutura Sequêncial Comando de atribuição Este comando permite que se forneça um valor a uma certa variável, onde a natureza deste valor tem de ser compatível com o tipo da variável na qual está sendo armazenado. O comando de atribuição tem a seguinte forma geral: identificador expressão Exemplos a) K 1 b) MEDIA SOMA / N c) COR "VERDE" d) TESTE F e) A B Sandro Carvalho Izidoro

16 Estrutura Sequêncial Comandos de Entrada e Saída As unidades de entrada e saída são dispositivos que possibilitam a comunicação entre o usuário e o computador. Através do teclado o usuário consegue dar entrada ao programa e aos dados na memória do computador. Por sua vez, o computador pode emitir os resultados e outras mensagens para o usuário através do vídeo ou de uma impressora. Um comando de entrada e saída é construído de acordo com a forma geral: leia lista de identificadores escreva lista de identificadores e/ou constantes Sandro Carvalho Izidoro

17 Estrutura Sequêncial Expressões Lógicas É comum nos algoritmos surgirem situações em que a execução de uma ação, ou seqüência de ações, esteja sujeita a uma certa condição. Esta condição é representada no texto do algoritmo por meio de uma expressão lógica. Denomina-se expressão lógica à expressão cujos operadores são lógicos e cujos operandos são relações e/ou variáveis do tipo lógico. Sandro Carvalho Izidoro

18 Estrutura Sequêncial Operadores Relacionais Relações: Uma expressão relacional, ou relação, é uma comparação realizada entre dois valores de mesmo tipo básico. Estes valores são representados na relação através de constantes, variáveis ou expressões aritméticas. O resultado obtido de uma relação, é sempre um valor lógico. Sandro Carvalho Izidoro

19 Estrutura Sequêncial Operadores Lógicos Sandro Carvalho Izidoro Dadas as variáveis numéricas X,Y e Z, contendo os valores 2, 5 e 9 respectivamente, a variável literal NOME, contendo a sequência "MARIA" e a variável lógica SIM, contendo o valor lógico F, obter os resultados das expressões lógicas a seguir: a)( ) X + Y > Z e NOME = "MARIA" b)( ) SIM ou Y > X c)( ) NOME = "JORGE" e SIM ou X 2 < Z + 10

20 Estrutura Condicional A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado quando determinadas condições são ou não satisfeitas. A estrutura condicional pode ser apresentada através de uma estrutura simples ou de uma estrutura composta. Formato de uma Estrutura Condicional Simples se condição então sequência de comandos Sandro Carvalho Izidoro

21 Estrutura Condicional Exemplo 01 Sandro Carvalho Izidoro #!/usr/bin/perl # Selecao Simples. my ($sequencia01, $sequencia02); $sequencia01 = "GTGGGATC"; print "Digite a sequencia: "; chomp($sequencia02 = ); if($sequencia01 eq $sequencia02){ print "Sequencia encontrada\n"; } Algoritmo declare sequencia01, sequencia02 literal sequencia01 GTGGGATC leia sequencia02 se sequencia01 = sequencia02 então escreva Sequencia encontrada Fim_Algoritmo

22 Estrutura Condicional Sandro Carvalho Izidoro Estrutura Condicional Composta se condição então sequência 1 de comandos senão sequência 2 de comandos Neste caso, a sequência 1 só será executada se a condição for verdadeira e a sequência 2 de comandos só será executada se a condição for falsa.

23 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 02 Algoritmo declare sequencia01 literal leia sequencia01 se sequencia01 = GGTCAG então escreva Sequencia encontrada senão escreva Sequencia não encontrada Fim_Algoritmo #!/usr/bin/perl # Selecao Composta. my ($sequencia); print "Digite a sequencia: "; chomp($sequencia = ); if ($sequencia eq "GGTCAG"){ print "Sequencia encontrada\n"; } else { print "Sequencia não encontrada\n"; }

24 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 03 Algoritmo declare seq01, seq02, seq03 literal seq01 GGTACGTA seq02 GGTACGAT leia seq03 se seq03 = seq01 então escreva Encontrou senão se seq03 = seq02 então escreva Encontrou senão escreva Não achou! Fim_Algoritmo #!/usr/bin/perl # Selecao Composta. my ($seq01, $seq02, $seq03); $seq01 = "GGTACGTA"; $seq02 = "GGTACGAT"; print "Digite a sequencia: "; chomp($seq03 = ); if ($seq03 eq $seq01){ print "Encontrou\n"; } elsif ($seq03 eq $seq02){ print "Encontrou\n"; } else {print "Não achou\n"; }

25 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 04 Algoritmo declare nota1, nota2, media numerico escreva digite nota 1: leia nota1 escreva digite nota 2: leia nota2 media (nota1+nota2)/2 se media >= 7 então escreva Media:, media, - Aprovado senão se media >= 5 então escreva Media:, media, - Exame Final senão escreva Media:, media, - Reprovado Fim_Algoritmo

26 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 04 #!/usr/bin/perl # Selecao Composta. my ($nota1, $nota2, $media); print "Digite nota 1: "; $nota1 = ; print "Digite nota 2: "; $nota2 = ; $media = ($nota1 + $nota2)/2; if ($media >= 7){ print "Media: $media - Aprovado\n"; } elsif ($media >= 5){ print "Media: $media - Exame final\n"; } else { print "Media: $media - Reprovado\n"; }

27 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 05 Algoritmo declare media, faltas numerico escreva digite a media: leia media escreva digite o numero de faltas: leia faltas se media 25 então escreva Reprovado senão se media >= 5 e media < 7 então escreva Exame Final senão escreva Aprovado Fim_Algoritmo

28 Estrutura Condicional Sandro Carvalho Izidoro Exemplo 05 #!/usr/bin/perl # Selecao Composta. my ($media, $faltas); print "Digite a media: "; $media = ; print "Digite o numero de faltas: "; $faltas = ; if ($media 25){ print "Reprovado\n"; } elsif ($media >= 5 && $media < 7){ print "Exame Final\n"; } else { print "Aprovado\n"; }

30 Estrutura de Repetição Sandro Carvalho Izidoro Estrutura Enquanto Enquanto o valor da condição for verdadeiro, as ações dos comandos são executadas. Quando for falso, o comando é abandonado. Se já da primeira vez o resultado é falso, os comandos não são executados nenhuma vez. Formato do comando Enquanto enquanto condição faça inicio comandos fim

31 Estrutura de repetição Sandro Carvalho Izidoro Exemplo #!/usr/bin/perl # Repeticao: Enquanto. my ($x, $y, $l); $l = 0; while ($l <= 3){ print "digite x: "; $x = ; print "digite y: "; $y = ; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } $l = $l + 1; } Algoritmo declare X,Y, L numérico L 0 enquanto L <= 3 faça início leia X,Y se X > Y então escreva X senão escreva Y L L + 1 fim Fim_Algoritmo.

32 Estrutura de Repetição Sandro Carvalho Izidoro Estrutura Repita Os comandos são executados pelo menos uma vez. Quando a condição é encontrada, ela é testada. Se for verdadeira o comando seguinte será executado. Se for falsa, os comandos voltam a ser executados. Em outras palavras os comandos são executados até que a condição se torne verdadeira. Formato do comando Repita repita comandos até condição

33 Estrutura de Repetição Sandro Carvalho Izidoro Exemplo #!/usr/bin/perl # Repeticao: Repita. my ($x, $y, $l); $l = 0; do { print "digite x: "; $x = ; print "digite y: "; $y = ; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } $l = $l + 1; } until $l >= 3 Algoritmo declare X,Y, L numérico L 0 repita leia X,Y se X > Y então escreva X senão escreva Y L L + 1 até L > 3 Fim_Algoritmo.

34 Estrutura de Repetição Sandro Carvalho Izidoro Estrutura Para O comando para é, na verdade, o comando enquanto utilizando uma variável de controle, escrito numa notação compactada. Neste caso existirá sempre uma inicialização da variável de controle, um teste para verificar se a variável atingiu o limite e um acréscimo na variável de controle. Formato do comando Para para var de val_num_1 até val_num_2 [ passo val_num_3] faça início comandos fim

35 Estrutura de repetição Sandro Carvalho Izidoro Exemplo #!/usr/bin/perl # Repeticao: Para. my ($x, $y, $l); for ($l=0;$l<=3;$l++){ print "digite x: "; $x = ; print "digite y: "; $y = ; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } Algoritmo declare X,Y, L numérico para L de 1 até 3 passo 1 faça início leia X,Y se X > Y então escreva X senão escreva Y fim Fim_Algoritmo.

36 Procedimentos e Funções Sandro Carvalho Izidoro Um módulo é um grupo de comandos, constituindo um trecho de algoritmo, com uma função bem definida e o mais independente possível em relação ao resto do algoritmo. Todo módulo é constituído por uma seqüência de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais. Objetos globais são entidades que podem ser usadas em módulos internos a outro módulo do algoritmo onde foram declaradas. Objetos locais são entidades que só podem ser usadas no módulo do algoritmo onde foram declaradas. A comunicação entre módulos deverá ser feita através de vínculos, utilizando-se objetos globais ou transferência de parâmetros.

37 Procedimentos e Funções Sandro Carvalho Izidoro A divisão do algoritmo em módulos traz os seguintes benefícios: Manutenção simples (módulos independentes); Elaboração e testes em separado; Reutilização do módulo em outros programas. Ferramentas para modularização Como ferramentas de modularização podemos destacar as sub-rotinas e as funções. Os módulos de programação servem basicamente a três objetivos: Repetição de código; Dividir e estruturar melhor um algoritmo; Aumentar a legibilidade de um algoritmo.

38 Procedimentos e Funções Sandro Carvalho Izidoro Sub-rotinas e funções são módulos hierarquicamente subordinados a um algoritmo, comumente chamado de módulo principal. Da mesma forma, uma sub-rotina ou uma função pode conter outras sub-rotinas e funções aninhadas. A sub-rotina e a função são criadas através das suas declarações em um algoritmo. Para serem executadas, necessitam de ativação provocada por um comando de chamada.

39 Procedimentos e Funções Sandro Carvalho Izidoro Sub-rotinas Sintaxe Subrotina NOME (lista_de_parâmetros_formais) declarações dos objetos locais à sub-rotina comandos da sub-rotina Fim_sub_rotina NOME A chamada de uma sub-rotina é feita com uma referência a seu nome e a indicação dos parâmetros atuais no local do algoritmo onde a sub-rotina deve ser ativada, ou seja, onde a sua execução deve ser iniciada. A forma geral para a ativação de uma sub-rotina é a seguinte: NOME (lista_de_parâmetros_atuais)

40 Procedimentos e Funções Sandro Carvalho Izidoro Funções Sintaxe Função tipo NOME (lista_de_parâmetros_formais) declarações dos objetos locais à função comandos da função retorne valor Fim_função NOME A chamada de uma função é feita com uma referência a seu nome e a indicação dos parâmetros atuais no local do algoritmo onde a função deve ser ativada. Pode-se chamar uma função de várias formas: valor NOME (lista_de_parâmetros_atuais) escreva NOME (lista_de_parâmetros_atuais)

41 Procedimentos e Funções Sandro Carvalho Izidoro Exemplo Algoritmo declare numero numerico função literal ph (valor numerico) escreva forneça o ph da solução: leia numero escreva A solução é, ph (numero) Fim_Algoritmo. função literal ph (numero numerico) se numero > 7 então retorne base senão se numero < 7 então retorne ácida senão retorne neutra fim função ph

42 Procedimentos e Funções Sandro Carvalho Izidoro Exemplo #!/usr/bin/perl # Função exemplo my ($ph); print "Forneça o ph da solução: "; $ph = ; print "A solução é ", &retorna_ph($ph), "\n"; sub retorna_ph { my $parametro01 = $_[0]; if ($parametro01 > 7) { return "base"; } elsif ($parametro01 < 7) { return "ácida"; }else { return "neutra";} }

43 Vetor e Matriz Sandro Carvalho Izidoro Exemplo Vetor Algoritmo declare vetor1[1:3], vetor2[1:3] literal flag, i numérico escreva Digite o primeiro vetor para i de 1 até 3 passo 1 faça inicio leia (vetor1[ i ]) fim para escreva Digite o segundo vetor para i de 1 até 3 passo 1 faça inicio leia (vetor2[ i ]) fim para flag 1 para i de 1 até 3 passo 1 faça inicio se (vetor1[ i ] <> vetor2[ i ] ) então flag 0 fim para se (flag = 1) então escreva Iguais senão escreva diferentes fim algoritmo.

44 Vetor e Matriz Sandro Carvalho Izidoro Exemplo Vetor #!/usr/bin/perl # Vetor $flag); $flag = 1; print "Digite o primeiro vetor:\n"; for($i=0;$i<3;$i++){ $vetor1[$i] = ; } print "Digite o segundo vetor:\n"; for($i=0;$i<3;$i++){ $vetor2[$i] = ; } for($i=0;$i<3;$i++){ if($vetor1[$i] ne $vetor2[$i]){ $flag = 0; } if($flag == 1){ print "Vetores iguais\n";} else { print "Vetores diferentes\n"; }

45 Vetor e Matriz Sandro Carvalho Izidoro Exemplo Matriz Algoritmo declare matriz[1:3,1:2], seq literal i, j numérico escreva Digite os valores para a matriz para i de 1 até 3 passo 1 faça inicio para j de 1 até 2 passo 1 faça inicio leia (matriz[ i, j ]) fim para escreva Digite uma sequência: leia seq para j de 1 até 3 passo 1 faça inicio se (matriz[ i, 1 ] = seq) então escreva matriz[i, 2] fim para fim algoritmo.


Carregar ppt "Introdução a Algoritmos e Estruturas de Dados Sandro Carvalho Izidoro CURSO DE VERÃO EM BIOINFORMÁTICA ESTRUTURAL."

Apresentações semelhantes


Anúncios Google