Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Documentos relacionados
Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

UNIDADE 6 - PROGRAMAÇÃO MODULAR

TÉCNICAS DE PROGRAMAÇÃO

ALGORITMOS MEMÓRIA, VARIÁVEIS E CONSTANTES, OPERADORES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Algoritmos e Programação Parte Teórica

INTRODUÇÃO À LINGUAGEM C++

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com

LÓGICA DE PROGRAMAÇÃO. Vitor Valerio de Souza Campos

Sumário Algoritmos e Estrutura de Dados Repetição

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva

Universidade Federal do Vale do São Francisco - UNIVASF Colegiado de Engenharia de Computação CECOMP

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma

compreender a importância de cada estrutura de controle disponível na Linguagem C;

Introdução à Lógica de Programação

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi

Conceitos básicos da linguagem C

ILP - Introdução à Linguagem de Programação. Plano de estudo: - Constantes e variáveis. - Atribuindo valores às variáveis.

Introdução a Algoritmos Parte 04

Definição. de solução de um problema passo-a-passo. Representa a lógica l. passo.

9 Comandos condicionais

A estrutura de repetição em um algoritmo consiste na execução de um trecho do mesmo levando em consideração certas condições imposta pelo algoritmo.

Programação: Estruturas de seleção

Convertendo Algoritmos para a Linguagem C

Algoritmos e Programação

ALGORITMOS E FLUXOGRAMAS

Estruturas de Repetição

Comandos de repetição while

Algoritmos e Estruturas de Dados I 01/2013. Estruturas Condicionais e de Repetição (parte 2) Pedro O.S. Vaz de Melo

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Tutorial do Interpretador de Linguagem Algorítmica (ILA)

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Algoritmos com VisuAlg

Testando e Comparando Valores

JavaScript (ou JScript)

Definição de Programas de Computadores e Linguagem de Programação de Comutadores

Organização de Computadores Software

9.1.2 Laços Controlados por Entrada: Contador

Guia de utilização da notação BPMN

Aula 3 Desvio Condicional

ALGORITMOS. Supervisão: Prof. Dr.º Denivaldo Lopes

2. A influência do tamanho da palavra

Algoritmo e Programação

CURSO DE INFORMÁTICA. Algoritmos. Parte 3. Ricardo José Cabeça de Souza

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis

Departamento de Informática

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3

Algoritmos DCC 119. Introdução e Conceitos Básicos

Algoritmos e Programação de Computadores

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À PROGRAMAÇÃO COM C/C++ Prof. Dr. Daniel Caetano

Organização de Computadores 1

Linguagem de Programação

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

Introdução. Introdução. Objetivos da Aula. Bases Computacionais da Ciência(BC-0005)

3. INTRODUÇÃO À LINGUAGEM C 3.1. CONCEITOS BÁSICOS. Lógica de Programação

COMANDO DA AERONÁUTICA ESCOLA DE ESPECIALISTAS DE AERONÁUTICA SUBDIVISÃO DE ADMISSÃO E DE SELEÇÃO

Prof. Marcelo Nogueira

Figura 1 Busca Linear

Programação científica C++

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: Prof. Dr. Raimundo Moura

Linguagem de Programação I

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.

Variáveis e Comandos de Atribuição

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

Linguagem de Montagem 2. Operações e Operandos

DESENVOLVIMENTO DE SOFTWARE

2. ALGORITMOS. Unesp Campus de Guaratinguetá. Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro

VisuALG Estruturas de Repetição. Professores: Vilson Heck Junior Felipe Schneider Costa

P r o g r a m a ç ã o d e C o m p u t a d o r e s 1 o S e m P r o f. A n d r é A m a r a n t e L u i z L A B 5 tag %2d while printf PE1:

Linguagem de Programação I. Aula 04 Estruturas de Controle

PLANEJAMENTO OPERACIONAL - MARKETING E PRODUÇÃO MÓDULO 16 AS QUATRO FASES DO PCP

Conectar diferentes pesquisas na internet por um menu

Algoritmos: Estruturas de Repetição. Prof. Carlos Lopes

Resolução de problemas e desenvolvimento de algoritmos

LINEAR EQUIPAMENTOS RUA SÃO JORGE, TELEFONE : SÃO CAETANO DO SUL - SP - CEP:

5. Uma lousa denominada EPI (registrador de endereço de próxima instrução).

7. Estrutura de Decisão

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO

TUTORIAL AMBIENTE WEB PORTUGOL

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados)

Linguagem e Técnicas de Programação I Tipos de dados, variáveis e constantes. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Estrutura Condicional em Java

