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

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

Introdução a Algoritmos e Estruturas de Dados

Apresentações semelhantes


Apresentação em tema: "Introdução a Algoritmos e Estruturas de Dados"— Transcrição da apresentação:

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

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 2

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 3

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 4

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. Algoritmo declare a,b,c numerico inicio leia a leia b c ← a + b escreva c Fim algoritmo Sandro Carvalho Izidoro 5

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

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

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 (ax2+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 8

9 declare lista-de-identificadores nome-do-tipo
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 9

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 A X_5 NOTA A3_2B MATRICULA 1G3H5 Identificadores NÃO permitidos 5B X-Y E(13) NOTA[1] A:B B*D Sandro Carvalho Izidoro 10

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 11

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 12

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 13

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 14

15 identificador  expressão
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 15

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 16

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 17

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 18

19 Estrutura Sequêncial Operadores Lógicos
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 X2 < Z + 10 Sandro Carvalho Izidoro 19

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 20

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

22 Estrutura Condicional
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. Sandro Carvalho Izidoro 22

23 Estrutura Condicional
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 = <STDIN>); if ($sequencia eq "GGTCAG"){ print "Sequencia encontrada\n"; } else { print "Sequencia não encontrada\n"; Sandro Carvalho Izidoro 23

24 Estrutura Condicional
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 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 = <STDIN>); if ($seq03 eq $seq01){ print "Encontrou\n"; } elsif ($seq03 eq $seq02){ } else {print "Não achou\n"; Sandro Carvalho Izidoro 24

25 Estrutura Condicional
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 Sandro Carvalho Izidoro 25

26 Estrutura Condicional
Exemplo 04 #!/usr/bin/perl # Selecao Composta. my ($nota1, $nota2, $media); print "Digite nota 1: "; $nota1 = <STDIN>; print "Digite nota 2: "; $nota2 = <STDIN>; $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"; Sandro Carvalho Izidoro 26

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

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

29 Estrutura de Repetição
A estrutura de repetição permite que uma seqüência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita. A condição de interrupção que deve ser satisfeita é representada por uma expressão lógica. As estruturas de repetição são: Comando Enquanto Comando Repita Comando Para Sandro Carvalho Izidoro 29

30 Estrutura de Repetição
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 Sandro Carvalho Izidoro 30

31 Estrutura de repetição
Exemplo 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. #!/usr/bin/perl # Repeticao: Enquanto. my ($x, $y, $l); $l = 0; while ($l <= 3){ print "digite x: "; $x = <STDIN>; print "digite y: "; $y = <STDIN>; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } $l = $l + 1; Sandro Carvalho Izidoro 31

32 Estrutura de Repetição
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 Sandro Carvalho Izidoro 32

33 Estrutura de Repetição
Exemplo 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. #!/usr/bin/perl # Repeticao: Repita. my ($x, $y, $l); $l = 0; do { print "digite x: "; $x = <STDIN>; print "digite y: "; $y = <STDIN>; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } $l = $l + 1; } until $l >= 3 Sandro Carvalho Izidoro 33

34 Estrutura de Repetição
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 Sandro Carvalho Izidoro 34

35 Estrutura de repetição
Exemplo 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. #!/usr/bin/perl # Repeticao: Para. my ($x, $y, $l); for ($l=0;$l<=3;$l++){ print "digite x: "; $x = <STDIN>; print "digite y: "; $y = <STDIN>; if ($x > $y){ print "$x \n"; } else { print "$y \n"; } Sandro Carvalho Izidoro 35

36 Procedimentos e Funções
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. Sandro Carvalho Izidoro 36

37 Procedimentos e Funções
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. Sandro Carvalho Izidoro 37

38 Procedimentos e Funções
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. Sandro Carvalho Izidoro 38

39 Procedimentos e Funções
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) Sandro Carvalho Izidoro 39

40 Procedimentos e 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) Sandro Carvalho Izidoro 40

41 Procedimentos e Funções
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 Sandro Carvalho Izidoro 41

42 Procedimentos e Funções
Exemplo #!/usr/bin/perl # Função exemplo my ($ph); print "Forneça o ph da solução: "; $ph = <STDIN>; 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";} } Sandro Carvalho Izidoro 42

43 Vetor e Matriz 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” leia (vetor2[ i ]) 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. Sandro Carvalho Izidoro 43

44 Vetor e Matriz Exemplo Vetor #!/usr/bin/perl # Vetor
$flag); $flag = 1; print "Digite o primeiro vetor:\n"; for($i=0;$i<3;$i++){ $vetor1[$i] = <STDIN>; } print "Digite o segundo vetor:\n"; $vetor2[$i] = <STDIN>; 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"; Sandro Carvalho Izidoro 44

45 Vetor e Matriz 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 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. Sandro Carvalho Izidoro 45


Carregar ppt "Introdução a Algoritmos e Estruturas de Dados"

Apresentações semelhantes


Anúncios Google