INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO CAMPUS PARACATU

Tamanho: px
Começar a partir da página:

Download "INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO CAMPUS PARACATU"

Transcrição

1 MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO TRIÂNGULO MINEIRO CAMPUS PARACATU Algoritmos Curso Técnico em Informática Prof. Gustavo Alexandre de Oliveira Silva Janeiro de 2012

2

3 SUMÁRIO Capítulo 1 Lógica de Programação Conceitos Básicos de Programação Linguagens de Programação Tradutores Tipos de Linguagens de Programação Critérios de Qualidade de um Programa Paradigmas de Programação Paradigma Imperativo Paradigma Funcional Paradigma Lógico Paradigma Orientado a Objetos Capítulo 2 Algoritmos Conceito de Algoritmo Formas de Representação de Algoritmos Descrição Narrativa Fluxograma Convencional ou Diagrama de Blocos Diagrama de Chapin Pseudocódigo Um Ambiente para Descrever Algoritmos Funcionamento do nosso Computador Resolvendo um Problema Desenvolvendo Algoritmos Método para Construir um Algoritmo Fases Exemplo de Algoritmo Teste de Mesa Máximas de Programação... 26

4 Capítulo 3 Tipos de Dados Variáveis e Constantes Armazenamento de Dados na Memória Conceito e Utilidade de Variáveis Definição de Variáveis em Algoritmos Conceito e Utilidade de Constantes Definição de Constantes em Algoritmos Capítulo 4 Operadores e Expressões Operadores Operadores de Atribuição Operadores Aritméticos Operadores Relacionais Operadores Lógicos Operadores Literais Expressões Expressões Aritméticas Expressões Lógicas Expressões Literais Avaliação de Expressões Capítulo 5 Instruções Primitivas Comandos de Atribuição Comandos de Saída de Dados Comandos de Entrada de Dados Interface com o Usuário Entrada, Processamento e Saída Funções Pré-Definidas Funções Numéricas, Algébricas e Trigonométricas Funções para Manipulação de Cadeias de Caracteres (Strings)... 55

5 Capítulo 6 Estruturas de Controle do Fluxo de Execução Comandos Compostos Estrutura Sequencial Estruturas de Decisão Estruturas de Decisão Simples ( Se... então ) Estruturas de Decisão Composta ( Se... então... senão ) Estruturas de Decisão Múltipla do Tipo Caso ( Escolha... Caso... Outrocaso ) Estruturas de Repetição Laços Contados Laços Condicionais Estruturas de Controle Encadeadas ou Aninhadas Capítulo 7 Estruturas de Dados Homogêneas Matrizes de Uma Dimensão ou Vetores Operações Básicas com Vetores Exemplos de Aplicação de Vetores Matrizes com Mais de Uma Dimensão Operações Básicas com Matrizes de Duas Dimensões Capítulo 8 Algoritmos: Exercícios Estruturas Sequenciais Estruturas de Decisão Estruturas de Repetição Vetores e Matrizes Referências Bibliográficas

6

7 CAPÍTULO 1 LÓGICA DE PROGRAMAÇÃO A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. Ela permite definir a seqüência lógica para o desenvolvimento. Então o que é lógica? Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Seqüência Lógica Estes pensamentos podem ser descritos como uma seqüência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa. Seqüência Lógica são passos executados até atingir um objetivo ou solução de um problema. Instruções Na linguagem comum, entende-se por instruções um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo, para isso é necessário um conjunto de instruções colocadas em ordem seqüencial lógica. Por exemplo, se quisermos fazer uma omelete de batatas, precisaremos colocar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas, etc... É evidente que essas instruções tem que ser executadas em uma ordem adequada não se pode descascar as batatas depois de fritá-las. Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta. Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar. 1. CONCEITOS BÁSICOS DE PROGRAMAÇÃO Para armazenar um algoritmo na memória de um computador e para que ele possa, em seguida, comandar as operações a serem executadas, é necessário que ele seja programado, isto é, que seja transcrito para uma linguagem que o computador possa entender, direta ou indiretamente. 7

8 1.1. LINGUAGENS DE PROGRAMAÇÃO Linguagem é uma maneira de comunicação que segue uma forma e uma estrutura com significado interpretável. Portanto, linguagem de programação é um conjunto finito de palavras, comandos e instruções, escritos com o objetivo de orientar a realização de uma tarefa pelo computador. Logicamente, a linguagem que nós utilizamos em nosso cotidiano é diferente da linguagem utilizada pela máquina. A máquina trabalha somente com códigos numéricos (linguagem de máquina), baseados nos números 0 e 1 (sistema binário), que representam impulsos elétricos, ausente e presente. Assim, qualquer linguagem de programação deve estar situada entre dois extremos: o da linguagem natural do homem (muito clara, porém lenta) e o da linguagem de máquina (muito rápida, porém complexa). Este é o conceito de nível de linguagem: alto nível para as mais próximas da linguagem humana; baixo nível para as mais semelhantes à linguagem de máquina TRADUTORES Para que um computador possa "entender" um programa escrito em uma linguagem de alto nível, torna-se necessário um meio de tradução entre a linguagem utilizada no programa e a linguagem de máquina. Este meio pode ser de dois tipos: compilador e interpretador. Compilador: traduz o programa escrito em linguagem de alto nível (programa-fonte) para um programa equivalente escrito em linguagem de máquina (programa-objeto). Interpretador: traduz e envia para execução, instrução por instrução e o programa permanece na forma fonte. 8

9 1.3. TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Existem diversas linguagens de programação, cada uma com suas características específicas e com níveis de complexidade e objetivos diferentes: Linguagem de Máquina Única compreendida pelo computador. Específica de cada computador. Linguagens de Baixo Nível Utilizam mnemônicos para representar instruções elementares Ex.: Assembly Linguagens de Alto Nível Utiliza instruções próximas da linguagem humana de forma a facilitar o raciocínio. Exemplos: Uso científico : Fortran Propósito geral : Pascal, C, Basic Uso comercial : Cobol, Clipper Uso específico : Lisp, Prolog Visuais : Delphi, Visual Basic, Java 1.4. CRITÉRIOS DE QUALIDADE DE UM PROGRAMA Integridade: Refere-se à precisão das informações manipuladas pelo programa, ou seja, os resultados gerados pelo processamento do programa devem estar corretos, caso contrário o programa simplesmente não tem sentido. Clareza: Refere-se à facilidade de leitura do programa. Se um programa for escrito com clareza, deverá ser possível a outro programador seguir a lógica do programa sem muito esforço, assim como o próprio autor do programa entendê-lo após ter estado um longo período afastado dele. O Pascal favorece a escrita de programas com clareza e legibilidade. Simplicidade: A clareza e precisão de um programa são normalmente melhoradas tornando as coisas o mais simples possível, consistentes com os objetivos do programa. Muitas vezes tornase necessário sacrificar alguma eficiência de processamento, de forma a manter a estrutura do programa mais simples. Eficiência: Refere-se à velocidade de processamento e a correta utilização da memória. Um programa deve ter performance SUFICIENTE para atender às necessidades do problema e do usuário, bem como deve utilizar os recursos de memória de forma moderada, dentro das limitações do problema. Modularidade: Consiste no particionamento do programa em módulos menores bem identificáveis e com funções específicas, de forma que o conjunto desses módulos e a interação entre eles permitem a resolução do problema de forma mais simples e clara. 9

10 Generalidade: É interessante que um programa seja tão genérico quanto possível de forma a permitir a reutilização de seus componentes em outros projetos. 2. PARADIGMAS DE PROGRAMAÇÃO Um paradigma se define na forma como o programador lida com um determinado problema. Muitos pensam que as linguagens de programação surgiram em uma escala linear, ou seja, que na primeira geração delas o homem se adaptava às máquinas e, depois de várias outras gerações, as linguagens evoluíram umas das outras e capacitaram as máquinas a fazer as necessidades humanas. Na verdade, as linguagens surgiram em diferentes trajetórias, cada uma seguindo um determinado paradigma. Além disso, não é verdadeira a proposição que diz que uma linguagem qualquer é, sem exceção, a evolução da linguagem anterior (historicamente). As linguagens existentes hoje foram se adaptando a uma única forma de programação e às linguagens inseridas no mesmo paradigma. Dentre esses paradigmas, vamos conceituar quatro, que são considerados os principais: paradigma imperativo, lógico, funcional e orientado a objetos PARADIGMA IMPERATIVO Primeiro faça isso e depois faça aquilo. A frase acima resume o paradigma imperativo, também conhecido como paradigma procedural. O problema é analisado até que se encontre uma solução. Basicamente, é uma sequência de comandos que o computador executará, passo-a-passo, modificando dados e variáveis a fim de chegar ao resultado esperado. Algol, Basic, C e Pascal são algumas das linguagens de programação que seguem esse paradigma PARADIGMA FUNCIONAL Subdividir o problema em outras funções e resolver cada uma separadamente, pois os resultados encontrados serão utilizados posteriormente. Sobre o paradigma funcional, é fácil ilustrar através de um fluxograma. Cada bloco recebe no topo uma entrada de dados e retorna, na base, os dados de saída. A solução geral é dividida em várias funções (daí o nome funcional) que, no final, se associam para mostrar o resultado na tela. No (clássico) fluxograma ao lado, o problema fazer a média das notas de N alunos -, é dividido em duas etapas: a soma das N notas e a atribuição da quantidade N de alunos à variável contador. Ambos os resultados, soma das notas e contagem dos alunos, são utilizados na operação final, que é dividir a soma das notas pelo número de alunos. É um exemplo muito simples, mas que, penso eu, foi útil para exemplificar o conceito. 10

11 2.3. PARADIGMA LÓGICO Qual é o problema? O paradigma lógico ou declarativo caracteriza-se pelo método preciso de descrever um problema, sem se preocupar com qual algoritmo será utilizado para resolvê-lo. A idéia é criar um algoritmo universal, capaz de solucionar qualquer problema. O problema se adapta a esse algoritmo, e não o contrário. É baseado em axiomas (verdades universais) e regras de inferência. Prolog é uma linguagem lógica que ilustra essa definição PARADIGMA ORIENTADO A OBJETOS Um conjunto de classes faz a interação entre objetos (instâncias) e, com a troca de mensagens entre eles, forma-se o software como um todo. Praticamente tudo é objeto, cada qual com estrutura e comportamento próprios. Esses objetos são classificados em classes e comunicam entre si. Cada uma dessas representa um determinado fenômeno e seus objetos são organizados hierarquicamente. O conjunto de classes faz a interação entre objetos e a troca de mensagens entre eles forma o software como um todo. Esse paradigma vem ganhando cada vez mais popularidade. Isso se dá devido ao grande número de vantagens em trabalhar com orientação a objeto, como a flexibilidade do código quando se trabalha em sistemas de grande porte e com uma maior equipe de programadores. EXERCÍCIOS PROPOSTOS Questão 01: Defina, com suas palavras, os seguintes termos: a) programa b) linguagem de programação c) tradutor Questão 02: Qual a diferença entre linguagem de baixo nível e linguagem de alto nível? Questão 03: Explique a diferença entre compilador e interpretador. 11

12 Questão 04: Cite e explique com suas palavras os quatro paradigmas tradicionais de programação. 12

13 CAPÍTULO 2 ALGORITMOS O uso de algoritmos é quase tão antigo quanto a matemática. Com o passar do tempo, entretanto, ele foi bastante esquecido pela matemática. Com o advento das máquinas de calcular e mais tarde os computadores, o uso de algoritmos ressurgiu com grande vigor, como uma forma de indicar o caminho para a solução dos mais variados problemas. Algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Algoritmo é o caminho para a solução de um problema, e em geral, os caminhos que levam a uma solução são muitos. Ao longo dos anos surgiram muitas formas de representar os algoritmos, alguns utilizando linguagens semelhantes às linguagens de programação e outras utilizando formas gráficas. O aprendizado de algoritmos não se consegue a não ser através de muitos exercícios. 1. CONCEITO DE ALGORITMO A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas dispositivos mecânicos (como as máquinas industriais), eletrônicos (como os computadores), ou de natureza mista (como os robôs). Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, é necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser realizadas. À especificação da seqüência ordenada de passos que deve ser seguida para a realização de uma tarefa, garantindo a sua repetibilidade, dá-se o nome de algoritmo. Embora esta definição de algoritmo seja correta, podemos definir algoritmo, de maneira informal e completa como: 13

14 Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores como saída. Um algoritmo deve sempre possuir pelo menos um resultado, normalmente chamado de saída, e satisfazer a propriedade da efetividade, isto é, todas as operações especificadas no algoritmo devem ser suficientemente básicas para que possam ser executadas de maneira exata e num tempo finito. Na prática não é importante ter-se apenas um algoritmo, mas sim, um bom algoritmo. O mais importante de um algoritmo é a sua correção, isto é, se ele resolve realmente o problema proposto e o faz exatamente. Para se ter um algoritmo, é necessário: Que se tenha um número finito de passos Que cada passo esteja precisamente definido, sem possíveis ambigüidades Que existam zero ou mais entradas tomadas de conjuntos bem definidos Que existam uma ou mais saídas Que exista uma condição de fim sempre atingida para quaisquer entradas e num tempo finito. Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo a passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador. 2. FORMAS DE REPRESENTAÇÃO DE ALGORITMOS Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. Algumas formas de representação de algoritmos tratam dos problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado, existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer a idéia principal, o algoritmo, dificultando seu entendimento. Dentre as formas de representação de algoritmos mais conhecidas, sobressaltam: a Descrição Narrativa o Fluxograma Convencional o Diagrama de Chapin o Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol 14

15 2.1. DESCRIÇÃO NARRATIVA Nesta forma de representação, os algoritmos são expressos diretamente em linguagem natural. Como por exemplo, têm-se os algoritmos seguintes: Troca de um pneu furado: Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas Cálculo da média de um aluno: Obter as notas da primeira e da segunda prova Calcular a média aritmética entre as duas Se a média for maior ou igual a sete, o aluno foi aprovado, senão ele foi reprovado Esta representação é pouco usada na prática porque o uso de linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Por exemplo, a instrução afrouxar ligeiramente as porcas no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: afrouxar a porca, girando-a de 30º no sentido anti-horário FLUXOGRAMA CONVENCIONAL OU DIAGRAMA DE BLOCOS É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintas. Tal propriedade facilita o entendimento das idéias contidas nos algoritmos. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma unidade de armazenamento de dados ou um monitor de vídeo. A figura abaixo mostra as principais formas geométricas usadas em fluxogramas. Início e final do fluxograma Decisão Operação de entrada de dados Seta de Fluxo de Dados 15

16 Operação de saída de dados em impressora Conector utilizado quando é preciso particionar o diagrama, colocando uma letra ou número no símbolo para identificar os pares da conexão Operação de saída de dados em vídeo Conector específico para indicar conexão do fluxo de execução em outra página Operações de atribuição e chamada ou retorno de subalgoritmo Preparação operações que utilizam uma chave que modifica a execução do programa Principais formas geométricas usadas em fluxogramas De modo geral, o fluxograma se resume a um único símbolo inicial, por onde a execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única seqüência de execução das instruções. Isto pode ser mais bem visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (normalmente dois caminhos), representando uma bifurcação no fluxo. Um diagrama de blocos é uma forma de fluxograma usada e desenvolvida por profissionais da programação, tendo como objetivo descrever o método e a seqüência do processo dos planos num computador. Pode ser desenvolvido em qualquer nível de detalhe que seja necessário. Quando se desenvolve um diagrama para o programa principal, por exemplo, seu nível de detalhamento pode chegar até as instruções. Esta ferramenta usa diversos símbolos geométricos, os quais estabelecerão as seqüências de operações a serem efetuadas em um processamento computacional. Após a elaboração do diagrama de bloco, é realizada a codificação do programa. A figura ao lado mostra a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma. 16

17 2.3. DIAGRAMA DE CHAPIN O diagrama foi criado por Ned Chapin a partir de trabalhos de Nassi-Shneiderman, os quais resolveram substituir o fluxograma tradicional por um diagrama que apresenta uma visão hierárquica e estruturada da lógica do programa. A grande vantagem de usar este tipo de diagrama é a representação das estruturas que tem um ponto de entrada e um ponto de saída e são compostas pelas estruturas básicas de controle de seqüência, seleção e repartição. Enquanto é difícil mostrar o embutimento e a recursividade com o fluxograma tradicional, torna-se mais simples mostrá-lo com o diagrama de Chapin, bem como codificá-lo futuramente na conversão de código português estruturado ou pseudocódigos. A figura abaixo apresenta um exemplo do tipo de diagrama de Chapin para o algoritmo de cálculo da média de um aluno PSEUDOCÓDIGO Esta forma de representação de algoritmos, também conhecida como português estruturado ou portugol, é bastante rica em detalhes e, por assemelhar-se bastante à forma em que os programas são escritos. Ela encontra muita aceitação, sendo, portanto a forma de representação de algoritmos que utilizaremos nesta disciplina. Na verdade, esta representação é suficientemente geral para permitir que a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. Representação de Um Algoritmo na Forma de Pseudocódigo A representação de um algoritmo na forma de pseudocódigo é a seguinte: algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> inicio <corpo_do_algoritmo> fimalgoritmo 17

18 onde: Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de pseudocódigo. <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de distingui-lo dos demais. <declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos. <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são definidos os subalgoritmos. Início e Fim são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo. Como exemplo, a seguir é mostrado a representação do algoritmo de cálculo da média de um aluno na forma de um pseudocódigo. algoritmo media_aluno var N1, N2, media inicio leia N1, N2 media <- (N1+N2)/2 se media >= 7 entao escreva Aprovado senao escreva Reprovado fimalgoritmo 3. UM AMBIENTE PARA DESCREVER ALGORITMOS Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O nosso computador hipotético apresentará a seguinte organização: 18