Lógica para a Programação - 1º semestre AULA 01 Prof. André Moraes

Linguagem algorítmica: Portugol

MODELAGEM E SIMULAÇÃO

Lógica de Programação

Computação II Orientação a Objetos

Introdução à Lógica de Programação

Estruturas de Dados Aula 15: Árvores 17/05/2011

IMPLEMENTAÇÃO DE UM PROTÓTIPO PARA INFORMATIZAÇÃO DE PROCESSO DE ADEQUAÇÃO DE FÉRIAS

3 - CONJUNTO DOS NÚMEROS RACIONAIS

Introdução à Programação. João Manuel R. S. Tavares

COMO PROGRAMAR SEU TIME

Transcrição:

Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br

Aulas 2-3-4-5-6-7-8 Lógica Algoritmos Portugol

Conceitos Lógica Conjunto de princípios e de métodos que embasam raciocínios coerentes, induzindo a soluções eficazes para problemas de processamento de dados Algoritmo Descrição das etapas de resolução de um problema ou a indicação ordenada de uma sequência de ações bem definidas

Conceitos Tipos de lógica para processamento automático de dados Lógica linear Tratamento de cada ação na ordem em que sua necessidade for aparecendo. Explicitação: Rotina 01 Rotina 02 Rotina 03... Rotina n

Conceitos Lógica modular Subdivisão do problema em diversos módulos (subproblemas), para poder analisar melhor cada rotina (separadamente) visando, assim, à solução geral da questão proposta. Rotina 01 Rotina 02 Bloco principal Rotina 03 Rotina 04

Conceitos Para resolver um problema em computador é necessário escrever um programa em linguagem de programação com comandos ou instruções organizados de acordo com um raciocínio adequado a essa resolução. A organização do raciocínio de resolução de um problema, ou seja, o algoritmo, pode ser feita, com vantagem, utilizando-se instrumentos adequados.

Conceitos Exemplos Descrição narrativa Português estruturado Portugol (Algol+português) Representações pictóricas Diagrama de blocos Árvores de decisão Tabelas de decisão

Lógica estruturada Diversos fatores impunham dificuldades à programação Sofisticação e aumento da complexidade das aplicações A falta de padronização e de disciplina no estabelecimento e explicitação da lógica da solução Fonte de erros para os programadores Outros fatores Fluxogramas lineares Alta liberdade Cunho pessoal para cada programa

Lógica estruturada Na lógica estruturada, os pesquisadores argumentam que apenas três estruturas são suficientes para explicitar a solução de qualquer problema: Sequência (Estrutura Sequencial) Seleção (Decisão) Repetição (Iteração)

Lógica Estruturada (Diagramas) Sequência

Lógica Estruturada (Diagramas) Seleção (decisão) Verdadeiro Falso

Lógica Estruturada (Diagramas) Estrutura Repetição (Iteração) Falso Verdadeiro

Lógica Estruturada (Diagramas) Estrutura Repetição (Iteração) Falso Verdadeiro

Lógica Estruturada O uso de sequências, decisões e repetições eliminou o inconveniente uso de indiscriminados GOTO, que complicavam os algoritmos (e programas) até então (1966).

Lógica Estruturada OBS: Pode-se elaborar uma variação da alternativa, onde a decisão é tomada com base em múltiplos valores em vez de avaliações de verdadeiro ou falso da condição. Esta estrutura é a alternativa múltipla.

Alternativa Múltipla v1 v2 v3 v4 v5 v6 outro caso... c1 c2 c3 c4 c5 c6 cn

Portugol Pseudocódigo (Português + Algol) que permite ao projetista apresentar a solução lógica (voltada ao problema, não a qualquer linguagem ou a qualquer máquina) e que oferece a facilidade para a conversão a qualquer código de programação.

Portugol Sequências Notação dos elementos da Lógica estruturada em portugol: Sequência C1; C2;... Cn;

Portugol Condicional Sintaxe Condicional simples: se <condição> então <lista de comandos>; fim-se; Condicional dupla: se <condição> então <lista de comandos>; Senão <lista de comandos>; fim-se; {um conjunto de comandos é executado quando <condição> é avaliada como VERDADEIRO, caso contrário, o algoritmo prossegue para o fim-se.} {um conjunto de comandos é executado apenas quando <condição> é avaliada como VERDADEIRA, e outro conjunto é executado somente quando <condição> assume valor FALSO, após esta seleção, o algoritmo prossegue para o fimse.}

Portugol Condicional Condicional exemplo: se a>b então x:=y+z; senão x:=z+w; fim-se;

