Lógica de Programação Teoria rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 1
Tópicos Algoritmos Critérios para algoritmos Regras básicas para construção de um algoritmo Forma geral de um algoritmo Exemplo 1 de algoritmo Variáveis e Constantes Variáveis e Constantes x Garagens de carros Regras para nomes de Variáveis e Constantes Itens importantes para um algoritmo Exemplo 2 de algoritmo rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 2
Tópicos Tipos de dados Classificações de tipos de dados Tipos de dados primitivos Operações permitidas para tipos inteiro e real Operações div e mod Operadores de comparação para tipos inteiro e real Operadores de comparação para tipo caractere Precedência dos operadores aritméticos Operações permitidas para tipos lógicos Tabela-verdade para os operadores lógicos Precedência dos operadores lógicos Exemplo 3 de algoritmo rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 3
Tópicos Exemplo 4 de algoritmo Marco - Questões Referências rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 4
Algoritmos O que é um algoritmo? É um conjunto finito de passos formalmente definidos para resolução de um problema ou tarefa É uma sequência lógica que pode ter um conjunto de valores de entrada para produzir um conjunto de valores de saída Corresponde a uma descrição de um padrão de comportamento expresso em termos de um conjunto finito de ações O problema solucionado por algoritmo deve ser: Claro Bem definido rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 5
Algoritmos Entrada Processamento Saída rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 6
Algoritmos Entrada Processamento Saída rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 7
Critérios para algoritmos Entrada: Zero ou mais valores de entrada Saída: Pelo menos um valor é produzido Clareza: Toda instrução deve ser clara e não ambígua Efetividade: Toda instrução deve ser executável Finito: O algoritmo deve ter um conjunto finito de passos rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 8
Critérios para algoritmos Entrada Efetividade Saída Clareza Finito rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 9
Regras básicas para construção de um algoritmo Usar somente um verbo por frase Escrever de uma forma simples para que possa ser entendido facilmente Até por pessoas que não trabalham na área Usar frases Curtas Simples Ser objetivo Procurar usar palavras que não tenham sentido dúbio rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 10
Forma geral de um algoritmo Algoritmo <nome do algoritmo>; const <identificador> = <valor>; var <identificador>: <tipo>; início <lista de comandos ou instruções>; fim rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 11
Exemplo 1 de algoritmo Algoritmo preparar macarrão instantâneo; var macarrão: instantâneo; início fim Coloque o macarrão em um panela com água; Enquanto não der 3 minutos de duração: Deixe o macarrão fervendo na água; Adicione o tempero que vem junto com o macarrão; Se o tempero não for o suficiente então: Adicione ingredientes a mais como legumes, verduras ou queijo; Coloque em um prato; Sirva; rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 12
Variáveis e Constantes Variáveis e Constantes são recipientes que armazenam informações de um determinado tipo Recipiente = endereços de memória A diferença entre variáveis e constantes: As informações contidas nas variáveis podem ser modificadas no decorrer de um algoritmo As informações relacionadas a constantes não podem rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 13
Variáveis e Constantes Declaração de variáveis: var <identificador1>, <identificador2>,...: <tipo1>; <identificador3>, <identificador4>,...: <tipo2>; Declaração de constantes: const <identificador1> = <valor1>; <identificador2> = <valor2>; <identificadorn> = <valorn>; O que define o tipo de uma constante é o tipo de valor atribuído a ela rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 14
Variáveis e Constantes x Garagens de carros Informação Carro Variáveis Garagem numerada com rotatividade de carros Constantes Garagem também identificada, porém sendo particular para apenas um carro de colecionador Coloquei esse exemplo, pois o carro nunca sairá da garagem rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 15
Variáveis e Constantes x Garagens de carros Informação Variáveis e Constantes rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 16
Regras para nomes de Variáveis e Constantes Não podem: Ter nomes de palavras reservadas (comandos de uma linguagem de programação específica) Possuir espaços em branco Devem iniciar com: Letra Sublinhado (_) Podem ter como demais caracteres: Letras Números Sublinhado Para algoritmos, a escolha de letras maiúsculas ou minúsculas é indiferente rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 17
Itens importantes para um algoritmo Item Símbolo Descrição Dois pontos : Igualdade = Declara o tipo de uma variável no momento de sua criação Atribui um valor a uma constante no momento de sua criação Atribuição := ou Atribui a uma variável um valor ou resultado de alguma operação que retorna valor Ponto e vírgula ; Indica a finalização de uma linha de instrução rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 18
Exemplo 2 de algoritmo Algoritmo somadoisnumerosinteiros; var num1, num2, total: inteiro; início leia(num1, num2); total := num1 + num2; escreva( A soma dos dois números é, total); fim rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 19
Tipos de dados São conjuntos de valores que podem: Pertencer a uma constante Ser assumidos por uma variável ou expressão Ser gerados por uma função Alguns autores usam várias classificações, porém ficaremos com duas: Classificação 1 (mais usual e que será a classificação seguida neste material): Primitivos Derivados Classificação 2 (cobrada principalmente pelo CESPE): Simples (também chamados de Escalares) Estruturados (também chamados de Compostos) rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 20
Classificações de tipos de dados Classificação 1 Tipos Classificação 2 Primitivos Derivados inteiro real lógico caractere enumerados subconjuntos vetores ou arrays registros arquivos conjuntos ou sets referências ou ponteiros string Simples ou Escalares Estruturados ou Compostos rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 21
Tipos de dados primitivos Tipo Exemplo de conteúdo inteiro -19, -6, -2, 0, 3, 7, 256 real -90.42, -32.87, 0, 2, 4.89 lógico V ou F caractere A, a, B, b, C, c,!,?, / rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 22
Tipos de dados primitivos Os valores possíveis para o tipo inteiro são os números inteiros Negativos Zero Positivos Os valores para o tipo real são números racionais Normalmente representados por: Uma parte inteira Uma parte fracionária rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 23
Tipos de dados primitivos O tipo lógico consiste de dois valores: Verdadeiro Falso O tipo caractere consiste de: Dígitos decimais (0 a 9) Letras (A a Z) Sinais especiais (espaço em branco, sinais de pontuação, etc) rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 24
Operações permitidas para tipos inteiro e real Operação Símbolo inteiro real potência pot raiz raiz raiz quadrada SQRT soma + subtração - multiplicação * divisão inteira div resto da divisão resto ou mod divisão / rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 25
Operações div e mod div retorna o quociente inteiro da divisão entre dois números inteiros 19 div 3 = 6 mod retorna o resto da divisão entre dois números inteiros 19 mod 3 = 1 19 3 1 6 mod div rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 26
Operadores de comparação Operador Símbolo inteiro real caractere Igual a = Diferente de Menor que < Menor que ou igual a Maior que > Maior que ou igual a rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 27
Precedência dos operadores aritméticos Ordem de precedência Exemplo de conteúdo 1 () 2 pot, raiz 3 *, /, div, mod 4 +, - rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 28
Operações permitidas para tipos lógicos Operação Tipo Símbolo e (conjunção) Binário e ou & ou (disjunção) Binário ou ou não (negação) Unário not ou! rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 29
Tabela-verdade para os operadores e, ou e não A B A e B A ou B não (A) V V V V F V F F V F F V F V V F F F F V rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 30
Precedência dos operadores lógicos Ordem de precedência Exemplo de conteúdo 1 () 2 não 3 e, ou rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 31
Exemplo 3 de algoritmo Algoritmo mediafinal; var nota1, nota2, nota3, nota4: inteiro; media: real; início leia(nota1, nota2, nota3, nota4); media := (nota1 + nota2 + nota3 + nota4) / 4; escreva( A média das notas é, media); fim rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 32
Exemplo 4 de algoritmo Algoritmo areacircunferencia; const PI = 3,14; var raio, area: real; início leia(raio); area := PI * SQR(raio); escreva( A área da circunferência é, area); fim rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 33
Marco - Questões!!! [RGA 2011] Algoritmo é um conjunto infinito de passos formalmente definidos para resolução de um problema ou tarefa. [RGA 2011] O problema solucionado por algoritmo deve ser claro e bem definido. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 34
Marco - Questões!!! [RGA 2011] Algoritmo é um conjunto infinito de passos formalmente definidos para resolução de um problema ou tarefa. Gabarito: ERRADO. [RGA 2011] O problema solucionado por algoritmo deve ser claro e bem definido. Gabarito: CERTO. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 35
Marco - Questões!!! [RGA 2011] Quais são os critérios para algoritmos? rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 36
Marco - Questões!!! [RGA 2011] Quais são os critérios para algoritmos? Entrada: Zero ou mais valores de entrada Saída: Pelo menos um valor é produzido Clareza: Toda instrução deve ser clara e não ambígua Efetividade: Toda instrução deve ser executável Finito: O algoritmo deve ter um conjunto finito de passos rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 37
Marco - Questões!!! Entrada Efetividade Saída Clareza Finito rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 38
Marco - Questões!!! [RGA 2011] Em um algoritmo, podemos usar mais de um verbo por frase. [RGA 2011] Qual é a forma geral de um algoritmo? rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 39
Marco - Questões!!! [RGA 2011] Em um algoritmo, podemos devemos usar mais de um verbo por frase. Gabarito: ERRADO. [RGA 2011] Qual é a forma geral de um algoritmo? Algoritmo <nome do algoritmo>; const var <identificador> = <valor>; <identificador>: <tipo>; início fim <lista de comandos ou instruções>; rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 40
Marco - Questões!!! [RGA 2011] Para declarar variáveis, fazemos da seguinte forma: <identificador1>, <identificador2>,...= <tipo1>;. Para constantes, usamos: <identificador1>: <valor1>;. [RGA 2011] Nomes de variáveis e constantes podem começar com letras ou sublinhado. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 41
Marco - Questões!!! [RGA 2011] Para declarar variáveis, fazemos da seguinte forma: <identificador1>, <identificador2>,...= <tipo1>;. Para constantes, usamos: <identificador1>: <valor1>;. Gabarito: ERRADO. Para declarar variáveis (usamos dois pontos): <identificador1>, <identificador2>,...: <tipo1>; Para constantes (usamos igual a): <identificador1> = <valor1>; [RGA 2011] Nomes de variáveis e constantes podem começar com letras ou sublinhado. Gabarito: CERTO. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 42
Itens importantes para um algoritmo Item Símbolo Descrição Dois pontos : Igualdade = Atribuição := ou Ponto e vírgula ; rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 43
Itens importantes para um algoritmo Item Símbolo Descrição Dois pontos : Igualdade = Declara o tipo de uma variável no momento de sua criação Atribui um valor a uma constante no momento de sua criação Atribuição := ou Atribui a uma variável um valor ou resultado de alguma operação que retorna valor Ponto e vírgula ; Indica a finalização de uma linha de instrução rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 44
Classificações de tipos de dados Classificação 1 Tipos Classificação 2 inteiro real lógico caractere enumerados subconjuntos vetores ou arrays registros arquivos conjuntos ou sets referências ou ponteiros string rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 45
Classificações de tipos de dados Classificação 1 Tipos Classificação 2 Primitivos Derivados inteiro real lógico caractere enumerados subconjuntos vetores ou arrays registros arquivos conjuntos ou sets referências ou ponteiros string Simples ou Escalares Estruturados ou Compostos rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 46
Marco - Questões!!! [RGA 2011] 15 div 2 = 7 e 15 mod 2 = 1. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 47
Marco - Questões!!! [RGA 2011] 15 div 2 = 7 e 15 mod 2 = 1. Gabarito: CERTO. rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 48
Precedência dos operadores aritméticos Ordem de precedência Exemplo de conteúdo 1 2 3 4 rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 49
Precedência dos operadores aritméticos Ordem de precedência Exemplo de conteúdo 1 () 2 pot, raiz 3 *, /, div, mod 4 +, - rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 50
Tabela-verdade para os operadores e, ou e não A B A e B A ou B não (A) V V V F F V F F rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 51
Tabela-verdade para os operadores e, ou e não A B A e B A ou B não (A) V V V V F V F F V F F V F V V F F F F V rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 52
Precedência dos operadores lógicos Ordem de precedência Exemplo de conteúdo 1 2 3 rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 53
Precedência dos operadores lógicos Ordem de precedência Exemplo de conteúdo 1 () 2 não 3 e, ou rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 54
Referências MEDINA, Marco e FERTIG, Cristina. Algoritmos e Programação: Teoria e Prática. 2ª Edição. São Paulo: Novatec Editora, 2006. Tipos de dados estruturados. Disponível em: http://www.csgnet.org/documentosonline/apontamentos/pa scal/pascal2_p4.pdf Estrutura de Dados. Disponível em: http://200.201.81.50/~adair/ed/notas%20aula/aulas %20Estruturas%20de%20Dados.pdf Tipos de Dados. Disponível em: http://www.nuperc.unifacs.br/members/thales.castro/arquivo s/aulas/tiposdedados.ppt rogerioaraujo.wordpress.com twitter: @rgildoaraujo - rgildoarauj@gmail.com 55