19 Cada uma das partes constituintes da figura acima tem os seguintes significados: (1) Dispositivo de entrada (o teclado): meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos em nosso computador hipotético; (2) Unidade Lógica e Aritmética (ULA): parte responsável pelas operações matemáticas e avaliações lógicas; (3) Unidade de Controle: exerce controle sobre as demais partes do nosso computador. É uma verdadeira gerente que distribui tarefas às outras unidades; (4) Memória: guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na memória; (5) Dispositivo de Saída (vídeo e impressora): meio que se dispõe para apresentação dos resultados obtidos FUNCIONAMENTO DO NOSSO COMPUTADOR Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer computador pode executar: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela são exemplos destas operações. Elas servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados; b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão); c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas (2>6? X=Y?); d) movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória RESOLVENDO UM PROBLEMA Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir: a) saber quais são os números; b) calcular a soma dos números; c) responder à questão com o valor do resultado. 19

20 Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: a) operação de entrada de dados dos números ; b1) movimento do valor dos números entre a memória e a ULA; b2) operação aritmética de somar os 2 números; b3) movimentação do resultado da ULA para guardar na memória; c) operação de saída do resultado, que está guardado na memória, para o dispositivo de saída desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação matemática, não sendo explicitados. Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas. Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto nível). A seqüência de operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim: leia X,Y SOMA X + Y escreva SOMA 4. DESENVOLVENDO ALGORITMOS Algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar em algoritmo como uma receita, uma seqüência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas. Algoritmo é a lógica necessária para o desenvolvimento de um programa. Programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, entre outras) e que são interpretados e executados por uma máquina, no caso um computador. Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real. Em um modo geral, um algoritmo segue um determinado padrão de comportamento, com objetivo de alcançar a solução de um problema. 20

21 Padrão de comportamento: imagine a seqüência de números: 1, 6, 11, 16, 21, 26,... Para determinar qual será o sétimo elemento dessa série, precisamos descobrir qual é a sua regra de formação, isto é, qual é o seu padrão de comportamento. Como a seqüência segue uma certa constância, facilmente determinada, somos capazes de determinar qual seria o sétimo termo ou outro termo qualquer. Descrevemos então uma atividade bem cotidiana: trocar uma lâmpada. Apesar de parecer óbvia demais, muitas vezes fazemos este tipo de atividade inconscientemente, sem percebermos os pequenos detalhes. Vejamos como seria descrevê-la passo a passo: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar a lâmpada velha; colocar a lâmpada nova. Para se trocar a lâmpada, é seguida uma determinada seqüência de ações, representadas através desse algoritmo. Como isso pode ser seguido por qualquer pessoa, estabelece-se aí um padrão de comportamento. A sequencialização tem por objetivo reger o fluxo de execução, determinando qual ação vem a seguir. O algoritmo anterior tem um objetivo bem específico: trocar uma lâmpada. E se a lâmpada não estiver queimada? O algoritmo faz com ela seja trocada do mesmo modo, não prevendo essa situação. Para solucionar este problema, podemos efetuar um teste seletivo, verificando se a lâmpada está ou não queimada: pegar uma escada; posicionar embaixo da lâmpada; buscar uma lâmpada nova; ligar o interruptor; se a lâmpada não acender, então: subir na escada; retirar a lâmpada velha; colocar a lâmpada nova. Dessa forma, algumas ações estão ligadas à condição (lâmpada não acender). No caso da lâmpada acender, as três linhas não serão executadas. Em algumas situações, embora o algoritmo resolva o problema proposto, a solução pode não ser a mais eficiente. Exemplo: três alunos devem resolver um determinado problema: O aluno A conseguiu resolver o problema executando 35 linhas de programa. O aluno B resolveu o problema executando 10 linhas de programa O aluno C resolveu o problema executando 54 linhas de programa. 21

22 Obviamente, o algoritmo desenvolvido pelo aluno B é menor e mais eficiente que os demais. Isso significa que há código desnecessário nos demais programas. Dessa forma, podemos otimizar o algoritmo anterior, uma vez que buscamos a escada e a lâmpada sem saber se serão necessárias: ligar o interruptor; se a lâmpada não acender, então: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar a lâmpada velha; colocar a lâmpada nova. Podemos considerar ainda que a lâmpada nova pode não funcionar. Nesse caso devemos trocá-la novamente, quantas vezes for necessário, até que a lâmpada acenda: ligar o interruptor; se a lâmpada não acender, então: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar a lâmpada velha; colocar a lâmpada nova; se a lâmpada não acender, então: retirar a lâmpada; colocar outra lâmpada; se a lâmpada não acender, então:... Observamos que o teste da lâmpada nova é efetuado por um conjunto de ações: se a lâmpada não acender então: retirar a lâmpada colocar outra lâmpada Em vez de escrevermos várias vezes este conjunto de ações, podemos alterar o fluxo sequencial de execução do programa, de forma que, após executar a ação coloque outra lâmpada, voltemos a executar a ação se a lâmpada não acender. Precisa-se então determinar um limite para tal repetição, para garantir que ela cesse quando a lâmpada finalmente acender: enquanto a lâmpada não acender, faça: retire a lâmpada coloque outra lâmpada 22

23 Uma versão final do algoritmo, que repete ações até alcançar o seu objetivo: trocar a lâmpada queimada por uma que funcione, é apresentada abaixo. ligar o interruptor; se a lâmpada não acender, então: pegar uma escada; posicionar a escada embaixo da lâmpada; buscar uma lâmpada nova; subir na escada; retirar a lâmpada velha; colocar a lâmpada nova; enquanto a lâmpada não acender, faça: retirar a lâmpada; colocar outra lâmpada. Até agora, estamos efetuando a troca de uma única lâmpada. Todo o procedimento poderia ser repetido 10 vezes, por exemplo, no caso de querermos trocar 10 lâmpadas. Inicialmente, tínhamos um pequeno conjunto de ações que deveriam ser executadas (estrutura sequencial). Através de uma condição, incluímos posteriormente uma estrutura de seleção. Na necessidade de repetir um determinado trecho do algoritmo, construiu-se no final uma estrutura de repetição. 5. MÉTODO PARA CONSTRUIR UM ALGORITMO Para escrever um algoritmo precisamos descrever a seqüência de instruções, de maneira simples e objetiva. Para isso utilizaremos algumas técnicas: Usar somente um verbo por frase Imaginar que você está desenvolvendo um algoritmo para pessoas que não trabalham com informática Usar frases curtas e simples Ser objetivo Procurar usar palavras que não tenham sentido dúbio Utilizando os conceitos já desenvolvidos, esquematizaremos um método para construir um algoritmo logicamente correto: 23

24 1. Ler atentamente o enunciado Deve-se reler o enunciado de um exercício quantas vezes for necessário, até compreendê-lo completamente. A maior parte da resolução de um exercício consiste na compreensão completa do enunciado. 2. Retirar a relação das entradas de dados do enunciado Através do enunciado, descobrimos quais são os dados que devem ser fornecidos ao programa, via teclado, a partir dos quais são desenvolvidos os cálculos. Obs. Pode haver algum algoritmo que não necessite da entrada de dados (pouco comum). 3. Retirar do enunciado, a relação das saídas das informações Através do enunciado podemos descobrir quais são as informações que devem ser mostradas para compor o resultado final, objetivo do algoritmo. 4. Determinar o que deve ser feito para transformar as entradas nas saídas especificadas Nessa fase é que teremos a construção do Algoritmo propriamente dito. Devemos determinar qual sequência de passos ou ações é capaz de transformar um conjunto de dados nas informações de resultado. Para isso, utilizamos os fatores descritos anteriormente, tais como legibilidade, portabilidade, método cartesiano e planejamento reverso, e finalmente podemos construir o algoritmo FASES Vimos que ALGORITMO é uma seqüência lógica de instruções que podem ser executadas. É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo, como por exemplo, como fazer arroz doce ou então calcular o saldo financeiro de um estoque. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais. Onde temos: ENTRADA: São os dados de entrada do algoritmo PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final SAÍDA: São os dados já processados 24

25 Analogia com o homem 5.2. EXEMPLO DE ALGORITMO Imagine o seguinte problema: Calcular a média final dos alunos da 3ª Série. Os alunos realizarão quatro provas: P1, P2, P3 e P4. Onde: Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? R: Os dados de entrada são P1, P2, P3 e P4 b) Qual será o processamento a ser utilizado? R: O procedimento será somar todos os dados de entrada e dividi-los por 4 (quatro) c) Quais serão os dados de saída? R: O dado de saída será a média final Algoritmo: Receba a nota da prova1 Receba a nota de prova2 Receba a nota de prova3 Receba a nota da prova4 Some todas as notas e divida o resultado por 4 Mostre o resultado da divisão 5.3. TESTE DE MESA Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de TESTE DE MESA, que significa seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. 25

26 Normalmente, montamos uma tabela com os nomes das variáveis utilizadas em nosso algoritmo e seguimos, passo a passo, o que acontece com o conteúdo de cada uma delas. Veja o exemplo: P1 P2 P3 P4 Média 6. MÁXIMAS DE PROGRAMAÇÃO Máximas de Programação são regras práticas para a elaboração de algoritmos com qualidade. Alguns exemplos são apresentados a seguir. 1. Algoritmos devem ser feitos para serem lidos por seres humanos: tenha em mente que seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo), de tal forma que possam ser corrigidos, modificados, ou receber manutenção; 2. Escreva os comentários no momento em que estiver escrevendo o algoritmo: um algoritmo não documentado é um dos piores erros que um programador pode cometer; é sinal de amadorismo. Como o objetivo da escrita de comentários é facilitar o entendimento do algoritmo, eles devem ser tão bem concebidos quanto o próprio algoritmo, e a melhor maneira de conseguir isso é escrevê-los nos momentos de maior intimidade com os detalhes, ou seja, durante a resolução do problema. Lembre-se: é melhor ter um algoritmo sem comentários do que ter um algoritmo com comentários desatualizados; 3. Os comentários deverão acrescentar alguma coisa às pessoas que farão manutenção em seu algoritmo: o conjunto de comandos nos diz o que está sendo feito; os comentários deverão nos dizer o porquê; 4. Use comentários no cabeçalho do algoritmo: todo algoritmo ou procedimento deverá ter comentários em seu início para explicar o que ele faz e fornecer instruções para seu uso. Alguns destes comentários seriam: a. Uma descrição do que faz o algoritmo; b. Como utilizá-lo; c. Explicação dos significados das variáveis mais importantes; d. Estruturas de dados utilizadas; 26

27 e. Data da escrita; f. Autor; g. Nomes de quaisquer métodos especiais utilizados, como referências nas quais mais informações possam ser encontradas. 5. Utilize espaços em branco para melhorar a legibilidade: espaços em branco, inclusive linhas em branco, são muito valiosos, pois melhoram a aparência de um algoritmo. Veja: a. Deixar uma linha em branco entre as declarações e o corpo do algoritmo; b. Deixar uma linha em branco antes e outra depois de um comentário; c. Separar grupos de comandos que executam funções lógicas distintas por uma ou mais linhas em branco; d. Utilizar brancos para indicar precedências de operadores. Em vez de A + B * C é bem mais agradável a forma A + B*C. 6. Escolha nomes representativos para suas variáveis: os nomes das variáveis deverão identificar o melhor possível as funcionalidades que elas representam. Por exemplo, X <- Y + Z é muito menos claro que PREÇO <- CUSTO + LUCRO. Uma seleção adequada de nomes de variáveis é o princípio mais importante da legibilidade de algoritmos; 7. Um comando por linha é suficiente: a utilização de vários comandos por linha é prejudicial, por várias razões, entre as quais se destacam: a. O algoritmo pode ficar ilegível; b. O algoritmo fica mais difícil de ser depurado. Veja um exemplo: A <- 14, 2 ; I<-1; enquanto I<10 faça X <- X + 1 ; K<-I*K;I<-I+1 fim-enquanto; Agora, com cada comando em uma linha: A <- 14,2 I <- 1 enquanto I<10 faça X <- X + 1 K <- I * K I <- I + 1 fim-enquanto; Caso desejássemos incluir um novo comando dentro do enquanto, seria necessário reescrever toda a linha. 8. Utilize parênteses para aumentar a legibilidade e prevenir-se contra erros. Veja uns exemplos, primeiro, com pouco parênteses: 27

28 A * B * C / (D * E * F) A * B / C * D / E * F A / B / C / D X > Y ou Q A + B < C Agora, com parênteses extras: (A * B * C) / (D * E * F) ((((A * B) / C) * D) / E) * F ((A / B) / C) / D (X > Y) ou Q (A + B) < C 9. Utilize identação para montar a estrutura lógica do algoritmo: a identação não deve ser feita de forma caótica, mas segundo certos padrões estabelecidos; 10. Sempre que for feita uma modificação no algoritmo, os comentários associados devem ser alterados, e não apenas os comandos. Antes não comentar do que deixar um comentário errado. Para concluir, vamos ver um trecho de um algoritmo mal escrito. A análise das regras de programação violadas será apresentada a seguir. inicio inteiro: XPT, I, II, III, IIIII leia (XPT, IIIII) I <- 1 enquanto I < XPT faça se I < IIIII então se IIIII = 20 então II <- XPT + 2 senão III <- IIIII ^ XPT; senão III <- XPT IIIII <- III + I; fim-se; fim-se; //sem comentários I <- I + 1 fim-enquanto; imprima (I, II, IIIII, III, XPT); fim. Esse código fere todas as regras pregadas pelas máximas de programação, sendo que as mais graves são: falta de identação, nomes não significativos para as variáveis e ausência de comentários. 28

29 EXERCÍCIOS PROPOSTOS Questão 01: Analise o fluxograma abaixo e explique o que ele faz. Questão 02: Analise o fluxograma abaixo e explique o que ele faz. 29

30 Questão 03: Analise o fluxograma abaixo e explique o que ele faz. Questão 04: Analise o fluxograma abaixo e explique o que ele faz. 30

31 Questão 05: Analise o fluxograma abaixo e explique o que ele faz. Questão 06: Analise o pseudocódigo abaixo e responda. Considere que C1, C2, C3, C4 e C5 representam comandos quaisquer, e B1, B2 e B3 sejam testes lógicos. algoritmo quest06 var b1, b2, b3 : logico inicio se b1 = verdadeiro entao C1 senao se b2 = verdadeiro entao se b3 = verdadeiro entao C2 senao C3 Fimse C4 Fimse fimse C5 fimalgoritmo 31

32 a) Se b1 = verdadeiro, b2 = verdadeiro e b3 = falso, quais comandos serão executados pelo algoritmo? b) Se b1 = falso, b2 = verdadeiro e b3 = falso, quais comandos serão executados? c) Quais valores lógicos b1, b2 e b3 devem receber para que somente o comando C5 seja executado? d) Se b1 = falso, b2 = verdadeiro e b3 = verdadeiro, quais comandos serão executados? Questão 07: Qual é o valor de L no final da execução do algoritmo abaixo? algoritmo quest07 var a, b, c : logico x, y, L : real inicio a <- falso b <- veradeiro c <- falso x <- 1.5 y <- 3.2 x <- x + 1 se (c ou ((x+y > 5) e (nao (a e b)))) entao L <- 0; senao L <- 1; fimse fimalgoritmo Questão 08: Escreva um algoritmo em fluxograma que leia um número inteiro e imprima o seu sucessor e o seu antecessor. Questão 09: Escreva um programa em fluxograma para calcular a área de um triângulo, sendo dados a sua base e a sua altura. Questão 10: Escreva um algoritmo em fluxograma que leia um número qualquer e informe seu quadrado e sua raiz quadrada. 32

33 Questão 11: Antes do racionamento de energia der decretado, quase ninguém falava em quilowatts. Mas agora, todos incorporaram essa palavra em seu vocabulário. Sabendo-se que 100 quilowatts de energia custa um sétimo do salário mínimo, faça um algoritmo em fluxograma que receba o valor do salário mínimo e a quantidade de quilowatts gasta por uma residência e calcule: a) O valor em reais de cada quilowatt b) O valor em reais a ser pago c) O novo valor a ser pago por essa residência com um desconto de 10% Imprima todos os resultados na tela. Questão 12: Faça um algoritmo em fluxograma que leia três números quaisquer e informe qual deles é o maior e qual deles é o menor. Questão 13: Faça um algoritmo em fluxograma para ler os valores dos três lados de um triângulo. Verificar e mostrar se é um triângulo ou não e qual tipo. Dica 1: Triângulo é uma forma geométrica composta por três lados, onde cada lado é menor que a soma dos outros dois lados. Dica 2: Um triângulo é: isósceles (quando possui dois lados iguais e um lado diferente), escaleno (quando possui todos os lados diferentes) ou equilátero (quando possui todos os lados iguais). Questão 14: Segundo uma tabela médica, o peso ideal de uma pessoa está relacionado com a altura e o sexo. Faça um algoritmo em fluxograma que receba a altura e o sexo de uma pessoa, calcule e imprima o seu peso ideal, utilizando as seguintes fórmulas: Para homens (72.7 * alt) 58 Para mulheres (62.1 * alt) 44.7 Questão 15: Faça um algoritmo que leia o percurso de uma viagem em quilômetros e o tipo de carro utilizado. O programa deve apresentar uma estimativa de consumo de combustível, sabendo-se que o carro tipo A faz 12 km com um litro, o tipo B faz 9 km e o tipo C faz 8 km por litro. O programa deve ainda informar o valor estimado da viagem (em reais) sabendo-se que o preço do litro do combustível é R$ 2,80. 33