Portugol Condicionais aninhadas Deve-se ter cuidado ao usar condicionais compostas aninhadas. Embora a sintaxe possa estar de acordo com as regras definidas para o Portugol, a lógica de execução pode estar errada

Portugol Condicionais aninhadas A melhor forma de se verificar onde uma condicional se atua, a qual condicional está ligada uma cláusula senão e onde se encerra uma condicional se quando usadas de forma aninhadas (isto é, um se é um comando a ser verificado caso a condição de outro se seja avaliada como verdadeira) é analisar do se mais interno para o mais externo. A partir do se mais interno, procura-se o primeiro fim-se ou o primeiro senão que ocorre imediatamente após ele. Este fim-se e/ou senão estará(ão) ligado(s) a este se mais interno.

Portugol Condicionais aninhadas No exemplo abaixo, cada condicional se foi comentada e destacada em cores iguais aos fim-se e senão a que estão ligadas. se a>b então se b>c então c:=c+1; se c>d então a:=b+c+d; senão{senão do se c>d} b:=a+c; fim-se;{fim do se c>d} fim-se;{fim do se b>c} senão{senão do se a>b} c:=a+b; fim-se;{fim do se a>b}

Portugol Seleção múltipla Seleção múltipla Seleção múltipla: escolha <expressão> caso <valor11>, <valor12>,... <valor1n>:<lista de comandos>; caso <valor21>, <valor22>,... <valor2n>:<lista de comandos>; caso <valor31>, <valor32>,... <valor3n>:<lista de comandos>;... outro caso:<lista de comandos>; fim-escolha; Obs: Expressão pode resultar em valores do tipo um valor do tipo inteiro, caractere ou booleano. A cláusula outro caso é opcional. Caso: é uma constante ou uma faixa de valores constantes do mesmo tipo da expressão

Portugol Seleção múltipla Seleção múltipla exemplo: escolha caractere caso A..Z, a..z : escreva( letra ); caso 0..9 : escreva( numero ); caso +, -, *, / : escreva( Operador ); outro caso: escreva( caractere especial ); fim-escolha;

Portugol Repetição condicional Repetição Enquanto-faça (controle a priori): enquanto <condição> faça <lista de comandos>; fim-enquanto; Repita-até: se <condição> então <lista de comandos>; Senão <lista de comandos>; fim-se;

Portugol Repetição condicional Repetição exemplo: Enquanto-faça (controle a priori): leia(numeroalunos); contador:=1; enquanto contador <= numeroalunos faça leia(nota1,nota2); media:=(nota1+nota2)/2; escreva(media); contador:=contador+1; fim-enquanto;

Portugol Repetição condicional Repetição exemplo: Repita-até (controle a posteriori): repita leia(dia); até dia>1 e dia<31;

Portugol - Algoritmos Todo algoritmo ou módulo estará entre os delimitadores início e fim. Sintaxe: Início......... fim-enquanto;

Portugol Declaração de identificadores Identificadores de Variáveis e Constantes Usados para representar posições de memória que sofrerão transformações, ou que armazenarão valores constantes ao longo da execução do algoritmo.

Portugol Declaração de identificadores Identificadores de Variáveis e Constantes Sintaxe Exemplos Obs: constante <nome>=<valor>; var <lista de variáveis>:<tipo1>; <lista de variáveis>:<tipo2>; constante pi=3.14; var delta:real; Nomes de identificadores devem ser únicos em todo algoritmo Devem iniciar com uma letra Não podem conter caracteres como: *,!, :, Ç,,... Podem conter o caractere _ (traço baixo) para melhorar a legibilidade

Portugol Comentários Informações que não serão processadas na execução do algoritmo. Descrevem funcionalidades ou oferecem informações úteis para documentação do algoritmo. Informações comumente documentadas são: Função do algoritmo Nome do(s) autor(es) Versão do algoritmo Data de criação e/ou última modificação Descrição das variáveis mais importantes Descrição de trechos de repetição ou função de expressões no algoritmo

Portugol Comentários Sintaxe: {comentários...} Algoritmos mal documentados podem ser difíceis de serem compreendidos quando lidos por outras pessoas ou após um período de tempo desde sua elaboração

Portugol - Atribuição Utilizado para modificar o valor armazenado na posição de memória identificada por uma variável Sintaxe: nome_variavel := <expressão>; Obs: Expressão deve retornar um tipo compatível com o tipo da variável à esquerda do comando de atribuição Exemplo x y+z; n n+1; Outra notação x:=y+z; n:= n+1;

Portugol Atribuição Exemplos Considerando as seguintes variáveis declaradas: var x: inteiro; y,z: real; ok: lógico; endereco: cadeia; x := y; {INVÁLIDO x é inteiro, e variávies inteiras não comportam variáveis do tipo real} z := y + x; {VÁLIDO - variáveis do tipo real podem armazenar valores do tipo inteiro} endereco := rua olimpio teixeira, nº 17 {VÁLIDO} Ok := VERDADEIRO; {VÁLIDO}

Portugol Atribuição Exemplos Considerando as seguintes variáveis declaradas: var x: inteiro; y,z: real; ok: lógico; endereco: cadeia; z + y := 20; {INVÁLIDO somente variáveis podem receber valores} 5 := y + x; {INVÁLIDO constantes não podem receber valores}

Portugol Expressões Aritméticas Operadores Operador Operação Sintaxe + Adição op1 + op2 - Subtração op1 - op2 * Multiplicação op1 * op2 / Divisão real op1 / op2 ** Potenciação base ** potência DIV Divisão inteira op1 DIV op2 MOD Resto da divisão inteira op1 MOD op2 O resultado de uma expressão aritmética é sempre um valor numérico

Portugol Expressões Relacionais Operadores Operador Operação Sintaxe > Maior que expr1 > expr2 >= Maior ou igual expr1 >= expr2 < Menor que expr1 < expr2 <= Menor ou igual expr1 <= expr2 <> Desigualdade expr1 <> expr2 = Igualdade expr1 = expr2 Onde expr1 e expr2 são expressões de com resultados do mesmo tipo O resultado de uma expressão relacional é sempre um valor do tipo lógico

Portugol Expressões Booleanas Operadores Operador Operação Sintaxe E Conjunção (E lógico) expr1 e expr2 OU Disjunção (ou lógico) expr1 ou expr2 XOR Ou exclusivo expr1 xor expr2 Não Negação Não expr Onde expr1 e expr2 são expressões lógicas O resultado de uma expressão lógica é sempre um valor do tipo lógico

Portugol Expressões Booleanas Avaliação de expressões lógicas (booleanas) Sejam A e B operandos lógicos (variáveis ou expressões cujo resultado é um valor lógico - VERDADEIRO ou FALSO) A seguinte tabela (chamada tabela verdade) pode ser usada para verificação dos possíveis resultados da aplicação dos operadores lógicos a essas expressões

Portugol Expressões Booleanas Tabela verdade dos operadores lógicos Operandos Operadores e resultados A B A E B A OU B A XOR B NÃO A V V V V F F V F F V V F F V F V V V F F F F F V

Portugol Expressões Booleanas Exemplo de expressão booleana Considerando as variáveis A,B reais, C e D lógicas, qual será o valor da variável lógica X após a seguinte atribuição, considerando os valores 3, 4, VERDADEIRO, FALSO para as variáveis A,B,C e D respectivamente X := A+1>B e não (C e não D)

Portugol Expressões Booleanas Exemplo de expressão booleana (Resolução) Considerando a prioridade dos operadores (próxima seção) a seguinte expressão será resolvida na seguinte ordem: X := A+1>B e não (C e não D) 1) Não D = VERDADEIRO 2) C e VERDADEIRO = VERDADEIRO 3) NÃO (C e não D) = não VERDADEIRO (conforme passo 2) = FALSO 4) A+1 = 4 5) 4>4 = FALSO 6) FALSO e FALSO = FALSO 7) Logo X := FALSO; VARIÁVEIS A 3 B 4 C VALORES VERDADEIRO D FALSO X?

Portugol Prioridade dos operadores Pode-se ter mais de um operador na mesma expressão. Em alguns casos, a ordem em que são efetuadas as operações pode afetar o resultado final da expressão. Assim como na matemática, define-se uma prioridade para a realização das operações em uma expressão em um algoritmo. A ordem em que uma expressão é realizada dependerá do tipo de operador envolvido na expressão.

Portugol Prioridade dos operadores A seguinte prioridade será considerada neste curso: 1º Parênteses 2º Expressões aritméticas 2.1 Potenciação e radiciação (**, Raiz()) 2.2 Multiplicação e divisão 2.3 Adição e subtração 3º Expressões relacionais 3.1 >, <, >=, <=, =, <>

Portugol Prioridade dos operadores 4º Expressões lógicas 4.1 não 4.2 E 4.3 OU, XOR Para operadores que possuem mesma prioridade, resolve-se a expressão da esquerda para direita.