34 Questão 16: Deseja-se calcular a conta de consumo de energia elétrica de um consumidor. Para isto, escreva um programa em fluxograma que leia o código do consumidor, o preço do Kw e a quantidade de Kw consumido, e exiba o código do consumidor e o total a pagar. total a pagar = preço x quantidade / total a pagar mínimo = R$ 11,20 Questão 17: Elabore um algoritmo em fluxograma que imprima todos os números inteiros de 1 a 100. Questão 18: Faça um programa em fluxograma que leia um número N, some todos os números inteiros de 1 a N, e mostre o resultado obtido. Questão 19: A série de Fibonacci é formada pela sequencia: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... Escreva um algoritmo em fluxograma que gere a sequencia de Fibonacci até um dado termo digitado pelo usuário. Questão 20: Supondo que a população de um país A seja da ordem de habitantes com uma taxa anual de crescimento de 3% e que a população de B seja habitantes com uma taxa de crescimento de 1.5%. Faça um programa em fluxograma que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento. 34

35 CAPÍTULO 3 TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. Os dados propriamente ditos, que correspondem à porção das informações a serem processadas pelo computador. A classificação apresentada a seguir não se aplica a nenhuma linguagem de programação específica; pelo contrário, ela sintetiza os padrões utilizados na maioria das linguagens. TIPOS INTEIROS São caracterizados como tipos inteiros, os dados numéricos positivos ou negativos. Excluindo-se destes qualquer número fracionário. Como exemplo deste tipo de dado, têm-se os valores: 35, 0, -56, 1024 entre outros. TIPOS REAIS São caracterizados como tipos reais, os dados numéricos positivos e negativos e números fracionários. Como exemplo deste tipo de dado, têm-se os valores: 35, 0, -56, 1.2, entre outros. TIPOS CARACTERES São caracterizados como tipos caracteres, as sequências contendo letras, números e símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas ( ). Este tipo de dado também é conhecido como alfanumérico, string, literal ou cadeia. Como exemplo deste tipo de dado, têm-se os valores: Programação, Rua Alfa, 52 Apto 1, Fone , ,, 7 entre outros. TIPOS LÓGICOS São caracterizados como tipos lógicos os dados com valor verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo booleano, devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. 35

36 1. VARIÁVEIS E CONSTANTES 1.1. ARMAZENAMENTO DE DADOS NA MEMÓRIA Para armazenar os dados na memória, imagine que a memória de um computador é um grande arquivo com várias gavetas, onde cada gaveta pode armazenar apenas um único valor (seja ele numérico, caractere ou lógico). Se for um grande arquivo com várias gavetas, é necessário identificar com um nome a gaveta que se pretende utilizar. Desta forma o valor armazenado pode ser utilizado a qualquer momento CONCEITO E UTILIDADE DE VARIÁVEIS Têm-se como definição de variável tudo aquilo que é sujeito a variações, que é incerto, instável ou inconstante. E quando se fala de computadores, temos que ter em mente que o volume de informações a serem tratadas é grande e diversificado. Desta forma, os dados a serem processados serão bastante variáveis. Como visto anteriormente, informações correspondentes a diversos tipos de dados são armazenadas nas memórias dos computadores. Para acessar individualmente cada uma destas informações, em princípio, seria necessário saber o tipo de dado desta informação (ou seja, o número de bytes de memória por ela ocupados) e a posição inicial deste conjunto de bytes na memória. Percebe-se que esta sistemática de acesso a informações na memória é bastante ilegível e difícil de se trabalhar. Para contornar esta situação criou-se o conceito de variável, que é uma entidade destinada a guardar uma informação. Basicamente, uma variável possui três atributos: um nome, um tipo de dado associado à mesma e a informação por ela guardada. Toda variável possui um nome que tem a função de diferenciá-la das demais. Cada linguagem de programação estabelece suas próprias regras de formação de nomes de variáveis. Adotaremos para os algoritmos, as seguintes regras: um nome de variável deve necessariamente começar com uma letra; um nome de variável não deve conter nenhum símbolo especial, exceto a sublinha (_) e nenhum espaço em branco; um nome de variável não poderá ser uma palavra reservada a uma instrução de programa. Exemplos de nomes de variáveis: Salario 1ANO ANO1 a casa correto errado (não começou uma letra) correto errado (contém o caractere branco) 36

37 SAL/HORA errado (contém o caractere / ) SAL_HORA correto _DESCONTO errado (não começou com uma letra) Obviamente é interessante adotar nomes de variáveis relacionados às funções que serão exercidas pelas mesmas dentro de um programa. Outro atributo característico de uma variável é o tipo de dado que ela pode armazenar. Este atributo define a natureza das informações contidas na variável. Por último há o atributo informação, que nada mais é do que a informação útil contida na variável. Uma vez definidos, os atributos nome e tipo de dado de uma variável não podem ser alterados e assim permanecem durante toda a sua existência, desde que o programa que a utiliza não seja modificado. Por outro lado, o atributo informação está constantemente sujeito a mudanças de acordo com o fluxo de execução do programa. Em resumo, o conceito de variável foi criado para facilitar a vida dos programadores, permitindo acessar informações na memória dos computadores por meio de um nome, em vez do endereço de uma célula de memória DEFINIÇÃO DE VARIÁVEIS EM ALGORITMOS Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. Mesmo que algumas linguagens de programação (como BASIC e FORTRAN) dispensam esta definição, uma vez que o espaço na memória é reservado à medida que novas variáveis são encontradas no decorrer do programa, nos algoritmos usaremos a definição de variáveis por assemelhar-se com as principais linguagens de programação como Pascal e C. Nos algoritmos, todas as variáveis utilizadas serão definidas no início do mesmo, por meio de um comando de uma das seguintes formas: VAR <nome_da_variável> : <tipo_da_variável> ou VAR <lista_de_variáveis> : <tipo_das_variáveis> a palavra-chave VAR deverá estar presente sempre e será utilizada um única vez na definição de um conjunto de uma ou mais variáveis; numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo; para tal, deve-se separar os nomes das mesmas por vírgulas; variáveis de tipos diferentes devem ser declaradas em linhas diferentes. 37

38 Exemplos de definição de variáveis: VAR nome: caracter[35] idade: inteiro salário: real tem_filhos: lógico No exemplo acima foram declaradas quatro variáveis: a variável nome, capaz de armazenar dados caractere de comprimento 35 (35 caracteres); a variável idade, capaz de armazenar um número inteiro; a variável salário, capaz de armazenar um número real; a variável tem_filhos, capaz de armazenar uma informação lógica CONCEITO E UTILIDADE DE CONSTANTES Têm-se como definição de constante tudo aquilo que é fixo ou estável. Existirão vários momentos em que este conceito deverá estar em uso, quando desenvolvermos programas. É comum definirmos uma constante no início do programa, e a utilizarmos no decorrer do programa, para facilitar o entendimento, a programação ou então para poupar tempo no caso de ter que alterar o seu valor, de modo que alterando uma única vez a declaração da constante, todos os comandos e expressões que a utilizam são automaticamente atualizados DEFINIÇÃO DE CONSTANTES EM ALGORITMOS Nos algoritmos, todas as constantes utilizadas serão definidas no início do mesmo, por meio de um comando da seguinte forma: CONST <nome_da_constante> = <valor> Exemplo de definição de constantes: CONST pi = nome_da_empresa = Enxuga Gelo SA A atribuição de valores a variáveis é feita com o operador <-. Do seu lado esquerdo fica a variável à qual está sendo atribuído o valor, e à sua direita pode-se colocar qualquer expressão (constantes, variáveis, expressões numéricas), desde que seu resultado tenha tipo igual ao da variável. 38

39 Alguns exemplos de atribuições, usando as variáveis declaradas acima: a <- 3 Valor1 <- 1.5 Valor2 <- Valor1 + a vet[1] <- vet[1] + (a * 3) matriz[3,9] <- a/4 5 nome_do_aluno <- "José da Silva" sinalizador <- FALSO EXERCÍCIOS PROPOSTOS Questão 01: O que é constante? Dê dois exemplos. Questão 02: O que é variável? Dê dois exemplos. Questão 03: Escreva o tipo de dado ideal para se representar as seguintes informações: a) O número da conta bancária b) A altura de uma pessoa em metros c) A placa de um veículo d) O número de filhos de uma pessoa e) A população de um país f) A cor de um objeto g) O resultado da verificação se um número é par ou não Questão 04: Identifique os tipos mais prováveis dos seguintes dados: a) 'Processamento de Dados' b)

40 c) '4.5E10' d) TRUE e) '?' f) ' ' g) -5.3E-02 h) '.05' i) 'FALSE' j) 0 Questão 05: Faça um teste de mesa no diagrama de bloco abaixo e preencha a tabela ao lado com os dados do teste. Salário Abono Salnovo 600,00 60,00 350,00 40

41 CAPÍTULO 4 OPERADORES E EXPRESSÕES 1. OPERADORES Operadores são elementos fundamentais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expressão relaciona dois operandos (os números 3 e 2) por meio do operador (+) que representa a operação de adição. De acordo com o número de operandos sobre os quais os operadores atuam, os últimos podem ser classificados em: binários, quando atuam sobre dois operandos. Esta operação é chamada diádica. Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão). unários, quando atuam sobre um único operando. Esta operação é chamada monádica. Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal. Outra classificação dos operadores é feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação. Segundo esta classificação, os operandos dividem-se em aritméticos, lógicos e literais. Esta divisão está diretamente relacionada com o tipo de expressão onde aparecem os operadores. Um caso especial é o dos operadores relacionais, que permitem comparar pares de operandos de tipos de dados iguais, resultando sempre num valor lógico OPERADORES DE ATRIBUIÇÃO Um operador de atribuição serve para atribuir um valor a uma variável. Em Algoritmo usamos o operador de atribuição: <- A sintaxe de um comando de atribuição é: nome_da_variável <- expressão A expressão localizada no lado direito do sinal é avaliada e armazenado o valor resultante na variável à esquerda. O nome da variável aparece sempre sozinho, no lado esquerdo do sinal de igual deste comando. 41

42 1.2. OPERADORES ARITMÉTICOS Os operadores aritméticos se relacionam às operações aritméticas básicas, conforme as tabelas abaixo: Operadores unários, isto é, são aplicados a um único operando. São os operadores aritméticos de maior precedência. Exemplos: -3, +x. Enquanto o operador unário - inverte o sinal do seu operando, o operador + não altera em nada o seu valor. + mais (positivo) menos (negativo) Operador de divisão inteira. Por exemplo, 5 \ 2 = 2. Tem a mesma precedência do operador de divisão tradicional. \ divisão inteira Operadores aritméticos tradicionais. Por convenção, * e / têm precedência sobre + e -. Para modificar a ordem de avaliação das operações, é necessário usar parênteses como em qualquer expressão aritmética. + adição subtração * multiplicação / divisão Operador de módulo (isto é, resto da divisão inteira). Por exemplo, 8 MOD 3 = 2. Tem a mesma precedência do operador de divisão tradicional. MOD ou % módulo Operador de potenciação. Por exemplo, 5 ^ 2 = 25. Tem a maior precedência entre os operadores aritméticos binários (aqueles que têm dois operandos). ^ potenciação 42

43 A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados dentro de uma mesma expressão. Operador Tipo Operação Prioridade + Binário Adição 4 - Binário Subtração 4 * Binário Multiplicação 3 / Binário Divisão 3 MOD Binário Resto da Divisão 3 \ Binário Divisão Inteira 3 ^ Binário Potenciação 2 + Unário Manutenção do Sinal 1 - Unário Inversão do Sinal OPERADORES RELACIONAIS Os operadores relacionais são operadores binários que devolvem os valores lógicos verdadeiro e falso. = igual a < menor que > maior que <= menor ou igual a >= maior ou igual a <> diferente de Importante: Em alguns interpretadores, como VisuAlg, as comparações entre strings não diferenciam as letras maiúsculas das minúsculas. Assim, "ABC" é igual a "abc". Valores lógicos obedecem à seguinte ordem: FALSO < VERDADEIRO. Estes valores são somente usados quando se deseja efetuar comparações. Comparações só podem ser feitas entre objetos de mesma natureza, isto é variáveis do mesmo tipo de dado. O resultado de uma comparação é sempre um valor lógico. 43

44 Por exemplo, digamos que a variável inteira escolha contenha o valor 7. A primeira das expressões a seguir fornece um valor falso, e a segunda um valor verdadeiro: escolha <= 5 escolha > OPERADORES LÓGICOS Os operadores lógicos ou booleanos são usados para combinar expressões relacionais. Também devolvem como resultado valores lógicos verdadeiro ou falso. nao Operador unário de negação. nao VERDADEIRO = FALSO, e nao FALSO = VERDADEIRO. Tem a maior precedência entre os operadores lógicos. ou e xou Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro. Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem verdadeiros. Operador que resulta VERDADEIRO se seus dois operandos lógicos forem diferentes, e FALSO se forem iguais. Uma expressão relacional ou lógica retornará falso para o valor lógico falso e verdadeiro para o valor lógico verdade. Fornecendo dois valores ou expressões lógicas, representadas por expressão1 e expressão2, podemos descrever as quatro operações lógicas a seguir: expressão1 E expressão2 é verdadeiro somente se ambas, expressão1 e expressão2, forem verdadeiras. Se uma for falsa, ou se ambas forem falsas, a operação E também será falsa. expressão1 OU expressão2 é verdadeiro se tanto a expressão1 como a expressão2 forem verdadeiras. As operações OU só resultam em valores falsos se ambas, expressão1 e expressão2, forem falsas. NÃO expressão1 avalia verdadeiro se expressão1 for falsa; de modo contrário, a expressão NÃO resultará em falso, se expressão1 for verdadeira OPERADORES LITERAIS Os operadores que atuam sobre caracteres variam muito de uma linguagem para outra. O operador mais comum e mais usado é o operador que faz a concatenação de strings: toma-se duas strings e acrescenta-se (concatena-se) a segunda ao final da primeira. O operador que faz esta operação é: + Por exemplo, a concatenação das strings ALGO e RITMO é representada por: ALGO + RITMO e o resultado de sua avaliação é: ALGORITMO 44

45 Operador de concatenação de strings (isto é, cadeias de caracteres), quando usado com dois valores (variáveis ou constantes) do tipo "caractere". Por exemplo: "Rio " + " de Janeiro" = "Rio de Janeiro". + concatenação de strings 2. EXPRESSÕES O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão ou fórmula matemática, onde um conjunto de variáveis e constantes numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor EXPRESSÕES ARITMÉTICAS Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real. Somente o uso de operadores aritméticos, variáveis numéricas e parênteses é permitido em expressões deste tipo EXPRESSÕES LÓGICAS falso. Expressões lógicas são aquelas cujo resultado da avaliação é um valor lógico verdadeiro ou Nestas expressões são usados os operadores relacionais e os operadores lógicos, podendo ainda serem combinados com expressões aritméticas. Quando forem combinadas duas ou mais expressões que utilizem operadores relacionais e lógicos, os mesmos devem utilizar os parênteses para indicar a ordem de precedência EXPRESSÕES LITERAIS Expressões literais são aquelas cujo resultado da avaliação é um valor literal (caractere). Neste tipo de expressões só é usado o operador de literais (+). 45

46 2.4. AVALIAÇÃO DE EXPRESSÕES Expressões que apresentam apenas um único operador podem ser avaliadas diretamente. No entanto, à medida que as mesmas vão tornando-se mais complexas com o aparecimento de mais de um operando na mesma expressão, é necessária a avaliação da mesma passo a passo, tomando um operador por vez. A seqüência destes passos é definida de acordo com o formato geral da expressão, considerando-se a prioridade (precedência) de avaliação de seus operadores e a existência ou não de parênteses na mesma. As seguintes regras são essenciais para a correta avaliação de expressões: 1. Deve-se observar a prioridade dos operadores, conforme mostrado nas tabelas de operadores: operadores de maior prioridade devem ser avaliados primeiro. Se houver empate com relação à precedência, então a avaliação se faz da esquerda para a direita. 2. Os parênteses usado em expressões tem o poder de roubar prioridade dos demais operadores, forçando a avaliação da subexpressão em seu interior. 3. Entre os quatro grupos de operadores existentes, a saber, aritmético, lógico, literal e relacional, há uma certa prioridade de avaliação: os aritméticos e literais devem ser avaliados primeiro; a seguir, são avaliadas as subexpressões com operadores relacionais e, por último os operadores lógicos são avaliados. EXERCÍCIOS PROPOSTOS Questão 01: Dados as variáveis e operações: v1 <- 32 v2 <- 5 + v1 v1 <- v2 * 2 Como fazer para segurar e mostrar o valor inicial da variável v1 no final das operações? Questão 02: Se X possui o valor 15 e foram executadas as seguintes instruções: X <- X + 3 X <- X - 6 X <- X / 2 X <- 3 * X Qual será o valor armazenado em X? 46

47 Questão 03: Tendo as variáveis SALARIO, IR e SALLIQ, e considerando os valores abaixo. Informe se as expressões são verdadeiras ou falsas. Questão 04: Circule a primeira operação executada em cada um dos comandos abaixo e justifique sua escolha. a) X + Y Z b) A + B / C ^ 2 c) (A + B) / C d) A + B + C * D e) X + Y + B ^ 2 + R * 3 f) A * B / C * D Questão 05: Sabendo que A=127, B=10, C=5, D=falso e E=verdadeiro, informe qual é o valor produzido por cada uma das sentenças abaixo. a) (A+C) > B b) B >= (A + 2) c) C = (B A) d) (B + A) <= C e) (C+A) > B f) (A + B) >= (B * C) g) nao D h) D e E i) (D e E) ou (A=B) j) (D ou E) e (A<B) k) (A>B) ou (B<C) l) nao (A<B) m) A+B<C e D ou E e nao D n) A+B*C/B=3 e nao (D ou E) 47