Portugol Prioridade dos operadores Exemplo: A = 1 e (B + C <> 0 ou K <= 2); A sequência de execução nesse exemplo é: 1) somar B + C 2) comparar o resultado com 0 3) verificar se K <= 2 e se A = 1 4) finalmente fazer as comparações ou e e. Note que nesse caso o ou será executado antes devido ao uso de parêntesis. Nesse caso, ficaria mais claro escrever a expressão da seguinte forma: (A = 1) e (((B+C) <> 0) ou (K <= 2)).

Portugol Tipos básicos Constituem os tipos de dados que poderão ser usados em expressões, declarações de módulos funcionais, variáveis e constantes. Real Ex: 1.01, 20.234, -30.009, 0.0 Inteiro Ex: -10, 200, -99, 0 Caractere Ex: a, B,!,.,,, (a própria vírgula), *, (espaço em branco)... Cadeia Ex: Bruno, 123, 1jogo, u*(09, fulano@gmail.com, 3741-1023 Lógico Verdadeiro, Falso

Portugol Entrada/Saída Alguns valores deverão ser obtidos como entradas externas ao algoritmo (usuário, arquivo, leitores de cartão ou de código de barra, etc.), ou mesmo enviados para uma saída (impressora, tela, arquivo, etc)

Portugol Entrada/Saída Entrada: comando leia Sintaxe Saída: comando escreva Sintaxe Exemplos Leia(<lista de variáveis>); escreva(<lista de variáveis e constantes>); Leia(a,b,c); Escreva( a variavel a vale:,a, a variavel b vale,b);

Portugol Palavras reservadas São palavras que fazem parte da estrutura da linguagem e têm significados pré-determinados Não podem ser usados como identificadores de algoritmos, funções, procedimentos ou variáveis. Exemplos: Início, fim, var, const, real, inteiro, lógico, enquanto, faça, repita, até, se, então, senão, escreva, para, escolha, caso, leia,

Algoritmos Variáveis especiais As variáveis representam a informação manipulada pelo algoritmo, e portanto, podem ocorrer em diversas situações. Além das já apresentadas, existem três casos especiais: Variáveis acumuladoras Variáveis contadoras Variáveis FLAG, sentinelas ou finalizadoras

Variáveis acumuladoras São variáveis que recebem um valor inicial geralmente constante e são incrementadas por qualquer valor (pode não ser fixo) em algum ponto do algoritmo. Exemplo: acumulador := 0;... acumulador := acumulador +1;... acumulador := acumulador + media;

Variáveis acumuladoras Exemplo: ACUMULA := 1; enquanto ACUMULA < 100 faça leia (NUM); ACUMULA Å ACUMULA + NUM; fim-enquanto;

Variáveis contadoras Variáveis que recebem um valor inicial e depois são incrementadas por um valor constante, ou seja, recebe o mesmo valor como incremento. Exemplo: contador := 0;... contador := contador +1;... contador := contador +1;

Variáveis contadoras Exemplo: CONTA := 0; repita CONTA := CONTA + 1; escreva ( Repeti o laço, CONTA, vezes ); até CONTA > 20;

Variáveis FLAG Também conhecidas como finalizadoras, sinalizadoras ou sentinelas, são usadas para sinalizar erros, condições de falha de teste, etc. Podem também informar que uma determinada situação foi alcançada e, dessa forma, serem utilizadas para interromper iterações, ou mesmo a execução do algoritmo. Geralmente variáveis do tipo booleano.

Variáveis FLAG Exemplo: (FLAG variável DATAINVALIDA) leia (dia, mes, ano); DATAINVALIDA := falso; se (dia<1 ou dia>31) então { Muda o valor do flag para sinalizar um erro ou mudança de estado } DATAINVALIDA := verdadeiro; senão se (mes<1 ou mes>12) então DATAINVALIDA := verdadeiro; fim-se; fim-se; se INVALIDA então escreva ( Erro na data - dia invalido ou mes invalido ); fim-se;

Referências FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Algoritmos estruturados. 3ed, Ed. LTC, 1999. ISBN: 9788521611806. GUIMARÃES, A. M.; LAGES, N. A. C.; Algoritmos e estruturas de dados. 1ed, Ed. LTC, 1994. ISBN: 9788521603788. FARRER, H.; BECKER, C. G.; FARIA, E. C.; MATOS, H. F.; et al. Pascal estruturado. 3ed, Ed. LTC, 1999. ISBN: 9788521611745. Velloso, F. C.; Informática: Conceitos Básicos. 7ed, Ed. Campus, 2004. ISBN: 9788535215366. http://pt.wikipedia.org/wiki/paradigma_de_programa%c3%a7%c3%a3o