48 Questão 06: Resolva as expressões inteiras seguintes: a) 16 * 6 3 * 2 = b) ( * 4) = c) 2 ^ 2 * 3 = d) 2 ^ 3 = e) * (18 4 ^ 2) = f) 8 30 / 6 = Questão 07: Escreva as seguintes expressões matemáticas como expressões de computador: a) ( ) ( ) b) ( ) c) ( ) ( ) d) ( ) ( ) ( ) e) f) Questão 07: Como fazer para passar o valor de uma variável para outra e vice-versa? 48

49 CAPÍTULO 5 INSTRUÇÕES PRIMITIVAS Como o próprio nome diz, instruções primitivas são os comandos básicos que efetuam tarefas essenciais para a operação dos computadores, como entrada e saída de dados (comunicação com o usuário e com dispositivos periféricos), e movimentação dos mesmos na memória. Estes tipos de instrução estão presentes na absoluta maioria das linguagens de programação. Antes de passar à descrição das instruções primitiva, é necessária a definição de alguns termos que serão utilizados: dispositivo de entrada é o meio pelo qual as informações (mais especificamente os dados) são transferidos pelo usuário ou pelos níveis secundários de memória ao computador. Os exemplos mais comuns são o teclado, o mouse, leitora ótica, leitora de código de barras, as fitas e discos magnéticos. dispositivo de saída é o meio pelo qual as informações (geralmente os resultados da execução de um programa) são transferidos pelo computador ao usuário ou aos níveis secundários de memória. Os exemplos mais comuns são o monitor de vídeo, impressora, fitas e discos magnéticos. sintaxe é a forma como os comandos devem ser escritos, a fim de que possam ser entendidos pelo tradutor de programas. A violação das regras sintáticas é considerada um erro sujeito à pena do não reconhecimento por parte do tradutor semântica é o significado, ou seja, o conjunto de ações que serão exercidas pelo computador durante a execução do referido comando. Daqui em diante, todos os comandos novos serão apresentados por meio de sua sintaxe e sua semântica, isto é, a forma como devem ser escritos e as ações que executam. 1. COMANDOS DE ATRIBUIÇÃO O comando de atribuição ou simplesmente atribuição, é a principal maneira de armazenar uma informação numa variável. Sua sintaxe é: <nome_da_variável> <- <expressão> Exemplos: nome <- Genoveva preco < quant <- 5 total <- preco * quant 49

50 O modo de funcionamento (semântica) de uma atribuição consiste: 1. na avaliação da expressão 2. no armazenamento do valor resultante na variável que aparece à esquerda do comando. A seguir temos um exemplo de um algoritmo utilizando o comando de atribuição: algoritmo exemplo_comando_de_atriuição var preco_unit, preco_tot : real quant : inteiro inicio preco_unit <- 5.0 quant <- 10 preco_tot <- preco_unit * quant fimalgoritmo 2. COMANDOS DE SAÍDA DE DADOS Os comandos de saída de dados são o meio pelo qual informações contidas na memória dos computadores são colocadas nos dispositivos de saída, para que os usuários possam apreciálas. No diagrama de blocos o comando de saída de dados é representado por: Há quatro sintaxes possíveis para esta instrução: ESCREVA (<variável>) Ex: escreva (X) ESCREVA (<lista_de_variáveis>) Ex: escreva (nome, endereco, cidade) ESCREVA (<literal>) Ex: escreva ( Algoritmo é o máximo! ) ESCREVA (<literal>, <variável>,...,<literal>, <variável>) Ex: escreva ( Meu nome é:, nome, e meu endereço é:, endereco) 50

51 Daqui por diante, escreva será considerada uma palavra reservada e não mais poderá ser utilizada como nome de variável, de modo que toda a vez que for encontrada em algoritmos, será identificada como um comando de saída de dados. Uma lista_de_variáveis é um conjunto de nomes de variáveis separados por vírgulas. Um literal é simplesmente um dado do tipo literal (string ou cadeia de caracteres) delimitado por aspas. A semântica da instrução primitiva de saída de dados é muito simples: os argumentos do comando são enviados para o dispositivo de saída. No caso de uma lista de variáveis, o conteúdo de cada uma delas é pesquisado na memória e enviado para o dispositivo de saída. No caso de argumentos do tipo literal ou string, estes são enviados diretamente ao referido dispositivo. Há ainda a possibilidade de se misturar nomes de variáveis com literais na lista de um mesmo comando. O efeito obtido é bastante útil e interessante: a lista é lida da esquerda para a direita e cada elemento da mesma é tratado separadamente; se um nome de variável for encontrado, então a informação da mesma é colocada no dispositivo de saída; no caso de um literal, o mesmo é escrito diretamente no dispositivo de saída. A seguir temos um exemplo de um algoritmo utilizando o comando de saída de dados: algoritmo exemplo_comando_de_saída_de_dados var preco_unit, preco_tot : real quant : inteiro inicio preco_unit <- 5.0 quant <- 10 preco_tot <- preco_unit * quant escreva (preco_tot) fimalgoritmo 3. COMANDOS DE ENTRADA DE DADOS Os comandos de entrada de dados são o meio pelo qual as informações dos usuários são transferidas para a memória dos computadores, para que possam ser usadas nos programas. No diagrama de blocos o comando de entrada de dados é representado por: Há duas sintaxes possíveis para esta instrução: 51

52 LEIA (<variável>) Ex: leia (X) LEIA (<lista_de_variáveis>) Ex: leia (nome, endereco, cidade) Da mesma forma que escreva, daqui por diante leia será tratada como uma palavra reservada e não mais poderá ser usada como nome variável em algoritmos. A lista_de_variáveis é um conjunto de um ou mais nomes de variáveis separados por vírgulas. A semântica da instrução de entrada (ou leitura) de dados é, de certa forma, inversa à da instrução de escrita: os dados são fornecidos ao computador por meio de um dispositivo de entrada e armazenados nas posições de memória das variáveis cujos nomes aparecem na lista_de_variáveis. A seguir temos um exemplo de um algoritmo utilizando o comando de entrada de dados: algoritmo exemplo_comando_de_entrada_de_dados var preco_unit, preco_tot : real quant : inteiro inicio leia (preco_unit, quant) preco_tot <- preco_unit * quant escreva (preco_tot) fimalgoritmo 4. INTERFACE COM O USUÁRIO Uma preocupação constante de um bom programador deve ser a de conceber um programa amigo do usuário. Esta preocupação é traduzida no planejamento de uma interface com o usuário (meio pelo qual um programa e o usuário conversam ) bastante amigável. Em termos práticos, isto se resume à aplicação de duas regras básicas: toda vez que um programa estiver esperando que o usuário forneça a ele um determinado dado (operação de leitura), ele deve antes enviar uma mensagem dizendo ao usuário o que ele deve digitar, por meio de uma instrução de saída de dados; antes de enviar qualquer resultado ao usuário, um programa deve escrever uma mensagem explicando o significado do mesmo. Estas medidas tornam o diálogo entre o usuário e o programador muito mais fácil. A seguir temos um exemplo do algoritmo anterior, utilizando as regras de construção de uma interface amigável: 52

53 algoritmo exemplo_interface_amigavel var preco_unit, preco_tot : real quant : inteiro inicio escreva ( Digite o preço unitário: ) leia (preco_unit) escreva ( Digite a quantidade: ) leia (quant) preco_tot <- preco_unit * quant escreva ( Preço total:, preco_tot) fimalgoritmo 5. ENTRADA, PROCESSAMENTO E SAÍDA Para se criar um programa que seja executável dentro de um computador, você deverá ter em mente três pontos de trabalho: a entrada de dados, o seu processamento e a saída dos mesmos. Sendo assim, todo programa estará trabalhando com estes três conceitos. Se os dados forem entrados de forma errada, serão consequentemente processados de forma errada e resultarão em respostas erradas. Desta forma, dizer a alguém que foi erro do computador é ser um tanto "medíocre". E isto é o que mais ouvimos quando nosso saldo está errado e vamos ao banco fazer uma reclamação, ou quando recebemos uma cobrança indevida. Se houve algum erro, é porque foi causado por falha humana. Realmente é impossível um computador errar por vontade própria, pois vontade é uma coisa que os computadores não têm. Uma entrada e uma saída poderão ocorrer dentro de um computador de diversas formas. Por exemplo, uma entrada poderá ser feita via teclado, modem, leitores óticos, disco, entre outras. Uma saída poderá ser feita em vídeo, impressora, disco, entre outras formas. 6. FUNÇÕES PRÉ-DEFINIDAS Toda linguagem de programação já vem com um grupo de funções que facilitam a vida do programador. Estas funções realizam os cálculos aritméticos, trigonométricos e de manipulação e conversão de dados mais comuns. Assim, o programador não tem que reinventar a roda a cada programa que faz. A este grupo de funções dá-se às vezes o nome de biblioteca. Como usar uma função? Em termos simples, uma função pode ser usada em qualquer lugar onde uma variável também pode, a não ser, naturalmente, no "lado esquerdo da seta" em um comando de atribuição. Uma função produz (diz-se no linguajar dos programadores retorna) um valor, e não o recebe. 53

54 Existe uma lista que contém estas funções que são usadas como instruções primitivas. Esta lista é chamada de Lista de funções. A Lista de funções é, então, uma maneira rápida de inserir funções predefinidas em seu algoritmo. Tal lista pode variar dependendo do programa utilizado FUNÇÕES NUMÉRICAS, ALGÉBRICAS E TRIGONOMÉTRICAS ABS (x) ARCCOS (x) ARCSEN (x) ARCTAN (x) COS (x) EXP (x,y) GRAUPRAD (x) INT (x) LOG (x) LOGN (x) Retorna o valor absoluto de x Retorna o arco de co-seno de x Retorna o arco de seno de x Retorna o arco de tangente de x Retorna o valor do co-seno de x Retorna o valor de x elevado a y Retorna o valor em radianos correspondente ao valor em graus de x Retorna a parte inteira de x Retorna o logaritmo de x Retorna o logaritmo neperiano (base e) de x PI Retorna o valor de PI (pi = ) QUAD (x) RADPGRAU (x) RAIZQ (x) RAND RANDL (limite) SEN (x) TAN (x) Retorna o valor de x elevado ao quadrado Retorna o valor em graus correspondente ao valor em radianos de x Retorna a raiz quadrada de x Retorna um número real gerado aleatoriamente, maior ou igual a zero e menor que um Retorna um número inteiro gerado aleatoriamente, maior ou igual a zero e menor que limite Retorna o valor do seno de x Retorna o valor da tangente de x Os valores que estão entre parênteses, representados pelas letras como x e y, são os parâmetros, ou como dizem alguns autores, os argumentos que passamos para a função para que realize seus cálculos e retorne um outro, que usaremos no programa. Algumas funções, como PI e RAND, não precisam de parâmetros, mas a maioria tem um ou mais. O valor dos parâmetros naturalmente altera o valor retornado pela função. A seguir temos alguns exemplos que ilustram o uso destas funções. 54

55 algoritmo "exemplo_funcoes" var a, b, c : real inicio a <- 2b <- 9escreval( b - a ) // será escrito 7 na tela escreval( abs( a - b ) ) // também será escrito 7 na tela c <- raizq( b ) // c recebe 3, a raiz quadrada de b, que é 9 // A fórmula da área do círculo é pi (3.1416) vezes raio ao quadrado... escreval("a área do circulo com raio ", c, " é ", pi * quad(c) ) // Um pouco de trigonometria...escreval("um ângulo de 90 graus tem ", grauprad(90), " radianos" ) escreval( exp(a,b) ) // escreve 2 elevado à 9ª, que é 512 escreval( int( b / ( a + c ) ) ) // escreve 1, que é a parte inteira de 1.8, resultado de 9/(3+2) fimalgoritmo 6.2. FUNÇÕES PARA MANIPULAÇÃO DE CADEIAS DE CARACTERES (STRINGS) ASC (s : caracter) CARAC (c : inteiro) CARACPNUM (c : caracter) COMPR (c : caracter) Retorna um inteiro com o código ASCII do primeiro caracter da expressão. Retorna o caracter cujo código ASCII corresponde à expressão. Retorna o inteiro ou real representado pela expressão. Corresponde a StrToInt() ou StrToFloat() do Delphi, Val() do Basic ou Clipper, etc. Retorna um inteiro contendo o comprimento (quantidade de caracteres) da expressão. COPIA (c : caracter ; p, n : inteiro) Retorna um valor do tipo caracter contendo uma cópia parcial da expressão, a partir do caracter p, contendo n caracteres. Os caracteres são numerados da esquerda para a direita, 55

56 MAIUSC (c : caracter) MINUSC (c : caracter) NUMPCARAC (n : inteiro ou real) POS (subc, c : caracter) começando de 1. Corresponde a Copy() do Delphi, Mid$() do Basic ou Substr() do Clipper. Retorna um valor caracter contendo a expressão em maiúsculas. Retorna um valor caracter contendo a expressão em minúsculas. Retorna um valor caracter contendo a representação de n como uma cadeia de caracteres. Corresponde a IntToStr() ou FloatToStr() do Delphi, Str() do Basic ou Clipper. Retorna um inteiro que indica a posição em que a cadeia subc se encontra em c, ou zero se subc não estiver contida em c. Corresponde funcionalmente a Pos() do Delphi, Instr() do Basic ou At() do Clipper, embora a ordem dos parâmetros possa ser diferente em algumas destas linguagens. A seguir temos alguns exemplos que ilustram o uso destas funções. algoritmo "exemplo_funcoes2" vara, b, c : caractere inicio a <- "2"b <- "9" escreval( b + a ) // será escrito "92" na tela escreval( caracpnum(b) + caracpnum(a) ) // será escrito 11 na tela escreval( numpcarac(3+3) + a ) // será escrito "62" na tela c <- "Brasil" escreval(maiusc(c)) // será escrito "BRASIL" na tela escreval(compr(c)) // será escrito 6 na tela b <- "O melhor do Brasil" escreval(pos(c,b)) // será escrito 13 na tela escreval(asc(c)) // será escrito 66 na tela - código ASCII de "B" 56

57 a <- carac(65) + carac(66) + carac(67)escreval(a) // será escrito "ABC" na tela fimalgoritmo Nem todas as funções que necessitamos estão prontas e às vezes é necessário utilizar uma fórmula equivalente. EXERCÍCIOS PROPOSTOS Questão 01: Exemplifique o uso dos comandos de Atribuição, Entrada e Saída. Questão 02: Como podemos orientar o usuário na digitação dos dados? Exemplifique. Questão 03: Escreva os comandos necessários para ler: a) as 3 notas de um aluno b) o nome, o peso e altura de uma pessoa Questão 04: Escreva os comandos necessários para exibir: a) o conteúdo da variável X b) o resultado da expressão 2+3 Questão 05: A ordem das atribuições é importante? A <- B e C <- A tem o mesmo efeito de C <- A e A <- B? 57

58 Questão 06: Em quais dos seguintes pares é importante a ordem dos comandos? a) X <- Y b) X <- Y c) X <- Z d) Z <- Y Y <- X Z <- X X <- Y X <- Y Questão 07: Considerando as variáveis inteiras A, B e C, com os valores 3, 16 e 30 respectivamente; as variáveis NOME e PROFISSAO, com os valores MIRIAM e ADVOGADO, respectivamente; e a variável lógica TESTE, contendo o valor falso, avalie as expressões a seguir: a) (C div A) (B mod A) b) (C mod A) + (C div B) c) raizq(b) + (B mod C) d) exp(a,2) e) (A+B) pi f) A+1 >= raizq(b) ou NOME <> ANA g) A+1 >= raizq(b) e PROFISSAO = MÉDICO h) NOME <> ANA ou PROFISSAO = MÉDICO e A+1 >= raizq(b) i) PROFISSAO = MÉDICO ou TESTE j) nao TESTE e (A+1 >= raizq(b) ou nao PROFISSAO = MÉDICO k) nao (A+1 >= raizq(b) e TESTE) Questão 08: Dado o algoritmo abaixo, responda as perguntas seguintes. algoritmo quest08 var A, B, C : inteiro inicio leia (A,B) C <- A B escreva ( O valor da diferença é:, C) fimalgoritmo a) O que faz o algoritmo acima? b) Que tipos de variáveis foram usadas? c) Qual será o valor de C, se as variáveis A e B tiverem os valores 10 e 5, respectivamente? d) Qual será o valor de C, se as variáveis A e B tiverem os valores 2 e -8, respectivamente? e) Qual será o valor de C, se as variáveis A e B tiverem os valores 3.5 e 2.1, respectivamente? 58

59 Questão 09: Faça o teste de mesa do seguinte algoritmo. Supondo que os números digitados sejam 10 e 50.5, o que será apresentado na tela? algoritmo quest09 var a, b, c : inteiro inicio leia (a) x, y :real b <- a * a leia (x) y <- x + b b <- y * 2 escreva ( a=, a, b=, b, c=, c) escreva ( x=, x, y=, y) fimalgoritmo Questão 10: Escreva um programa que leia um número inteiro positivo e exiba o dobro do mesmo. Questão 11: Uma P.A. (progressão aritmética) fica determinada pela sua razão (r) e pelo primeiro termo (a 1 ). Escreva um algoritmo que seja capaz de determinar qualquer termo de uma P.A., dado a razão e o primeiro termo. Questão 12: Uma P.G. (progressão geométrica) fica determinada pela sua razão (q) e pelo primeiro termo (a 1 ). Escreva um algoritmo que seja capaz de determinar qualquer termo de uma P.G., dado a razão e o primeiro termo. Questão 13: Dada a razão de uma P.A. (progressão aritmética) e um termo qualquer, k (a k ). Escreva um algoritmo para calcular qualquer outro termo, n, (a n ). 59

60 Questão 14: Dada a razão de uma P.G. (progressão geométrica) e um termo qualquer, k (a k ). Escreva um algoritmo para calcular qualquer outro termo, n, (a n ). Questão 15: Em épocas de pouco dinheiro, os comerciantes estão procurando aumentar suas vendas oferecendo desconto. Faça um algoritmo que possa entrar com o valor de um produto e imprima o novo valor tendo em vista que o desconto foi de 9%. Além disso, imprima o valor do desconto. Questão 16: Escreva um algoritmo que leia um número inteiro e imprima o seu sucessor e seu antecessor. Questão 17: Escreva um algoritmo que leia dois números inteiros e imprima o resultado da soma destes dois valores. Antes do resultado, deve ser impressa a seguinte mensagem SOMA. Questão 18: Escreva um algoritmo que leia um número real e imprima a terça parte deste número. Questão 19: Escreva um algoritmo que leia dois números reais e imprima a média aritmética entre esses dois valores com a seguinte mensagem MEDIA antes do resultado. Questão 20: Seja uma seqüência A,B,C,... determinando um Progressão Aritmética (P.A.), o termo médio (B) de uma P.A. é determinado pela média aritmética de seus termos, sucessor (C) e antecessor (A). Com base neste enunciado construa um algoritmo que calcule o termo médio (B) através de A, C. 60

61 Questão 21: Criar um algoritmo para calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula: onde V é o volume, R é o raio e h é a altura. Questão 22: Criar um algoritmo que leia o numerador e o denominador de uma fração e transforme esses valores em um número racional. Questão 23: Criar um algoritmo que leia o valor de um depósito e o valor da taxa de juros. Calcular e imprimir o valor do rendimento e o valor total depois do rendimento. Questão 24: Para vários tributos, a base de cálculo é o salário mínimo. Fazer um algoritmo que leia o valor do salário mínimo e o valor do salário de uma pessoa. Calcular e imprimir quantos salários mínimos essa pessoa ganha. Questão 25: Criar um algoritmo que leia dois valores para as variáveis A e B, que efetue a troca dos valores de forma que a variável A passe a ter o valor da variável B e que a variável B passe a ter o valor da variável A. Apresente os valores trocados. 61

62 62

63 CAPÍTULO 6 ESTRUTURAS DE CONTROLE DO FLUXO DE EXECUÇÃO Até o momento os algoritmos estudados utilizam apenas instruções primitivas de atribuição, e de entrada e saída de dados. Qualquer conjunto de dados fornecido a um algoritmo destes será submetido ao mesmo conjunto de instruções, executadas sempre na mesma sequência. No entanto, na prática muitas vezes é necessário executar ações diversas em função dos dados fornecidos ao algoritmo. Em outras palavras, dependendo do conjunto de dados de entrada do algoritmo, deve-se executar um conjunto diferente de instruções. Além disso, pode ser necessário executar um mesmo conjunto de instruções um número repetido de vezes. Em resumo é necessário controlar o fluxo de execução das instruções (a sequência em que as instruções são executadas num algoritmo) em função dos dados fornecidos como entrada do mesmo. De acordo com o modo como o controle do fluxo de instruções de um algoritmo é feito, as estruturas básicas de controle são classificadas em: Estruturas sequenciais Estruturas de decisão Estruturas de repetição 1. COMANDOS COMPOSTOS Um comando composto é um conjunto de zero ou mais comandos (ou instruções) simples, como atribuições e instruções primitivas de entrada ou saída de dados, ou alguma das construções apresentadas neste capítulo. Este conceito é bastante simples e será útil e conveniente nos itens seguintes, na definição das estruturas básicas de controle de execução. 2. ESTRUTURA SEQUENCIAL Na estrutura sequencial os comandos de um algoritmo são executados numa sequência pré-estabelecida. Cada comando é executado somente após o término do comando anterior. Uma estrutura sequencial é delimitada pelas palavras-reservadas Início e Fim e contém basicamente comandos de atribuição, comandos de entrada e comandos de saída. Os algoritmos do capítulo anterior são algoritmos que utilizam uma única estrutura sequencial. 63

64 Um algoritmo puramente sequencial é aquele cuja execução é efetuada em ordem ascendente dos números que identificam cada passo. A passagem de um passo ao seguinte é natural e automática, e cada passo é executado uma única vez. 3. ESTRUTURAS DE DECISÃO Neste tipo de estrutura o fluxo de instruções a ser seguido é escolhido em função do resultado da avaliação de uma ou mais condições. Uma condição é uma expressão lógica. A classificação das estruturas de decisão é feita de acordo com o número de condições que devem ser testadas para que se decida qual o caminho a ser seguido. Segundo esta classificação, têm-se três tipos de estruturas de decisão: Estrutura de Decisão Simples (Se... então) Estrutura de Decisão Composta (Se... então... senão) Estrutura de Decisão Múltipla do Tipo Escolha (Escolha... Caso... Outrocaso) Os algoritmos puramente sequenciais podem ser usados na solução de um grande número de problemas, porém existem problemas que exigem o uso de alternativas de acordo com as entradas do mesmo. Nestes algoritmos, as situações são resolvidas através de passos cuja execução é subordinada a uma condição. Assim, o algoritmo conterá passos que são executados somente se determinadas condições forem observadas. Um algoritmo em que se tem a execução de determinados passos subordinada a uma condição é denominado algoritmo com seleção ESTRUTURAS DE DECISÃO SIMPLES ( SE... ENTÃO ) Nesta estrutura uma única condição (expressão lógica) é avaliada. Dependendo do resultado desta avaliação, um comando ou conjunto de comandos serão executados (se a avaliação for verdadeira) ou não serão executados (se a avaliação for falsa). No diagrama de blocos a estrutura para instrução se...entao é representado por: 64

65 A sintaxe possível para a estrutura de decisão simples é: se <condição> entao <sequência_de_comandos> fimse A semântica desta construção é a seguinte: a condição é avaliada: Se o resultado for verdadeiro, então a sequência_de_comandos será executada. Ao término de sua execução, o fluxo do algoritmo prossegue pela instrução seguinte à palavra reservada fimse. No caso da condição ser falsa, o fluxo do algoritmo prossegue pela instrução seguinte à palavra reservada fimse, sem executar a sequência_de_comandos. Exemplo de algoritmo que lê um número e escreve se o mesmo é maior que 10: algoritmo exemplo_estrutura_de_decisão_simples var X : inteiro inicio escreva ( Digite um valor ) leia(x) se X > 10 entao escreva ( X é maior que 10 ) fimse fimalgoritmo 65

66 3.2. ESTRUTURAS DE DECISÃO COMPOSTA ( SE... ENTÃO... SENÃO ) Nesta estrutura uma única condição (expressão lógica) é avaliada. Se o resultado desta avaliação for verdadeiro, um comando ou conjunto de comandos serão executados. Caso contrário, ou seja, quando o resultado da avaliação for falso, um outro comando ou um outro conjunto de comandos serão executados. No diagrama de blocos a estrutura para instrução se...entao...senao é representado por: A sintaxe possível para a estrutura de decisão composta é: se <expressão-lógica> entao <seqüência-de-comandos-1> senao <seqüência-de-comandos-2> fimse A semântica desta construção é a seguinte: a condição é avaliada: Se o resultado for verdadeiro, então a sequência_de_comandos-1 será executada. Ao término de sua execução, o fluxo do algoritmo prossegue pela instrução seguinte à palavra reservada fimse. Nos casos em que a condição é avaliada como falsa, a seuêncvia_de_comandos-2 será executada. Ao término de sua execução, o fluxo do algoritmo prossegue pela instrução seguinte à palavra reservada fimse. Exemplo de algoritmo que lê um número e escreve se o mesmo é ou não maior que 10: algoritmo exemplo_estrutura_de_decisão_composta var X : inteiro inicio leia(x) se X > 10 entao escreva( X é maior que 10 ) 66

67 senao escreva( X não é maior que 10 ) fimse fimalgoritmo 3.3. ESTRUTURAS DE DECISÃO MÚLTIPLA DO TIPO CASO ( ESCOLHA... CASO... OUTROCASO ) Este tipo de estrutura é uma generalização da construção Se, onde somente uma condição era avaliada e dois caminhos podiam ser seguidos. Na estrutura de decisão do tipo Caso pode haver uma ou mais condições a serem testadas e um comando diferente associado a cada uma destas. No diagrama de blocos a estrutura para instrução escolha...caso...outrocaso é representado por: A sintaxe da construção de Caso é: escolha <expressão-de-seleção> caso <exp11>, <exp12>,..., <exp1n> <seqüência-de-comandos-1> caso <exp21>, <exp22>,..., <exp2n> <seqüência-de-comandos-2>... outrocaso <seqüência-de-comandos-extra> fimescolha Seu funcionamento é o seguinte: ao entrar-se numa construção do tipo CASO, uma variável é escolhida e depois testada com a condição expressa em caso <exp>. Se for verdadeira, a sequência-de-comandos-1 é executada e após seu término, o fluxo de execução prossegue pela primeira instrução seguinte à palavra reservada fimescolha. Se esta condição for falsa, o fluxo 67

68 do programa passa para o próximo caso <exp> e testa a condição seguindo o mesmo comportamento descrito acima até encontrar a palavra reservada fimescolha. Um exemplo de aplicação desta construção é o algoritmo para reajustar o salário de acordo com a função. Se for técnico, aumentar o salário 50%, se for gerente, aumentar 30% e se for outro cargo, aumentar 20%. algoritmo "exemplo_estrutura_do_tipo_escolha" var salario, salario_reaj : real prof : caractere inicio escreva("digite o salário: ") leia (salario) escreva("digite a profissão: ") leia(prof) escolha prof caso "Técnico" salario_reaj <- 1.5 * salario caso "Gerente" salario_reaj <- 1.3 * salario outrocaso salario_reaj <- 1.2 * salario fimescolha escreva("salário reajustado: ", salario_reaj) fimalgoritmo EXERCÍCIOS PROPOSTOS Questão 01: Qual o valor de L após a execução deste trecho de algoritmo? algoritmo quest01 var A, B, C : logico X, Y : real L : inteiro inicio A <- falso B <- verdadeiro C <- falso X <- 1.5 Y <- 3.2 X <- X + 1 se C ou ( ( X + Y > 5 ) ou ( nao A e B ) ) entao L <- 0 senao L <- 1 fimse fimalgoritmo 68

69 Questão 02: Os comandos abaixo são equivalentes? Explique por quê. Qual é o tipo da variável A? (I) A <- B = C (II) se B =C entao A <- verdadeiro senao A <- falso fimse Questão 03: Dado o algoritmo abaixo, onde C1, C2, C3, C4 e C5 representam comandos quaisquer, responda as perguntas seguintes. algoritmo quest03 var B1, B2, B3 : logico inicio se B1 entao C1 senao se B2 entao se B3 entao C2 senao C3 C4 fimse fimse fimse C5 fimalgoritmo a) Se B1 = verdadeiro, B2 = verdadeiro, B3 = falso, quais os comandos que serão executados? b) Se B1 = falso, B2 = verdadeiro, B3 = falso, quais os comandos que serão executados? c) Se B1 = falso, B2 = verdadeiro, B3 = verdadeiro, quais os comandos que serão executados? d) Quais os valores de B1, B2 e B3 para que somente o comando C5 seja executado? 69

70 Questão 04: Analise o algoritmo abaixo: algoritmo quest04 var QUALE : caractere NUM : inteiro inicio leia (NUM) se NUM = 0 entao QUALE <- ZERO senao se NUM > 0 entao QUALE <- NÚMERO POSITIVO senao QUALE <- NÚMERO NEGATIVO fimse fimse escreva (QUALE) fimalgoritmo O que será impresso depois de executado o algoritmo se: a) NUM = 10 b) NUM = 0 c) NUM = -4 Questão 05: Considerando o algoritmo abaixo, responda as perguntas seguintes. algoritmo quest05 var SX : caractere inicio leia (SX) se SX = F entao escreva ( Tipo A ) senao se SX <> M entao escreva ( Tipo X ) senao escreva ( Tipo B ) fimse fimse fimalgoritmo a) Qual será a mensagem apresentada se SX = M? b) Qual será a mensagem apresentada se SX = Fem? 70

71 Questão 06: Considerando o algoritmo abaixo, responda as perguntas seguintes. algoritmo quest06 var D, E, F : inteiro inicio leia (D, E, F) se D = 0 entao se E > 0 entao F <- D + E senao F <- 0 fimse senao se D > 0 entao se E > 0 entao F <- 100 senao F <- D * E fimse senao F <- D E fimse fimse fimalgoritmo a) Se D=10 e E=5, qual será o valor de F ao final do algoritmo? b) Se D=0 e E=0, qual será o valor de F ao final do algoritmo? Questão 07: Dado o algoritmo abaixo e executando-o quatro vezes com os valores 5, 3, 25 e 11, escreva o que será apresentado na tela. algoritmo quest07 var X : inteiro inicio leia (X) escolha (X) caso 2, 11 escreva ( Laranja ) caso 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30 escreva ( Maçã ) caso 5 escreva ( Pêra ) escreva ( Morango ) outrocaso escreva ( Pêssego ) fimescolha escreva ( Uva ) fimalgoritmo 71

72 Questão 08: Escreva um algoritmo que leia um número e o imprima caso ele seja maior que 20. Questão 09: Construa um algoritmo que leia dois valores numéricos inteiros e efetue a adição; caso o resultado seja maior que 10, apresenta-lo. Questão 10: Construa um algoritmo que determine (imprima) se um dado número N inteiro (recebido através do teclado) é PAR ou ÍMPAR. Questão 11: Escreva um algoritmo para determinar se um dado número N (recebido através do teclado) é POSITIVO, NEGATIVO ou NULO. Questão 12: Construir um algoritmo que leia dois números e efetue a adição. Caso o valor somado seja maior que 20, este deverá ser apresentado somando-se a ele mais 8; caso o valor somado seja menor ou igual a 20, este deverá ser apresentado subtraindo-se 5. Questão 13: Escreva um algoritmo que leia um número e imprima a raiz quadrada do número caso ele seja positivo ou igual a zero e o quadrado do número caso ele seja negativo. Questão 14: Escreva um algoritmo que receba um número e imprima uma das mensagens: é múltiplo de 3 ou não é múltiplo de 3. Questão 15: Escreva um algoritmo para determinar se um número A é divisível por um outro número B. Esses valores devem ser fornecidos pelo usuário. Questão 16: Construa um algoritmo que imprima qual o menor e qual o maior valor de dois números A e B, lidos através do teclado. 72

73 Questão 17: Construa um algoritmo que dado quatro valores, A, B, C e D, o algoritmo imprima o maior e o menor valor. Questão 18: Escreva um algoritmo que leia as duas notas bimestrais (de 0 a 10) de um aluno e determine a média das notas semestral. Através da média calculada o algoritmo deve imprimir a seguinte mensagem: Aprovado, Reprovado ou em Exame (a média é 7 para Aprovação, menor que 3 para Reprovação e as demais em Exame). Questão 19: Criar um algoritmo que leia o um número inteiro entre 1 e 7 e escreva o dia da semana correspondente. Caso o usuário digite um número fora desse intervalo, deverá aparecer uma mensagem informando que não existe dia da semana com esse número. Questão 20: Escreva um algoritmo que entre com o valor de x, calcule e imprima o valor de f(x). ( ) 4. ESTRUTURAS DE REPETIÇÃO São muito comuns as situações em que se deseja repetir um determinado trecho de um programa um certo número de vezes. Por exemplo, pode-se citar o caso de um algoritmo que calcula a soma dos números impares entre 500 e 1000 ou então um algoritmo que escreve os números maiores que 0 enquanto a sua soma não ultrapasse As estruturas de repetição são muitas vezes chamadas de Laços ou também de Loops. A classificação das estruturas de repetição é feito de acordo com o conhecimento prévio do número de vezes que o conjunto de comandos será executado. Assim os Laços se dividem em: Laços Contados quando se conhece previamente quantas vezes o comando composto no interior da construção será executado; Laços Condicionais quando não se conhece de antemão o número de vezes que o conjunto de comandos no interior do laço será repetido, pelo fato do mesmo estar amarrado a uma condição sujeita à modificação pelas instruções do interior do laço. 73

74 Todo algoritmo que possui um ou mais de seus passos repetidos um determinado número de vezes denomina-se algoritmo com repetição. Com a utilização de estruturas de repetição para a elaboração de algoritmos, torna-se necessário o uso de dois tipos de variáveis para a resolução de diversos tipos de problemas: variáveis contadoras e variáveis acumuladoras. Uma variável contadora é uma variável que recebe um valor inicial, geralmente 0 (zero) antes do início de uma estrutura de repetição, e é incrementada no interior da estrutura de um valor constante, geralmente 1, conforme o exemplo abaixo:... cont <- 0 <estrutura_de_repetição>... cont <- cont <fim_da_estrutura_de_repetição>... Uma variável acumuladora é uma variável que recebe um valor inicial, geralmente 0 (zero) antes do início de uma estrutura de repetição, e é incrementada no interior da estrutura de um valor variável, geralmente a variável usada na estrutura de controle, conforme o exemplo abaixo:... soma <- 0 <estrutura_de_repetição_com_variável_x>... soma <- soma + x... <fim_da_estrutura_de_repetição> LAÇOS CONTADOS Laços Contados (Para... faça ) Os laços contados são úteis quando se conhece previamente o número exato de vezes que se deseja executar um determinado conjunto de comandos. Então, este tipo de laço nada mais é que uma estrutura dotada de mecanismos para contar o número de vezes que o corpo do laço (ou seja, o comando composto em seu interior) é executado. No diagrama de blocos a estrutura para instrução para...faça é representado por: 74

75 Uma das sintaxes possíveis usadas em algoritmos para os laços contados é: para <variável> de <valor-inicial> ate <valor-limite> [passo <incremento>] faca <seqüência-de-comandos> fimpara <variável > <valor-inicial> <valor-limite > <incremento > fimpara É a variável contadora que controla o número de repetições do laço. Deve ser necessariamente uma variável do tipo inteiro, como todas as expressões deste comando. É uma expressão que especifica o valor de inicialização da variável contadora antes da primeira repetição do laço. É uma expressão que especifica o valor máximo que a variável contadora pode alcançar. É opcional. Quando presente, precedida pela palavra passo, é uma expressão que especifica o incremento que será acrescentado à variável contadora em cada repetição do laço. Quando esta opção não é utilizada, o valor padrão de <incremento> é 1. Vale a pena ter em conta que também é possível especificar valores negativos para <incremento>. Por outro lado, se a avaliação da expressão <incremento > resultar em valor nulo, a execução do algoritmo será interrompida, com a impressão de uma mensagem de erro. Indica o fim da seqüência de comandos a serem repetidos. Cada vez que o programa chega neste ponto, é acrescentado à variável contadora o valor de <incremento >, e comparado a <valor-limite >. Se for menor ou igual (ou maior ou igual, quando <incremento > for negativo), a seqüência de comandos será executada mais uma vez; caso contrário, a execução prosseguirá a partir do primeiro comando que esteja após o fimpara. Exemplo de um algoritmo que escreve a tabuada de um número específico: algoritmo "tabuada" var i, tab, num : inteiro inicio escreval("tabuada DE MULTIPLICAÇÃO") escreva("tabuada: ") leia(tab) escreva("até que número: ") leia(num) para i de 1 ate num faca escreval (i, " x ", tab, " = ", i * tab) fimpara fimalgoritmo 75

76 No exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente. algoritmo "Números de 1 a 10" var j: inteiro inicio para j de 1 ate 10 faca escreva (j:3) fimpara fimalgoritmo Importante: Se, logo no início da primeira repetição, <valor-inicial> for maior que <valorlimite> (ou menor, quando <incremento> for negativo), o laço não será executado nenhuma vez. O exemplo a seguir não imprime nada. algoritmo "Numeros de 10 a 1 (não funciona)" var j: inteiro inicio para j de 10 ate 1 faca escreva (j:3) fimpara fimalgoritmo Este outro exemplo, no entanto, funcionará por causa do passo -1: algoritmo "Numeros de 10 a 1 (este funciona)" var j: inteiro inicio para j de 10 ate 1 passo -1 faca escreva (j:3) fimpara fimalgoritmo 4.2. LAÇOS CONDICIONAIS Laços condicionais são aqueles cujo conjunto de comandos em seu interior é executado até que uma determinada condição seja satisfeita. Ao contrário do que acontece nos laços contados, nos laços condicionais não se sabe de antemão quantas vezes o corpo do laço será executado. As construções que implementam laços condicionais mais comuns nas linguagens de programação modernas são: 76

77 Enquanto laço condicional com teste no início Repita laço condicional com teste no final Nos laços condicionais a variável que é testada, tanto no início quanto no final do laço, deve sempre estar associada a um comando que a atualize no interior do laço. Caso isso não ocorra, o programa ficará repetindo indefinidamente este laço, gerando uma situação conhecida como laço infinito Laços Condicionais com Teste no Início (Enquanto... faça ) Caracteriza-se por uma estrutura que efetua um teste lógico no início de um laço, verificando se é permitido ou não executar o conjunto de comandos no interior do laço. No diagrama de blocos a estrutura Enquanto... faça é representada por: Uma das sintaxes possíveis usadas para essa construção é: enquanto <expressão-lógica> faca <seqüência-de-comandos> fimenquanto <expressão-lógica> Esta expressão é avaliada antes de cada repetição do laço. Quando seu resultado for VERDADEIRO, <seqüência-de-comandos> é executada. fimenquanto Indica o fim da <seqüência-de-comandos> que será repetida. Cada vez que a execução atinge este ponto, volta-se ao início do laço para que <expressão-lógica> seja avaliada novamente. Se o resultado desta avaliação for VERDADEIRO, a <seqüência-decomandos> será executada mais uma vez; caso contrário, a execução prosseguirá a partir do primeiro comando após fimenquanto. Uma vez dentro do corpo do laço, a execução somente abandonará o mesmo quando a condição for falsa. O usuário deste tipo de construção deve estar atento à necessidade de que em algum momento a condição deverá ser avaliada como falsa. Caso contrário, o programa permanecerá indefinidamente no interior do laço (laço infinito). Neste tipo de laço condicional a variável a ser testada deve possuir um valor associado antes da construção do laço. 77

78 Um exemplo desta construção é o algoritmo abaixo que escreve os números maiores que 0 enquanto a sua soma não ultrapasse algoritmo "exemplo_enquanto" var soma, num : inteiro inicio num <- 1 soma<- num Enquanto soma < 1000 faca escreval (num) num <- num + 1 soma <- soma + num fimenquanto fimalgoritmo Laços Condicionais com Teste no Final (Repita... até ) Caracteriza-se por uma estrutura que efetua um teste lógico no final de um laço, verificando se é permitido ou não executar novamente o conjunto de comandos no interior do mesmo. No diagrama de blocos a estrutura Repita... até é representada por: Uma das sintaxes possíveis usadas para essa construção é: repita <seqüência-de-comandos> ate <expressão-lógica> repita Indica o início do laço. ate <expressão-lógica> Indica o fim da <seqüência-de-comandos> a serem repetidos. Cada vez que o programa chega neste ponto, <expressão-lógica> é avaliada: se seu resultado for FALSO, os comandos presentes entre esta linha e a linha repita são executados; caso contrário, a execução prosseguirá a partir do primeiro comando após esta linha. 78

79 Seu funcionamento é bastante parecido ao da construção Enquanto. O comando é executado uma vez. A seguir, a condição é testada: se ela for falsa, o comando composto é executado novamente e este processo é repetido até que a condição seja verdadeira, quando então a execução prossegue pelo comando imediatamente seguinte ao final da construção. Esta construção difere da construção Enquanto pelo fato de o comando composto ser executado uma ou mais vezes (pelo menos uma vez), ao passo que na construção Enquanto o comando composto é executado zero ou mais vezes (possivelmente nenhuma). Isto acontece porque na construção Repita o teste é feito no final da construção, ao contrário do que acontece na construção Enquanto, onde o teste da condição é efetuado no início da mesma. A construção Repita também difere da construção Enquanto no que se refere à inicialização da variável, visto que na construção Repita a variável pode ser inicializada ou lida dentro do laço. O algoritmo que lê um número não determinado de vezes um valor do teclado e escreve o valor e o seu quadrado, até que seja digitado um valor par, é um exemplo desta estrutura: algoritmo "exemplo_repita" var num : inteiro inicio repita escreva("entre com número inteiro: ") leia (num) escreval ("O quadrado de", num, " é:", num * num) escreval ate num mod 2 = 0 fimrepita fimalgoritmo 5. ESTRUTURAS DE CONTROLE ENCADEADAS OU ANINHADAS Um aninhamento ou encadeamento é o fato de se ter qualquer um dos tipos de construção apresentados anteriormente dentro do conjunto de comandos (comando composto) de uma outra construção. Em qualquer tipo de aninhamento é necessário que a construção interna esteja completamente embutida na construção externa. A figura abaixo ilustra aninhamentos válidos e inválidos. 79

80 Exemplos de aninhamentos (a) válidos e (b) inválidos Nos algoritmos, a correta formulação de condições, isto é, expressões lógicas, é de fundamental importância, visto que as estruturas de seleção são baseadas nelas. As diversas formulações das condições podem levar a algoritmos distintos. Considerando o problema: Dado um par de valores x, y, que representam as coordenadas de um ponto no plano, determinar o quadrante ao qual pertence o ponto, ou se está sobre um dos eixos cartesianos. A solução do problema consiste em determinar todas as combinações de x e y para as classes de valores positivos, negativos e nulos. Os algoritmos podem ser baseados em estruturas concatenadas uma em sequência a outra ou em estruturas aninhadas uma dentro da outra, de acordo com a formulação da condição. O algoritmo a seguir utiliza estruturas concatenadas. algoritmo "estruturas_concatenadas" var x, y : inteiro inicio leia(x, y) se (x=0) e (y=0) entao escreva("ponto na origem") fimse se (x=0) e (y<>0) entao escreva("ponto sobre o eixo y") fimse se (x<>0) e (y=0) entao escreva("ponto sobre o eixo x") fimse se (x>0) e (y>0) entao escreva("ponto no quandrante 1") fimse se (x<0) e (y>0) entao escreva("ponto no quandrante 2") fimse se (x<0) e (y<0) entao escreva("ponto no quandrante 3") fimse se (x>0) e (y<0) entao escreva("ponto no quandrante 4") fimse fimalgoritmo 80

81 O algoritmo a seguir utiliza estruturas aninhadas ou encadeadas. algoritmo "estruturas_aninhadas" var x, y : inteiro inicio leia(x, y) se x<>0 entao se y=0 entao escreva("ponto sobre o eixo x") senao se x>0 entao se y>0 entao escreva("ponto no quadrante 1") senao escreva("ponto no quadrante 4") fimse senao se y>0 entao escreva("ponto no quadrante 2") senao escreva("ponto no quadrante 3") fimse fimse fimse senao se y=0 entao escreva("ponto na origem") senao escreva("ponto sobre o eixo y") fimse fimse fimalgoritmo As estruturas concatenadas tem a vantagem de tornar o algoritmo mais legível, facilitando a correção do mesmo em caso de erros. As estruturas aninhadas ou encadeadas tem a vantagem de tornar o algoritmo mais rápido pois são efetuados menos testes e menos comparações, o que resulta num menor número de passos para chegar ao final do mesmo. Normalmente se usa estruturas concatenadas nos algoritmos devido à facilidade de entendimento das mesmas e estruturas aninhadas ou encadeadas somente nos casos em que seu uso é fundamental. EXERCÍCIOS PROPOSTOS Questão 01: O que será apresentado na tela após a execução do seguinte algoritmo, se o número digitado for 5? 81

82 algoritmo quest01 var fat, A, N : inteiro inicio fat <- 1 leia ( N ) para A de N ate 2 passo 1 faca fat <- fat * a fimpara escreva ( Fatorial de, N, 'é:, fat ) fimalgoritmo Questão 02: Quais os valores impressos após a execução do seguinte algoritmo? algoritmo quest02 var I, J : inteiro inicio para I de 1 ate 2 passo 1 faca para J de 1 ate 5 passo 2 faca escreva ( I, J ) fimpara fimpara fimalgoritmo Questão 03: Faça o teste de mesa do algoritmo abaixo. O que será apresentado na tela? algoritmo quest03 var x, y, R, soma : inteiro inicio soma <- 10 para y de 50 ate 30 passo -10 faca para x de 5 ate 7 passo 2 faca soma <- soma + y R <- x + y escreva ( R ) fimpara fimpara escreva ( soma ) fimalgoritmo Questão 04: Quais os valores que serão impressos após a execução do seguinte algoritmo? algoritmo quest04 var A : inteiro inicio A <- 0 enquanto A < 20 faca escreva ( A, A^2) A <- A 1 Escreva (... ) fimenquanto escreva ( UFA! CHEGUEI AQUI ) fimalgoritmo 82

83 Questão 05: Dado o algoritmo abaixo, responda as questões seguintes: algoritmo quest05 var MAIOR, MENOR, VALOR : inteiro inicio leia ( VALOR ) MAIOR <- VALOR MENOR <- VALOR enquanto VALOR < > 0 faca se VALOR > MAIOR entao MAIOR <- VALOR; senao se VALOR < MENOR entao MENOR <- VALOR fimse fimse leia ( VALOR ) fimenquanto escreva ( MAIOR =, MAIOR, e MENOR =, MENOR) fimalgoritmo a) Dados os valores de entrada 6, 7, 5, 9, 3 e 0, informe os valores de MAIOR e MENOR a cada valor lido. b) O que faz o algoritmo acima? Questão 06: Quais os resultados produzidos pelo algoritmo que se segue? algoritmo quest06 var Y : inteiro X : logico inicio Y <- 0 X <- falso enquanto Y <> 4 faca X <- nao X Y <- Y + 1 se X entao escreva ( Y ) senao escreva ( -Y ) fimse fimenquanto fimalgoritmo Questão 07: Analise o algoritmo abaixo: algoritmo quest07 var S, X, R : inteiro FN : logico Inicio S <- 0 R <- 0 FN <- falso leia ( X ) 83

84 enquanto X <> 0 faca S <- S + X R <- R + S FN <- nao FN leia ( X ) fimenquanto escreva ( S =, S, e R =, R ) fimalgoritmo Suponha que serão digitados os valores 9, 5, 3 e 0 (nesta ordem) quando solicitado. Responda: a) Qual o valor de FN ao término do algoritmo? b) O que será apresentado na tela? Questão 08: Analisando o algoritmo abaixo, faça o teste de mesa e diga qual o valor de Z ao final. algoritmo quest08 var X, Y, Z : real inicio X <- 1 Z <- 0 Y <- 2 enquanto X <= 3 faca Y <- Y + 4 X <- X + 2 Z <- Z + Y / X fimenquanto fimalgoritmo Questão 09: Dado o algoritmo abaixo e os valores 2, 15, 6, 10 e 0, escreva o que será apresentado na tela ao final. algoritmo quest09 var X : inteiro inicio leia ( X ) enquanto X <> 0 faca escolha X caso 2 escreva ( Amarelo ) caso 5,10 escreva ( Azul ) escreva ( Branco ) caso 20,21,22,23,24,25,26,27,28,29,30 escreva ( Verde ) outrocaso escreva ( Preto ) fimescolha leia ( X ) fimenquanto escreva ( FIM ) fimalgoritmo 84

85 Questão 10: Analise o algoritmo abaixo: algoritmo quest10 var A, S, C : inteiro inicio S <- 100 C <- 0 leia ( A ) enquanto a <> 0 faca S <- S A leia ( A ) C <- C + A fimenquanto fimalgoritmo Dado os valores de entrada 10, 20, 15 e 0, qual será a configuração das variáveis ao final da execução? Questão 11: Analise o algoritmo abaixo e responda as perguntas seguintes. algoritmo quest11 var PAR, SOMA : inteiro inicio PAR <- 100 repita SOMA <- SOMA + PAR PAR <- PAR + 2 ate PAR > 200 escreva (SOMA) fimalgoritmo a) Quais são as variáveis utilizadas e seus respectivos tipos? O que o algoritmo faz? b) Qual seria o resultado obtido em SOMA se a condição do comando repita fosse PAR > 20? c) Qual seria o resultado obtido em SOMA se a condição do comando repita fosse PAR > 120? Questão 12: Executando o seguinte algoritmo, que valores serão escritos? algoritmo quest12 var N, QUADRADO : inteiro inicio N <- 10 repita QUADRADO <- N^2 escreva (QUADRADO) N <- N 1 ate N = 1 fimalgoritmo 85

86 Questão 13: Executando o seguinte algoritmo, que valores serão escritos? algoritmo quest13 var A, Q, TERMO : inteiro inicio A < - 1 Q < - 3 TERMO <- A repita escreva (TERMO) TERMO <- TERMO * Q ate TERMO >= 2000 fimalgoritmo Questão 14: Dado o algoritmo abaixo e os valores de entrada 10, 20, 15, 0 e 4, qual será o conteúdo das variáveis ao final da execução? algoritmo quest14 var X, S, Z : inteiro inicio S <- 100 leia (X) repita S <- S X Z <- Z + X leia (X) ate X = 0 leia (X) Z <- X + X fimalgoritmo Questão 15: Faça a equivalência dos comandos conforme solicitados nos itens abaixo. a) Faça dois algoritmos utilizando os comandos ENQUANTO e REPITA algoritmo quest15 var C : inteiro inicio para C de 10 ate 30 passo 3 faca escreva ( C ) fimpara fimalgoritmo b) Faça dois algoritmos utilizando os comandos PARA e REPITA algoritmo quest15 var X : inteiro inicio X <- 5 enquanto X < 51 faca escreva ( X ) X <- X + 5 fimenquanto fimalgoritmo 86

87 c) Faça dois algoritmos utilizando os comandos PARA e ENQUANTO algoritmo quest15 var K : inteiro inicio K <- 10 repita escreva ( K * K ) K <- K 1 ate K < 0 fimalgoritmo Questão 16: Escreva um algoritmo que imprima todos os números inteiros de 0 a 50. Questão 17: Criar um algoritmo que imprima todos os números de 1 até 100, inclusive, e a soma de todos eles. Questão 18: Escreva um algoritmo que imprima todos os números inteiros de 100 a 1 (em ordem decrescente). Questão 19: Escreva um algoritmo que imprima todos os números múltiplos de 5, no intervalo fechado de 1 a 500. Questão 20: Escreva um algoritmo que imprima todos os números pares do intervalo fechado de 1 a 100. Questão 21: Criar um algoritmo que leia dez números inteiros e imprima o maior e o segundo maior número da lista. Questão 22: Um número é, por definição, primo se ele não tem divisores, exceto 1 e ele próprio. Escreva um programa que leia um número e determine se ele é ou não primo. Questão 23: Escreva um programa que calcule o fatorial de um número inteiro lido, sabendo-se que: N! = 1 x 2 x 3 x... x N-1 x N 0! = 1 87

88 Questão 24: A série de Fibonacci é formada pela seqüência: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... Escreva um algoritmo que gere a série de FIBONACCI até o enésimo termo. Questão 25: Elabore um algoritmo que leia o número de termos da série abaixo e imprima o valor de H, sendo: Questão 26: Supondo que a população de um país A seja da ordem de habitantes com uma taxa anual de crescimento de 3% e que a população de B seja habitantes com uma taxa de crescimento de 1.5%. Faça um programa que calcule e escreva o número de anos necessários para que a população do país A ultrapasse ou iguale a população do país B, mantidas as taxas de crescimento. Questão 27: Uma pousada estipulou o preço para a sua diária em R$ 30,00 e mais uma taxa de serviços diários de: R$ 15,00, se o número de diárias for menor que 10 R$ 8,00, se o número de diárias for maior ou igual a 10 Elabore um algoritmo que imprima o nome, a conta e o número da conta de cada cliente e ao final, o total ganho pela pousada. O algoritmo encerra sua execução quando for digitado 0 (zero) para o número da conta. Questão 28: Escreva um algoritmo que leia um conjunto de 50 fichas, cada uma contendo, a altura e o código do sexo de uma pessoa (código = 1 se for masculino e 2 se for feminino), e calcule e imprima: a maior e a menor altura da turma; a média de altura das mulheres; a média de altura da turma. Questão 29: Criar um algoritmo que imprima todos os números de 1 até 100, inclusive, e a soma da metade desses números. 88

89 Questão 30: Num frigorífico existem vários bois. Cada boi traz preso em seu pescoço um cartão contendo um número de identificação e seu peso. Elabore um algoritmo que imprima o número e o peso do boi mais gordo e do boi mais magro. O algoritmo encerra sua execução quando se digita um número menor ou igual a 0 (zero) para a identificação do boi. Não é necessário armazenar os dados de todos os bois. 89

90 90

91 CAPÍTULO 7 ESTRUTURAS DE DADOS HOMOGÊNEAS Vimos, no início deste curso, ser possível dar um nome para uma posição de memória, sendo que a esta será associado um valor qualquer. Pois bem, acontece que, muitas vezes, esta forma de definição, ou melhor, de alocação de memória, não é suficiente para resolver certos problemas computacionais. Imagine por exemplo, como faríamos para construir um algoritmo, para ler o nome de N pessoas e que imprimisse um relatório destes mesmos nomes, mas ordenados alfabeticamente? Não seria uma tarefa simples, haja visto não ser possível determinar quantos nomes seriam lidos. Mesmo que soubéssemos o número de pessoas, digamos pessoas, teríamos que definir variáveis do tipo caractere, como é mostrado abaixo: algoritmo loucura var Nome1,Nome2,Nome3,..., Nome999, Nome1000 : caractere inicio <sequencia de comandos> fimalgoritmo Considere o tamanho do algoritmo, e o trabalho braçal necessário para construi-lo. Isto só com nomes. Imagine agora de pessoas. A construção deste algoritmo começaria a ficar inviável na prática. Para resolver problemas como este e outros, foi criado um novo conceito para alocação de memória sendo, desta forma, também criado uma nova maneira de definir variáveis, a qual foi denominada de variável indexada. Uma variável indexada corresponde a uma sequência de posições de memória, a qual daremos um único nome, sendo que cada uma destas pode ser acessada através do que conhecemos por índice. O índice corresponde a um valor numérico (exceto REAL), ou a um valor caractere (exceto STRING). Cada uma das posições de memória de uma variável indexada pode receber valores no decorrer do algoritmo como se fosse uma variável comum, a única diferença reside na sintaxe de utilização desta variável. As estruturas de dados homogêneas permitem agrupar diversas informações dentro de uma mesma variável. Este agrupamento ocorrerá obedecendo sempre ao mesmo tipo de dado, e é por esta razão que estas estruturas são chamadas homogêneas. A utilização deste tipo de estrutura de dados recebe diversos nomes, como: variáveis indexadas, variáveis compostas, variáveis subscritas, arranjos, vetores, matrizes, tabelas em memória ou arrays. Os nomes mais usados e que utilizaremos para estruturas homogêneas são: matrizes (genérico) e vetores (matriz de uma linha e várias colunas). Exemplos: 91

92 Cada elemento dos arrays pode ser referenciado através de índices. Exemplos: V[1] = 4 M[1,1] = 3 V[2] = 7 M[2,3] = 4 V[5] = 3 M[3,1] = 2 1. MATRIZES DE UMA DIMENSÃO OU VETORES Este tipo de estrutura em particular é também denominado por profissionais da área como matrizes unidimensionais. Sua utilização mais comum está vinculada à criação de tabelas. Caracteriza-se por ser definida uma única variável vinculada dimensionada com um determinado tamanho. A dimensão de um vetor é constituída por constantes inteiras e positivas. Os nomes dados às matrizes seguem as mesmas regras de nomes utilizados para indicar as variáveis simples. A sintaxe do comando de definição de vetores é a seguinte: var <nome_da_variável> : vetor [<indice_inicial>..<indice_final>] de <tipo_de_dado> Exemplo: var V : vetor [1..10] de inteiro 1.1. OPERAÇÕES BÁSICAS COM VETORES Do mesmo modo que acontece com variáveis simples, também é possível operar com variáveis indexadas. Contudo não é possível operar diretamente com o conjunto completo, mas com cada um de seus componentes isoladamente. O acesso individual a cada componente de um vetor é realizado pela especificação de sua posição no mesmo por meio do seu índice. No exemplo anterior foi definida uma variável V capaz de armazenar 10 números inteiros. Para acessar um elemento deste vetor deve-se fornecer o nome do mesmo e o índice do componente desejado do vetor (um número de 1 a 10, neste caso). Por exemplo, V[1] indica o primeiro elemento do vetor, V[2] indica o segundo elemento do vetor e V[10] indica o último elemento do vetor. 92

Algoritmo. pegar uma escada; posicionar embaixo da lâmpada; buscar uma lâmpada nova; ligar o interruptor; se a lâmpada não acender, então:

Algoritmo. pegar uma escada; posicionar embaixo da lâmpada; buscar uma lâmpada nova; ligar o interruptor; se a lâmpada não acender, então: Algoritmo é a forma organizada de expressar uma seqüência de passos que visam atingir um objetivo definido. Algoritmo é a lógica necessária para o desenvolvimento de um programa. Apesar do nome estranho,

Leia mais

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto Lógica de Programação Profas. Simone Campos Camargo e Janete Ferreira Biazotto O curso Técnico em Informática É o profissional que desenvolve e opera sistemas, aplicações, interfaces gráficas; monta estruturas

Leia mais

Programação de Redes de Computadores

Programação de Redes de Computadores 1: Introdução 1 MINISTÉRIO DA EDUCAÇÃO SECRETARIA DE EDUCAÇÃO PROFISSIONAL E TECNOLÓGICA INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA CAMPUS SÃO JOSÉ SANTA CATARINA Programação de Redes de Computadores

Leia mais

Técnicas de Programação

Técnicas de Programação Técnicas de Programação Algoritmos Anderson Gomes Eleutério Lógica A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO

INTRODUÇÃO À PROGRAMAÇÃO INTRODUÇÃO À PROGRAMAÇÃO 1 - CONCEITO DE ALGORITMO A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estas dispositivos mecânicos,

Leia mais

Algoritmos e Linguagem de Programação I

Algoritmos e Linguagem de Programação I Algoritmos e Linguagem de Programação I Roberto Ferreira roberto.ferreira@lapa.ifbaiano.edu.br 2014.1 Módulo I Aula 3 Algoritmos Computacionais Na aula anterior vimos... Quais são os passos para solucionar

Leia mais

Universidade Veiga de Almeida Algoritmos e Linguagem I

Universidade Veiga de Almeida Algoritmos e Linguagem I Aula 2 Conteúdo: 3. Etapas na solução de problemas 4. Algoritmos estruturados 3. Etapas na solução de problemas Podemos definir problema como sendo uma questão que foge a uma determinada regra, ou um desvio

Leia mais

Capítulo 1 - Lógica e Algoritmos

Capítulo 1 - Lógica e Algoritmos 1. Introdução à Lógica de Programação Capítulo 1 - Lógica e Algoritmos A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir

Leia mais

SUMÁRIO PARTE I - INTRODUÇÃO... 8

SUMÁRIO PARTE I - INTRODUÇÃO... 8 Algoritmos SUMÁRIO PARTE I - INTRODUÇÃO... 8 1. ABORDAGEM CONTEXTUAL... 6 1.1 CONCEITO DE ALGORITMO... 6 2. FORMAS DE REPRESENTAÇÃO DE ALGORITMOS... 8 2.1 DESCRIÇÃO NARRATIVA... 8 2.2 FLUXOGRAMA CONVENCIONAL

Leia mais

01/08/2011. Introdução Lógica Sequencia lógica Instruções Algoritmos Programas. Lógica. Lógica na programação. Instrução.

01/08/2011. Introdução Lógica Sequencia lógica Instruções Algoritmos Programas. Lógica. Lógica na programação. Instrução. Engenharia de Controle e Automação Programação I Prof. Ricardo Sobjak ricardo.sobjak@ifsc.edu.br Introdução Lógica Sequencia lógica Instruções s Programas Lógica Raciocínio estruturado (partindo-se do

Leia mais

Algoritmos e Programação de Computadores Disciplina:

Algoritmos e Programação de Computadores Disciplina: Algoritmos e Programação de Computadores Disciplina: 113476 Profa. Carla Denise Castanho Universidade de Brasília UnB Instituto de Ciências Exatas IE Departamento de Ciência da Computação CIC 3. REPRESENTAÇÃO

Leia mais

3.1 - O que é um diagrama de bloco? Simbologia... 11

3.1 - O que é um diagrama de bloco? Simbologia... 11 Sumário 1 - Introdução à Lógica.... 2 1.1 Lógica... 2 1.2 Raciocínio Lógico... 2 1.3 Instruções... 3 1.4 Algoritmo... 3 1.5 Lógica de programação... 4 1.6 Programas... 4 1.7 Exercícios para fixação:...

Leia mais

ALGORITMOS AULA 1. Profª Amanda Gondim

ALGORITMOS AULA 1. Profª Amanda Gondim ALGORITMOS AULA 1 Profª Amanda Gondim O que é lógica? NOÇÕES DE LÓGICA A lógica trata da correção do pensamento Ensina-nos a usar corretamente as leis do pensamento É a arte de pensar corretamente A forma

Leia mais

Introdução à Programação. slides de Deise Sacol

Introdução à Programação. slides de Deise Sacol Introdução à Programação slides de Deise Sacol 1 2 Elaboração de um programa Problema Análise Programa Algoritmo 3 Processo de geração de um programa Análise do problema: Ler atentamente o enunciado do

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Pampa Campus-Bagé Algoritmos e Programação Aula 1 Apresentação da Disciplina Conceitos Introdutórios Prof. Julio Saraçol juliodomingues@unipampa.edu.br Slide1 APRESENTAÇÃO DA DISCIPLINA

Leia mais

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

Introdução à Lógica de Programação Introdução à Lógica de Programação 1 Elaboração de um programa Problema Análise Programa Algoritmo 2 Processo de geração de um programa Análise do problema: Ler atentamente o enunciado do problema até

Leia mais

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões Processamento de Dados aplicado à Geociências 1 AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões UNIVERSIDADE FEDERAL DE PELOTAS CENTRO DE DESENVOLVIMENTO

Leia mais

Introdução a algoritmos. Prof.: Jesus

Introdução a algoritmos. Prof.: Jesus Introdução a algoritmos Prof.: Jesus Introdução a algoritmos Algoritmo é uma sequência de passos que visa a atingir um objetivo. Algoritmos são usados como meio para chegar a uma solução de um problema.

Leia mais

1. ALGORITMOS. São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui:

1. ALGORITMOS. São vários os conceitos para algoritmo. Escolhemos alguns para serem apresentados aqui: 1. ALGORITMOS 1.1. DEFINIÇÃO DE ALGORITMO A palavra algoritmo, à primeira vista, parece-nos estranha. Embora possua designação desconhecida, fazemos uso constantemente de algoritmos em nosso cotidiano:

Leia mais

Processamento da Informação BC-05045

Processamento da Informação BC-05045 UNIVERSIDADE FEDERAL DO ABC Processamento da Informação BC-05045 Prof Dr. Francisco Isidro UNIVERSIDADE FEDERAL DO ABC Aula 1 - Introdução Aula Teórica UNIVERSIDADE FEDERAL DO ABC Roteiro da Aula Introdução

Leia mais

I - CONCEITOS INICIAIS

I - CONCEITOS INICIAIS Sumário I - CONCEITOS INICIAIS... 2 Lógica de programação... 2 Algoritmo... 2 Instrução... 3 Programa de Computador... 3 Fases... 4 Diagrama de Blocos... 4 II - VARIÁVEIS... 5 Numéricas... 5 Cadeia ou

Leia mais

Pseudocódigo e Visualg

Pseudocódigo e Visualg Pseudocódigo e Visualg Professor: Alex Sandro Forghieri alex.forghieri@ifsc.edu.br Agenda Revisão Algoritmos Estrutura de dados Estrutura básica de um algoritmo em pseudocódigo Teste de mesa Operadores

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 1 Apresentação da Disciplina Introdução a Algoritmos Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Apresentação da Disciplina 2 Atividades Plano de Ensino - Conteúdos

Leia mais

Conceitos Básicos. Professor: Juliano Lucas Gonçalves.

Conceitos Básicos. Professor: Juliano Lucas Gonçalves. Conceitos Básicos Professor: Juliano Lucas Gonçalves juliano.goncalves@ifsc.edu.br Agenda Revisão Algoritmos Memória, variáveis e constantes Estrutura básica de um algoritmo em pseudocódigo 2 O que já

Leia mais

INTRODUÇÃO A ALGORITMOS

INTRODUÇÃO A ALGORITMOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Campus João Câmara INTRODUÇÃO A ALGORITMOS Prof. Alba Lopes alba.lopes@ifrn.edu.br http://docente.ifrn.edu.br/albalopes INTRODUÇÃO

Leia mais

Computadores = cérebros eletrônicos?

Computadores = cérebros eletrônicos? Prof. André Backes Introdução Computadores = cérebros eletrônicos? Computadores são máquinas e, por si sós, não podem ser inteligentes. Alguém as projetou e deu a ela todas as características que possuem.

Leia mais

Algoritmos e Fluxogramas

Algoritmos e Fluxogramas Introdução Algoritmos e Fluxogramas Computadores = cérebros eletrônicos? Computadores são máquinas e, por si sós, não podem ser inteligentes. Alguém as projetou e deu a ela todas as características que

Leia mais

Aula Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof.

Aula Bibliografia - Definições - Operadores - Criação de um algoritmo - Exercícios. Algoritmo e Programação. Prof. - Bibliografia - - Operadores - Criação de um algoritmo - Exercícios Aula 01 Colegiado de Engenharia da Computação Slide 1 O que é Algoritmo? Segundo o Dicionário Aurélio, a palavra algoritmo origina-se

Leia mais

2. ALGORITMOS. Unesp Campus de Guaratinguetá

2. ALGORITMOS. Unesp Campus de Guaratinguetá 2. ALGORITMOS Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante Problemas: Unesp-Campus de Guaratinguetá

Leia mais

Algoritmos e Técnicas. Lógica de Programação. É a técnica de encadear pensamento para atingir determinado objetivo.

Algoritmos e Técnicas. Lógica de Programação. É a técnica de encadear pensamento para atingir determinado objetivo. Algoritmos e Técnicas Lógica de Programação É a técnica de encadear pensamento para atingir determinado objetivo. 1 Algoritmos - Conceitos Um algoritmo é uma seqüência de ações (passos) finitas, bem definidas,

Leia mais

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer Algoritmos e Estrutura de Dados I Conceitos de Algoritmos Prof. Elyssandro Piffer CONCEITO DE ALGORITMO O computador pode auxiliar em muitas tarefas, contudo ele não possui independência, não é inteligente,

Leia mais

Aula 1 - Introdução Cleverton Hentz

Aula 1 - Introdução Cleverton Hentz Aula 1 - Introdução Cleverton Hentz Sumário da Aula O que é um algoritmo? Exemplos de algoritmos. Principais características. 2 Introdução Um algoritmo é um procedimento bem definido que recebe um conjunto

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO. Introdução à Algoritmos. Prof. Me. Sérgio Carlos Portari Júnior

INTRODUÇÃO À PROGRAMAÇÃO. Introdução à Algoritmos. Prof. Me. Sérgio Carlos Portari Júnior INTRODUÇÃO À PROGRAMAÇÃO Introdução à Algoritmos Prof. Me. Sérgio Carlos Portari Júnior www.sergioprotari.com.br sergio.junior@uemg.br TÓPICOS ABORDADOS Noções de Lógica (Parte 1) O que é a lógica Lógica

Leia mais

Capítulo 2 Introdução à Programação

Capítulo 2 Introdução à Programação Tecnologia em Análise e Desenvolvimento de Sistemas INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO Capítulo 2 Introdução à Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Plano de Ensino 2. Introdução

Leia mais

Curso Superior de Análise e Desenvolvimento de Sistemas. Disciplina: : Algoritmo 2009 / 1

Curso Superior de Análise e Desenvolvimento de Sistemas. Disciplina: : Algoritmo 2009 / 1 Curso Superior de Análise e Desenvolvimento de Sistemas Disciplina: : Algoritmo 2009 / 1 Habilidades - Métodos para construção de algoritmos. - Representação de algoritmos. - Tipos primitivos de dados:constantes

Leia mais

Fábio Rodrigues / Israel Lucania

Fábio Rodrigues / Israel Lucania Fábio Rodrigues / Israel Lucania Lógica de programação; Sequência lógica; Instruções. Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Programar não é um ato

Leia mais

Introdução à Programação. slides de Deise Sacol

Introdução à Programação. slides de Deise Sacol Introdução à Programação slides de Deise Sacol 1 LÓGICA DE PROGRAMAÇÃO: Técnica de encadear pensamentos para atingir determinado objetivo Necessária para desenvolver programas e sistemas, pois permite

Leia mais

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

Introdução à Lógica de Programação Introdução à Lógica de Programação Não estamos aqui para sobreviver e sim para explorar a oportunidade de vencer adquirindo o saber! (Autor Desconhecido) A lógica é a arte de pensar correctamente e, visto

Leia mais

Capítulo 1 Conceitos Básicos

Capítulo 1 Conceitos Básicos Capítulo 1 Conceitos Básicos Licenciatura em Computação Fundamentos de Lógica para Programação Prof. Nícolas Trigo nicolas.trigo@ifsertao-pe.edu.br http://professor.ifsertao-pe.edu.br/nicolas.trigo Introdução

Leia mais

Aula 4B. Lógica e Algoritmos. Profª. Fabiany

Aula 4B. Lógica e Algoritmos. Profª. Fabiany Fundamentos de Programação 1 Aula 4B Lógica e Algoritmos. Profª. Fabiany Lógica A lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. Sequência Lógica São passos

Leia mais

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

Introdução à Algoritmos. Professora: Fabíola Gonçalves. Introdução à Algoritmos Professora: Fabíola Gonçalves. AGENDA Algoritmos Definição Por que precisamos de Algoritmos Características Formas de representação Descrição Narrativa Fluxograma Linguagem Algorítmica

Leia mais

LÓGICA DE PROGRAMAÇÃO 1

LÓGICA DE PROGRAMAÇÃO 1 LÓGICA DE PROGRAMAÇÃO 1 Prof. RANILDO LOPES CONTEÚDO PROGRAMÁTICO Introdução aos conceitos básicos de lógica de programação Fundamentos da Lógica de Programação Tipos e estrutura de dados, variáveis, constantes,

Leia mais

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Até o momento da disciplina vimos comandos de entrada, processamento e saída

Leia mais

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza givanaldo.rocha@ifrn.edu.br http://docente.ifrn.edu.br/givanaldorocha Conceitos Lógica de Programação técnica de encadear pensamentos

Leia mais

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

INFORMÁTICA APLICADA AULA 02 ALGORITMOS UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: Bacharelado em Ciências e Tecnologia INFORMÁTICA APLICADA AULA 02 ALGORITMOS Profª ª Danielle Casillo ALGORITMOS Um algoritmo é uma sequência de instruções

Leia mais

Lógica de Programação I

Lógica de Programação I Gilson de Souza Carvalho gaucho.gilson@hotmail.com 1 ALGORITMIZANDO A LÓGICA Por que é Importante Construir um Algoritmo? Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido

Leia mais

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz Algoritmos e Programação : Conceitos e estruturas básicas Hudson Victoria Diniz Relembrando... Um algoritmo é formalmente uma seqüência finita de passos que levam a execução de uma tarefa. Podemos pensar

Leia mais

Portugol. Tiago Alves de Oliveira

Portugol. Tiago Alves de Oliveira Portugol Tiago Alves de Oliveira Revisando Algoritmo: Sequência finita de passos que levam à execução de uma tarefa Claro e preciso. Ex. somar dois números Algoritmo precisa seguir uma sequência lógica

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Prof. A. G. Silva. 14 de março de Prof. A. G. Silva INE5231 Computação Científica I 14 de março de / 26

Prof. A. G. Silva. 14 de março de Prof. A. G. Silva INE5231 Computação Científica I 14 de março de / 26 INE5231 Computação Científica I Prof. A. G. Silva 14 de março de 2017 Prof. A. G. Silva INE5231 Computação Científica I 14 de março de 2017 1 / 26 Conteúdo programático O computador - [3 horas-aula] Representação

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 2 Elementos fundamentais de Algoritmos, Conceitos de Variáveis Profa. Marina Gomes marinagomes@unipampa.edu.br 21/03/2017 Engenharia de Computação - Unipampa 1 Aula de Hoje

Leia mais

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

Algoritmos e Estruturas de Dados I. Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Algoritmos e Estruturas de Dados I Universidade Federal de São João del-rei Pedro Mitsuo Shiroma Sala 119 Bloco 3 Computação - Algoritmo O que é um algoritmo? Um procedimento passo-a-passo para a solução

Leia mais

Fundamentos de Lógica e Algoritmos. Aula 2.3 Introdução a Algoritmos. Prof. Dr. Bruno Moreno

Fundamentos de Lógica e Algoritmos. Aula 2.3 Introdução a Algoritmos. Prof. Dr. Bruno Moreno Fundamentos de Lógica e Algoritmos Aula 2.3 Introdução a Algoritmos Prof. Dr. Bruno Moreno bruno.moreno@ifrn.edu.br Fundamentos de Lógica e Algoritmos Aula 2.3 Introdução a Algoritmos Prof. Dr. Bruno Moreno

Leia mais

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

Introdução a Lógica de Programação Introdução a Lógica de Programação O processo de programação é uma conversa controlada entre um ser humano (tecnicamente preparado) e um computador Linguagem Linguagem de baixo nível Grande dificuldade,

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Programação Estruturada Aula - Introdução a Linguagem de Programação

Programação Estruturada Aula - Introdução a Linguagem de Programação Programação Estruturada Aula - Introdução a Linguagem de Programação Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR 2 ORGANIZAÇÃO BÁSICA DE UM COMPUTADOR

Leia mais

Introdução à Lógica de Programação. Adaptação de Luis Otavio Alvares

Introdução à Lógica de Programação. Adaptação de Luis Otavio Alvares 1 Introdução à Lógica de Programação Adaptação de Luis Otavio Alvares 2 Elaboração de um programa Problema Análise Programa Algoritmo 3 Processo de geração de um programa Análise do problema: Ler atentamente

Leia mais

GFM015 Introdução à Computação. Algoritmos. Ilmério Reis da Silva UFU/FACOM

GFM015 Introdução à Computação. Algoritmos. Ilmério Reis da Silva  UFU/FACOM GFM015 Introdução à Computação Algoritmos Ilmério Reis da Silva ilmerio@facom.ufu.br www.facom.ufu.br/~ilmerio/ic UFU/FACOM Programa 1. Noções básicas sobre os componentes de micro computadores 2.Uso de

Leia mais

ESTRUTURA CONDICIONAL E SELEÇÃO

ESTRUTURA CONDICIONAL E SELEÇÃO Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ESTRUTURA CONDICIONAL E SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE OU DECISÃO) Até o momento da disciplina vimos algoritmos e programas

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação Universidade Federal de Uberlândia Faculdade de Computação Conceitos básicos de algoritmos Prof. Renato Pimentel 1 Computação Dados Informações vindas de usuários ou de outras máquinas; Processamento transformação

Leia mais

Programação Estruturada

Programação Estruturada Algoritmos e Técnicas - Estruturas de Controle de Fluxo - Programação Estruturada Programação estruturada é a técnica de construir e formular algoritmos de uma forma sistemática. Utilizada para apresentar

Leia mais

Estruturas de Repetição. João Medeiros FATERN

Estruturas de Repetição. João Medeiros FATERN Estruturas de Repetição João Medeiros FATERN 2010.2 Quais seriam os passos do algoritmo? 1. colocar café solúvel na xícara 2. colocar água quente 3. Colocar açucar na xícara 4. mexer 5. mexer 6. mexer

Leia mais

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE)

ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Algoritmos e Estruturas de Dados 1 Prof. Eduardo 1 ALGORITMOS COM SELEÇÃO 1 - ESTRUTURA CONDICIONAL (ESTRUTURAS DE CONTROLE) Já vimos entrada, processamento e saída, que compõem os algoritmos puramente

Leia mais

Programação Básica de Computadores

Programação Básica de Computadores Programação Básica de Computadores Gabriel M. Miranda gabrielmartinsmiranda@gmail.com DEPARTAMENTO DE INFORMÁTICA CENTRO TECNOLÓGICO UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO Introdução a Computação O que

Leia mais

4 Introdução ao Algoritmo

4 Introdução ao Algoritmo 4 Introdução ao Algoritmo 4.1 Conceito de Algoritmo A automação é o processo em que uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estes dispositivos mecânicos,

Leia mais

Pseudocódigo e visualg

Pseudocódigo e visualg Pseudocódigo e visualg Professor: Juliano Lucas Gonçalves juliano.goncalves@ifsc.edu.br Agenda Revisão Algoritmos Estrutura de dados Estrutura básica de um algoritmo em pseudocódigo Teste de mesa Operadores

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I. Prof. Dr. Daniel Caetano LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO PARTE I Prof. Dr. Daniel Caetano 2011-2 Visão Geral 1 O Que é Lógica? 2 Problemas e Algoritmos 3 Representando Algoritmos Material

Leia mais

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@ifrn.edu.br

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Prof. Alceu Britto Slides cedidos por Prof. Edson J. R. Justino (PUCPR) Aula Teórica 02 O Conceito de Algoritmo e as Estruturas Básicas de Controle Enquanto existir um quadrado

Leia mais

Introdução à Programação. Ceça Moraes

Introdução à Programação. Ceça Moraes Introdução à Programação Ceça Moraes Conteúdo Algoritmos Representação Exercícios Linguagens de Programação Compilador Interpretador 2 Lógica O que é lógica? Ciência que estuda as leis do raciocínio. Correção/validação

Leia mais

Programação de Computadores IV. Introdução a Algoritmos SLIDES CEDIDOS POR Bruno Marques

Programação de Computadores IV. Introdução a Algoritmos SLIDES CEDIDOS POR Bruno Marques Programação de Computadores IV Introdução a Algoritmos SLIDES CEDIDOS POR Bruno Marques 1 Roteiro da aula Lógica de programação Instrução Algoritmo Algoritmo vs Programa Teste de Mesa 2 Lógica de programação

Leia mais

Prof. Jorge Cavalcanti

Prof. Jorge Cavalcanti Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 02 (baseado no material do prof. Marcelo Linder) Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br

Leia mais

Ivanovitch Medeiros Dantas da Silva. Natal, 01 de setembro de 2011

Ivanovitch Medeiros Dantas da Silva. Natal, 01 de setembro de 2011 Ivanovitch Medeiros Dantas da Silva Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação DCA0800 - Algoritmos e Lógica de Programação Natal, 01 de setembro de

Leia mais

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação O que é Algoritmo? Algoritmo é um dos processo para criação de um programa. Putz????? Definições de Algoritmos Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido.(forbellone,

Leia mais

INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO

INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO INTRODUÇÃO A LÓGICA DE PROGRAMAÇÃO Algoritmos Computacionais Lógica O que é Lógica? Ciência que estuda as formas do pensamento Raciocínio Colocar as ideias no lugar Sempre que pensamos a lógica nos acompanha

Leia mais

Introdução ao Conceito de Algoritmo e Programação Estruturada

Introdução ao Conceito de Algoritmo e Programação Estruturada Prof. Alceu Britto Aula Teórica 02 Introdução ao Conceito de Algoritmo e O Conceito de Algoritmo e as Estruturas Básicas de Controle Enquanto existir um quadrado livre e não tenha vencido (ou perdido)

Leia mais

Algoritmos e Programação

Algoritmos e Programação Universidade Federal do Pampa Campus-Bagé Algoritmos e Programação Aula 2 - Elementos fundamentais de Algoritmos, Conceitos de Varíaveis Prof. Julio Saraçol juliodomingues@unipampa.edu.br Slide1 Aula de

Leia mais

Conceitos Básicos de Algoritmos

Conceitos Básicos de Algoritmos Conceitos Básicos de Algoritmos 35 TIPOS PRIMITIVOS Palavra-reservada: inteiro - define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais Palavra-reservada: real - define variáveis numéricas

Leia mais

Introdução à Programação de Computadores Parte II

Introdução à Programação de Computadores Parte II Introdução à Programação de Computadores Parte II Prof. Dr. Edson Pimentel Centro de Matemática, Computação e Cognição Objetivos Aprender a redigir rotinas comuns do dia-a-dia forma de algoritmos Conhecer

Leia mais

Algoritmos e Programação

Algoritmos e Programação ESTADO DE MATO GROSSO SECRETARIA DE ESTADO DE CIÊNCIA E TECNOLOGIA UNIVERSIDADE DO ESTADO DE MATO GROSSO CAMPUS UNIVERSITÁRIO DE SINOP FACULDADE DE CIÊNCIAS EXATAS E TECNOLÓGICAS Algoritmos e Programação

Leia mais

Programação Estruturada Aula VisualG

Programação Estruturada Aula VisualG Programação Estruturada Aula VisualG Prof. Flávio Barros flavioifma@gmail.com www.flaviobarros.com.br 2 CRIANDO ALGORITMO CRIANDO ALGORITMO Passos para construir Algoritmos Ler enunciado do problema, compreendendo-o

Leia mais

Introdução à Programação. 2ª aula. Prof. José Honorato F. Nunes

Introdução à Programação. 2ª aula. Prof. José Honorato F. Nunes Introdução à Programação 2ª aula Resumo da aula Representação de algoritmos Atividades de revisão de algoritmos Variáveis Tipos de dados Constantes Atividades Formas de Representação de Algoritmos As principais

Leia mais

Linguagens de Programação I. Introdução a Algoritmos e Lógica de Programação

Linguagens de Programação I. Introdução a Algoritmos e Lógica de Programação Linguagens de Programação I Introdução a Algoritmos e Lógica de Programação 1 INTRODUÇÃO Que é um programa de computador? Um programa de computador é o produto resultante da atividade intelectual de um

Leia mais

CONCEITOS DE ALGORITMOS

CONCEITOS DE ALGORITMOS CONCEITOS DE ALGORITMOS Fundamentos da Programação de Computadores - 3ª Ed. 2012 Editora Prentice Hall ISBN 9788564574168 Ana Fernanda Gomes Ascênsio Edilene Aparecida Veneruchi de Campos Algoritmos são

Leia mais

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO Introdução Resolução de problemas Encontrar uma maneira de descrever este problema de uma forma clara e precisa. Encontremos uma seqüência

Leia mais

Capítulo 2 Introdução à Programação

Capítulo 2 Introdução à Programação Engenharia Mecânica PROGRAMAÇÃO PARA ENGENHARIA II Capítulo 2 Introdução à Programação Prof. Claudinei Dias email: prof.claudinei.dias@gmail.com Plano de Ensino 2. Introdução à Programação Algoritmo (conceito,

Leia mais

É neste ponto que entra o conceito de lógica de programação.

É neste ponto que entra o conceito de lógica de programação. AULA 01 OBJETIVO: Desenvolvimento e solução de Algoritmos. LÓGICA DE PROGRAMAÇÃO A lógica é a ciência do pensamento correto. Esta declaração não implica, contudo, em afirmar que ela seja a ciência da verdade.

Leia mais

FACCAT Sistemas de Informação. Estruturas de Dados

FACCAT Sistemas de Informação. Estruturas de Dados FACCAT Sistemas de Informação Estruturas de Dados Aula 1 http://professores.faccat.br/azambuja (Estrutura de Dados) Definição de variáveis Podemos imaginar uma variável como o local onde se pode colocar

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Atividades Plano de ensino Conteúdos da disciplina, definição das datas, critérios de avaliação e bibliografias Início da matéria Conceito e definição de algoritmos

Leia mais

Aula 3: Algoritmos: Formalização e Construção

Aula 3: Algoritmos: Formalização e Construção Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de

Leia mais

Conceitos e Representação de Algoritmos

Conceitos e Representação de Algoritmos BCC 201 - Introdução à Programação Conceitos e Representação de Algoritmos Guillermo Cámara-Chávez UFOP 1/37 Importância do estudo dos Algoritmos... antes que o computador possa executar uma tarefa, deve

Leia mais

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage Algoritmos- continuação

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage Algoritmos- continuação Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage Algoritmos- continuação Situação Problema Cálculos Decisão Verdadeiro Falso Diagrama de Bloco O diagrama de bloco é

Leia mais

Introdução a Computação

Introdução a Computação Introdução a Computação Lógica de Programação Conceitos Algoritmos Conjunto predeterminado e bem definido de regras e processos destinados a solução de um problema, com um número finito de etapas. 2 1

Leia mais

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados Entrada Algoritmos Entrada e saída de dados Muitas vezes, um algoritmo, para que possa trabalhar, precisa de dados de entrada informados pelo usuário, porque nem sempre é necessário ter esse tipo de dados.

Leia mais

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO. ANÁLISE E DESENVOLVIMENTO DE SISTEMAS/PARANGABA PROF. MS. RONNISON REGES VIDAL Ceará, 01 de fevereiro de 2017

INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO. ANÁLISE E DESENVOLVIMENTO DE SISTEMAS/PARANGABA PROF. MS. RONNISON REGES VIDAL Ceará, 01 de fevereiro de 2017 INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ANÁLISE E DESENVOLVIMENTO DE SISTEMAS/PARANGABA PROF. MS. RONNISON REGES VIDAL Ceará, 01 de fevereiro de 2017 ROTEIRO O que é Análise e Desenvolvimento de Sistemas? Como

Leia mais

- Aula 01, 02, 03 e 04 Apresentação da disciplina.

- Aula 01, 02, 03 e 04 Apresentação da disciplina. 1 - Aula 01, 02, 03 e 04 Apresentação da disciplina. Disciplina: Algoritmos (Disciplina é pré-requisito para outras disciplinas). Plano de Ensino: Estrutura Sequencial, Estrutura de Decisão (Desvio Condicional

Leia mais

#Conceituação. Algoritmos. Eliezio Soares

#Conceituação. Algoritmos. Eliezio Soares INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS SÃO GONÇALO DO AMARANTE Algoritmos #Conceituação Eliezio Soares Eliezio.soares@ifrn.edu Computadores e Tarefas 1. O computador

Leia mais

Computação I: Representações de Algoritmos

Computação I: Representações de Algoritmos Computação I: Representações de Algoritmos reginaldo.re@utfpr.edu.br * Parte da apresentação foi gentilmente cedida pelo prof. Igor Steinmacher Agenda Objetivos Relembrando... Algoritmos para desenvolver

Leia mais

ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

ALGORITMOS CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc. ALGORITMOS CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br INTRODUÇÃO O computador é uma máquina que executa instruções que resolvem problemas; Para a forma como estas

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação 2 O que é um algoritmo? É um caminho para a solução de um problema. Problema Algoritmo Solução 3 No contexto computacional... É um conjunto finito de regras, bem definidas, para

Leia mais