Lógica de Programação com Pascal. Teoria e Prática. Este livro visa ensinar a programação com Pascal através de exemplos práticos.

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

Download "Lógica de Programação com Pascal. Teoria e Prática. Este livro visa ensinar a programação com Pascal através de exemplos práticos."

Transcrição

1 Lógica de Programação com Pascal Teoria e Prática Este livro visa ensinar a programação com Pascal através de exemplos práticos. Edeyson Andrade Gomes IFBA ª Edição Revisão

2 SUMÁRIO INTRODUÇÃO À PROGRAMAÇÃO A Linguagem Pascal Estrutura de um Programa Pascal Cabeçalho Área de Declarações Corpo do Programa Exercícios Erro! Indicador não definido. 2 VARIÁVEIS E CONSTANTES Palavras Reservadas Comentários Variáveis Constantes Tipos de Dados Inteiros Reais Caracteres Tipos Lógicos EXPRESSÕES Prioridades das Operações Tipos de Expressões Tipos de Operadores Operador de Atribuição Operadores Aritméticos Operador de Concatenação Operadores Relacionais... 45

3 Operadores Lógicos ESTRUTURAS DE DECISÃO IF.. THEN IF.. THEN.. ELSE Exemplos de Código CASE EXERCÍCIOS ESTRUTURAS DE REPETIÇÃO FOR WHILE.. DO REPEAT.. UNTIL Arrays Apêndice A Fluxogramas Seqüência Seleção com 1 Via Seleção com 2 Vias Seleção com N Vias Repetição com Teste Antecipado Repetição com Teste Postergado Exemplos... 95

4 LISTAGENS Listagem Cabeçalho de programa Pascal Listagem 1.2 Utilização de Unit Listagem 1.3 Declaração de Variáveis Listagem 1.4 Programa que lê 2 números e calcula a soma Listagem Programa que lê 3 variáveis e calcula a média Listagem 2.1 Exemplo de uso de Inteiros Listagem 2.2 Uso de Reais em Pascal Listagem 2.3 Exemplo com Strings Listagem 2.4 Exemplo com Char Listagem 2.5 Exemplo com Boolean Listagem 2.6 Exemplo com Variáveis e Constantes Listagem 3.1 Operador de Atribuição Listagem 3.2 Uso de DIV e MOD Listagem 3.3 Uso de DIV e MOD com Unidade, Dezena e Centena Listagem Concatenação de Strings Listagem 3.5 Operadores Relacionais com Integer Listagem 3.6 Operadores Relacionais com String Listagem 3.7 Operadores Relacionais com Reais Listagem 3.8 Operadores Lógicos Listagem 4.9 Fluxograma de sequência Listagem 4.1 Seleção com uma Via IF.. THEN Listagem 4.2 Fluxograma da seleção com uma Via Listagem 4.2 Seleção com 2 Vias IF.. THEN.. ELSE Listagem Fluxograma da seleção com duas Vias Listagem Seleção com duas Vias Edeyson Andrade Gomes

5 Listagem Fluxograma da seleção com duas Vias Listagem 4.5 Fluxograma do Algoritmo Calcula Desconto Listagem Calcula Desconto Listagem Fluxograma do Algoritmo Calcula Desconto Listagem 4.6 Fluxograma do algoritmo URA 01 CASE Listagem 4.5 Algoritmo URA 01 Case Listagem 4.6 Exercício Teste Condicional Listagem Listagem 8.1 Fluxograma RepeteTesteNotas Listagem 5.1 Uso de For para repetir teste de notas Listagem 5.2 For Simples Listagem 6.2 Fluxograma do ForSimples Listagem 5.3 uso do FOR Listagem 6.3 Passo a passo do FOR Listagem 5.4 Exemplo de FOR Listagem 5.5 Listagem de números de 1 a Listagem 5.6 Listagem de números de 1 a Listagem 5.7 Listagem de números de 1 a Listagem 5.8 Listagem de números de 1 a Listagem 5.9 While Listagem 5.10 Listagem de números de 1 a Listagem 5.11 Listagem de números de 1 a Listagem 6 Fluxograma de Sequencia Listagem 7 Seleção com 1 Via Listagem 8 Seleção com 2 Vias Listagem 9 Seleção com N Vias Listagem 10 Repetição com Teste Antecipado... 94

6 Listagem 11 Repetição com Teste Postergado Listagem 12 Equação do 1º Grau Listagem 13 Triângulos quanto aos lados Edeyson Andrade Gomes

7 TABELAS Tabela 2.1 Tipos Inteiros Tabela Tipos Reais Tabela 3.1 Precedência de Operadores Tabela 3.2 Operadores Relacionais FIGURAS Figura Fluxograma de Raízes de Equação do 2º Grau Figura Fluxograma: Ordenar 3 números distintos Figura 1.3 Fluxograma: Números naturais entre 1 e N Figura 1.4 Fluxograma: Divisores naturais de N Figura 1.5 Fluxograma: Determinar se N é primo Figura 1.6 Fluxograma: Múltiplos de 3 entre 1 e N Figura 1.7 Fluxograma: múltiplos de 3 e 5 entre 1 e N Figura 5.AA While com Contador Figura 5.BB Pares entre 1 e 10 com WHILE Figura 5.CC Figura 5.DD While Figura 5.EE Repeat Until de 1 a Figura 5.FF Figura 6.XYZ Figura

8 8 Programação com Pascal 1 INTRODUÇÃO À PROGRAMAÇÃO Um dos maiores desafios para um professor de programação é fazer com que seus alunos consigam descrever detalhadamente uma solução para um problema. Fazê-los entender um problema não é o mais difícil, todavia, fazê-los organizar uma linha de raciocínio para uma solução que seja coerente, efetiva e eficaz não é trivial. As principais dificuldades apresentadas estão na abstração da solução, como verbalizar o entendimento desta e como garantir que ela seja completa. Comumente encontramos soluções de alunos que omitem passos que são considerados óbvios. Este livro tem como objetivo ajudar o aluno a desenvolver a habilidade de descrever soluções computacionais coerentes, sem ambigüidades e completas. Para isto, foca-se o desenvolvimento do raciocínio lógico baseando-se num universo de problemas da matemática e física do ensino médio. Alunos do ensino médio são confrontados com problemas como a extração de raízes de uma equação do segundo grau. Para a solução, aprendem um conjunto ordenado de passos. São estes que compõem um algoritmo. Um algoritmo descreve detalhadamente uma seqüência finita e ordenada de passos necessários à solução de um determinado problema ou uma classe de problemas. É uma forma de descrever possíveis soluções a problemas do mundo real, objetivando sua implementação no mundo computacional. Por exemplo, toda equação do segundo grau pode ser resolvida (terá suas raízes extraídas) por uma solução que se espera possuir a 5 características importantes de um algoritmo: 1. Finitude: Todo algoritmo deve sempre terminar após um número finito de passos. 2. Definição: Cada passo de um algoritmo deve ser definido de forma clara. a. As ações devem ser definidas rigorosamente e sem ambigüidades para que não sejam cometidos erros durante a resolução do problema. 3. Entradas: Um algoritmo deve ter zero ou mais entradas. a. Por exemplo, uma equação do segundo grau precisa informar os valores de a, b e c, pois sua forma é ax 2 + bx + c. 4. Saídas: Um algoritmo deve ter uma ou mais saídas. a. Por exemplo, uma equação de segundo grau tem duas raízes. 5. Efetividade: Um algoritmo deve ser efetivo. a. Todas as operações devem ser suficientemente básicas de modo que possam ser executadas com precisão em um tempo finito por um humano usando papel e lápis. Edeyson Andrade Gomes

9 Introdução à Programação 9 b. Cada passo da solução deve ser simples, embora sua composição leve a solução de algo complexo. A construção de um algoritmo deve seguir os 6 passos seguintes: 1. Compreender o problema, descrevendo-o de forma clara e precisa. a. Um problema só pode ser resolvido se for bem entendido, o que requer uma descrição compreensível e clara. 2. Identificar os dados de entrada e saída. a. Todo problema tem 0 ou mais dados de entrada. i. Por exemplo, uma equação do segundo grau tem 3 dados de entrada (a, b e c). b. Todo problema tem 0 ou mais dados de saída. i. Por exemplo, uma equação do segundo grau onde delta é menor que zero não possui raízes, logo, não tem dados de saída. 3. Determinar o que é preciso para transformar dados de entrada em dados de saída: a. Definição de uma seqüência de passos que permitam a solução de maneira automática e repetitiva. 4. Construir o algoritmo. 5. Testar o algoritmo. 6. Executar o algoritmo. i. usar a estratégia top-down 1, sempre buscando passos simples que sejam compostos na solução; ii. observar regras e limitações; 1. Como exceções ao problema. iii. identificar todas as ações a realizar; 1. Passos simples para a solução. iv. eliminar possíveis ambigüidades. Um algoritmo bem definido e estruturado garante sua compreensão por terceiros em qualquer linguagem de programação. Um grave problema que se destaca na elaboração de algoritmos é que se ele não for descrito de forma padronizada e estruturada, possivelmente não seja compreendido por outras pessoas, apenas por seus criadores. 1 A estratégia top-down consiste em dividir um problema em partes menores e extremamente simples (subproblemas) de modo que seja mais fácil a sua resolução.

10 10 Programação com Pascal Para evitar esse possível problema, algoritmos costumam ser representados de três formas, como seguem: 1. Linguagem Natural: Os algoritmos são descritos detalhadamente em linguagem natural. Por exemplo, em português estruturado. 2. Fluxograma: Os algoritmos são representados graficamente. a. Usam-se formas geométricas padronizadas para descrever ações e decisões na resolução do problema. 3. Pseudo-linguagem: Os algoritmos são descritos através de uma linguagem intermediária entre a linguagem natural e uma linguagem de programação. Um exemplo de uso de Linguagem Natural está na especificação de como criar um XBurger. Uma possível solução está a seguir: 1. Início do Algoritmo XBurger. a. Pegar um pão; b. Abrir o pão ao meio; c. Passar manteiga no pão; d. Colocar queijo no pão; e. Colocar presunto no pão; f. Colocar ovo frito no pão; g. Fechar o pão. 2. Fim do Algoritmo XBurger. Algumas perguntas que podem surgir ao leitor são: 1. Onde estavam a manteiga, o queijo e o presunto? 2. Quem fritou o ovo? Isso faz parte do algoritmo? a. Podemos definir um algoritmo fritar ovo e reusá-lo? A especificação de um algoritmo deve ser tão detalhada quanto possível para evitar dúvidas ou ambigüidades. Tais perguntas deveriam ser respondidas numa especificação mais clara e detalhada do Algoritmo XBurger. Por exemplo, pode-se definir que o algoritmo tem como entrada um pão, um ovo frito (não faz parte do algoritmo fritar o ovo), manteiga, queijo e presunto. Como dado de saída tem-se o sanduíche. Outro exemplo em Linguagem Natural é como extrair as raízes de uma equação do segundo grau na forma ax 2 + bx + c. Sabe-se que: a. = b 2-4ac b. x 1 = (-b + ) / 2a c. x 2 = (-b - ) / 2a d. a deve ser diferente de 0 e. deve ser maior que zero para ter raízes reais Edeyson Andrade Gomes

11 Introdução à Programação 11 A definição do algoritmo, em linguagem natural, para extrair as raízes de uma equação do segundo grau pode ser a seguinte: 1. Início do Algoritmo Raízes a. Obter os coeficientes a, b e c. b. Se a é igual a zero, informar que esta é uma equação de 1º grau e terminar o algoritmo. c. Caso contrário, faça i. Calcular delta = b 2-4ac ii. Se delta for negativo, informar que a equação não tem raízes reais e terminar o algoritmo. iii. Caso contrário, faça 1. Calcular x 1 = (-b + )/(2a) 2. Calcular x 2 = (-b )/(2a) 3. Fornecer como resultado x 1 e x 2 4. Terminar o algoritmo. 2. Fim do Algoritmo Raízes Como se pode notar, a definição do Algoritmo Raízes especifica detalhadamente como calcular as raízes de uma equação do segundo grau. Caso o leitor ainda tenha dúvida sobre o mesmo, outro recurso de representação pode ser usado, como é o caso do fluxograma da Figura 1.1 (detalhes de uso de fluxogramas estão no Apêndice A). Figura Fluxograma de Raízes de Equação do 2º Grau

12 12 Programação com Pascal Outra forma de representação seria via linguagem próxima de uma linguagem de programação de alto nível, ou Pseudocódigo. Neste caso, aproxima-se bastante da programação. A programação consiste na codificação precisa de um algoritmo segundo uma linguagem de programação específica. Um programa é uma formalização de um algoritmo em uma determinada linguagem de programação, segundo suas regras de sintaxe e semântica, de forma a permitir que o computador possa entender sua seqüência de ações. A proposta deste livro é ensinar algoritmos e programação através de múltiplos meios de representação e usando a linguagem de programação Pascal. 1.1 Exemplos Os exemplos a seguir e apresentam problemas e suas respectivas possíveis soluções usando linguagem natural e seu fluxograma Ler 3 valores distintos e determinar qual o maior, o menor e o mediano. Antes de resolver o problema, vamos ilustrá-lo com algumas situações: a. Números [3, 5, 8] Ao ler 3, maior = 3. Ao ler 5, maior = 5 e mediano = 3 Note que o mediano assumiu o valor antigo do maior (mediano = maior) e maior ficou igual a n (maior = n). Ao ler 8, maior = 8, mediano = 5, menor = 3 Note que o menor assumiu o valor antigo do mediano (menor = mediano), mediano assumiu o valor antigo do maior (mediano = maior) e maior ficou igual a n (maior = n). b. Números [8, 5, 3] Ao ler 8, maior = 8. Ao ler 5, maior = 8 e mediano = 5 Ao ler 3, maior = 8, mediano = 5, menor = 3 c. Números [3, 8, 5] Ao ler 3, maior = 3. Ao ler 8, maior = 8 e mediano = 3 Note que o mediano assumiu o valor antigo do maior (mediano = maior) e maior ficou igual a n (maior = n). Ao ler 5, maior = 8, mediano = 5, menor = 3 Note que o menor assumiu o valor antigo do mediano (menor = mediano), mediano assumiu o valor de n (mediano = n). Quais os passos do Algoritmo que se deseja? Vejamos: Edeyson Andrade Gomes

13 Introdução à Programação Como foi lido um primeiro valor, podemos presumir que ele é o maior, pois só existe ele. a. Pense em três alunos chegando numa sala: ao chegar o primeiro aluno, quem é o mais velho da sala? Por isso maior é igual a n no início. 2. Outro valor é lido para n. Notem que é o segundo valor. 3. Se o segundo valor lido é maior que o maior valor conhecido (n > maior), então ele deve ser o maior conhecido (maior = n). Neste caso, o mediano assume o valor do antigo maior conhecido. a. Em caso contrário (o segundo valor lido é menor que o maior conhecido), como é o segundo valor, ele passa a ser o mediano. Note que ainda não sabemos quem é o menor. 4. Outro valor é lido para n. Notem que é o terceiro valor. 5. Se o terceiro valor lido é o maior conhecido, então o menor assume o valor do mediano, o mediano assume o valor do maior anterior e o maior assume o valor de n. Em caso contrário, se o terceiro valor lido é maior que o mediano, o menor assume o valor do mediano anterior e n passa a ser o mediano. Senão, ele é o menor conhecido (menor = n). 6. Imprime os valores. Vejamos o Algoritmo em Linguagem Natural: a. Início do Algoritmo 1. Ler valor para n 2. Atribuir n a maior. 3. Ler valor para n. 4. Se n > maior, atribuir maior a mediano e n a maior. Senão, atribuir n a mediano. 5. Ler valor para n. 6. Se n > maior, atribuir mediano a menor, maior a mediano e n a maior. 7. Senão, se n > mediano, atribuir mediano a menor e n a mediano. Senão, atribuir n a menor. 8. Imprimir os valores de menor, mediano e maior. b. Fim do Algoritmo Teste do Algoritmo Valores 1, 7, 15 Passo 1: n = 1 Passo 2: maior = 1 Passo 3: n = 7 Passo 4: mediano = 1 maior = 7 Passo 5: n = 15 Passo 6: menor = 1 mediano = 7 maior = 15

14 14 Programação com Pascal Teste do Algoritmo Valores 6, 2, 4 Passo 1: n = 6 Passo 2: maior = 6 Passo 3: n = 2 Passo 4: maior = 6 mediano = 2 Passo 5: n = 4 Passo 6: maior = 6 menor = 2 mediano = 4 A seguir a Figura 1.2 ilustra o Fluxograma do algoritmo proposto. Início n maior = n n V n > maior F mediano = maior maior = n mediano = n n V n > maior F menor = mediano mediano = maior maior = n V n > mediano F menor = mediano mediano = n menor = n menor, mediano, maior Fim Figura Fluxograma: Ordenar 3 números distintos Edeyson Andrade Gomes

15 Introdução à Programação Imprimir o número 5 dez vezes. A solução deste simples problema cai no que chamamos de repetição. Devemos repetir a impressão do número 5 dez vezes. Uma solução trivial seria: Início do Algoritmo 1. Imprimir o número 5 2. Imprimir o número 5 3. Imprimir o número 5 4. Imprimir o número 5 5. Imprimir o número 5 6. Imprimir o número 5 7. Imprimir o número 5 8. Imprimir o número 5 9. Imprimir o número Imprimir o número 5 Fim do Algoritmo O algoritmo proposto acima está correto. Porém, como seria a solução caso se deseje imprimir o número 5 um milhão de vezes? Terá um milhão de linhas? A solução proposta é usar a linguagem natural para informar a repetição de algo, como segue: Início do Algoritmo 1. Fazer 10 vezes a. Imprimir o número 5 Fim do Algoritmo Note que um laço Faça algo N vezes (algo pode ser um comando ou um bloco de comandos) é criado assim num Fluxograma: 1. Cria-se uma variável de controle iniciada com Testa-se se a variável de controle é menor ou igual a N. 3. Executa-se o comando ou bloco de comandos. 4. Incrementa-se a variável de controle. 5. Volta-se ao passo 2 (esta volta é que constrói o laço). Vejamos isso no Fluxograma ilustrado na Figura 1.3.

16 16 Programação com Pascal Início Conta é a variável de controle Este teste controla quantas vezes o laço será executado Conta = 1 Conta <= 10 F Fim V 5 Conta = Conta + 1 O incremento em 1 garante que Conta mude de valor Figura Fluxograma: Imprimir o número 5 dez vezes Imprimir todos os números naturais entre 1 e N. A solução deste problema necessita de um laço de repetição. Devemos repetir a impressão de um número contido no intervalo [1, N]. Uma solução possível é: Início do Algoritmo a. Ler N b. Faça a variável valor variar entre todos os valores no intervalo [1 e N] i. Imprima valor Fim do Algoritmo Note que necessitaremos novamente de um laço Faça algo N vezes (algo aqui será a impressão de um número natural. O problema é bem parecido com o anterior, pois inicia em 1 e varia até N. Logo, vamos à mesma solução: 1. Cria-se uma variável de controle iniciada com Testa-se se a variável de controle é menor ou igual a N, pois se desejam os números entre 1 e N, inclusive. 3. Imprime-se o valor da variável de controle, pois ela será o próprio número no intervalo. 4. Incrementa-se a variável de controle em 1, pois tem-se uma sequência de números naturais. 5. Volta-se ao passo 2 (esta volta é que constrói o laço). Edeyson Andrade Gomes

17 Introdução à Programação 17 Uma revisão do algoritmo em linguagem natural é a seguinte: Início do Algoritmo Leia um valor inteiro para N Faça valor igual a 1 Enquanto valor <= N Faça Imprima valor valor = valor + 1 Fim do Algoritmo Teste do Algoritmo: Ler N suponha que N seja 5 Faça a variável valor variar entre todos os valores no intervalo [1 e 5] logo, valor assumirá os seguintes valores {1, 2, 3, 4, 5} Serão impressos os valores 1, 2, 3, 4, 5 Vejamos isso no Fluxograma ilustrado na Figura 1.4. Início n valor = 1 valor <= n N Fim V valor = valor + 1 valor Figura 1.4 Fluxograma: Números naturais entre 1 e N Notem que neste fluxograma há um Laço de repetição de N vezes. O controle do laço é feito no teste (condição valor <= n), ou seja, valor inicia com 1 e varia até n. O teste garante que valor não será maior que n. Se valor for menor ou igual a n, imprime-se o valor e soma-se um a ele para que este assuma o próximo número no intervalo [1, N].

18 18 Programação com Pascal Determinar todos os divisores naturais de um número natural N. Dado um valor N, imprimir todos os seus divisores. Por exemplo, supondo N = 12, como saber seus divisores? Uma solução é testar todos os números entre 1 e 12. O teste é para saber se algum destes números divide 12, ou seja, se o resto da divisão de 12 por cada um deles é zero. Início do Algoritmo a. Ler N b. Faça a variável Divisor variar entre todos os valores no intervalo [1 e N] i. Para cada valor de Divisor faça: 1. Atribua à variável Resto o resto da divisão de N por Divisor. 2. Se Resto = 0, então imprima o valor de Divisor Fim do Algoritmo Veja que a letra b do algoritmo faz com que todos os números entre 1 e N sejam testados. Outra forma de escrever o algoritmo, mais próximo da programação, é: Início do Algoritmo a. Leia um valor inteiro para N b. Faça Divisor igual a 1 c. Enquanto Divisor <= N Faça Resto = N MOD Divisor SE (Resto = 0) ENTÃO Imprima Divisor Divisor = Divisor + 1 Fim do Algoritmo Teste do Algoritmo: Ler N suponha que N seja 8 Faça a variável Divisor variar entre todos os valores no intervalo [1 e 8] logo, Divisor assumirá os seguintes valores {1, 2, 3, 4, 5, 6, 7, 8} Para cada valor de Divisor faça: 1. Atribua à variável Resto o resto da divisão de N por Divisor (8/1). Logo, Resto = 0. Imprime Atribua à variável Resto o resto da divisão de N por Divisor (8/2). Logo, Resto = 0. Imprime Atribua à variável Resto o resto da divisão de N por Divisor (8/3). Logo, Resto = 2. Não Imprime. Edeyson Andrade Gomes

19 Introdução à Programação Atribua à variável Resto o resto da divisão de N por Divisor (8/4). Logo, Resto = 0. Imprime Atribua à variável Resto o resto da divisão de N por Divisor (8/5). Logo, Resto = 3. Não Imprime. 6. Atribua à variável Resto o resto da divisão de N por Divisor (8/6). Logo, Resto = 2. Não Imprime. 7. Atribua à variável Resto o resto da divisão de N por Divisor (8/7). Logo, Resto = 1. Não Imprime. 8. Atribua à variável Resto o resto da divisão de N por Divisor (8/8). Logo, Resto = 0. Imprime 8. Resultado: serão impressos {1, 2, 4, 8} Vejamos isso no Fluxograma ilustrado na Figura 1.5. Início N Divisor = 1 Divisor <= N F Fim V Resto = resto da divisão de N por Divisor Resto = 0 V Divisor F Divisor = Divisor + 1 Figura 1.5 Fluxograma: Divisores naturais de N Note que o passo b do algoritmo (Faça a variável Divisor variar entre todos os valores no intervalo [1 e N]) é destacado no fluxograma.

20 20 Programação com Pascal Determinar se um número natural N é primo A principal diferença deste algoritmo para o anterior (1.1.4) é que não serão impressos os divisores de um número, e sim, contados (precisamos de uma variável para isso). Vale lembrar que um número primo tem apenas dois divisores. Início do Algoritmo a. Definir a variável contadivisores com valor inicial 0 b. Ler N c. Faça a variável Divisor variar entre todos os valores no intervalo [1 e N] i. Para cada valor de Divisor faça: 1. Atribua à variável Resto o resto da divisão de N por Divisor. 2. Se Resto = 0, então some 1 a contadivisores d. Se contadivisores > 2, então o número não é primo. e. Senão, ele é primo. Fim do Algoritmo Note que a letra d do Algoritmo só será executada após o laço da letra c ser concluído (testar todos os divisores no intervalo [1, N]. Vejamos isso no Fluxograma ilustrado na Figura 1.6. Edeyson Andrade Gomes

21 Introdução à Programação 21 Início contadivisores = 0 N Divisor = 1 Divisor <= N F contadivisores > 2 V N não é primo V Resto = resto da divisão de N por Divisor F N é primo Resto = 0 V contadivisores = contadivisores + 1 Fim F Divisor = Divisor + 1 Figura 1.6 Fluxograma: Determinar se N é primo Imprimir todos os múltiplos de 3 compreendidos entre 1 e N (naturais). Início do Algoritmo a. Ler N b. Faça a variável Múltiplo variar entre todos os valores no intervalo [1 e N] i. Atribua à variável Resto o resto da divisão de Múltiplo por 3. ii. Se Resto = 0, então imprima o valor de Múltiplo. Fim do Algoritmo Teste do Algoritmo: Ler N suponha que N seja 10 Faça a variável Múltiplo variar entre todos os valores no intervalo [1 e 10] Serão impressos os valores 3, 6, 9 Vejamos isso no Fluxograma ilustrado na Figura 1.7.

22 22 Programação com Pascal Início N Múltiplo = 1 Múltiplo <= N F Fim V Resto = resto da divisão de Múltiplo por 3 Resto = 0 V Múltiplo F Múltiplo = Múltiplo + 1 Figura 1.7 Fluxograma: Múltiplos de 3 entre 1 e N Imprimir todos os múltiplos de 3 e 5 (simultaneamente) compreendidos entre 1 e N (naturais). Início do Algoritmo c. Ler N d. Faça a variável Múltiplo variar entre todos os valores no intervalo [1 e N] iii. Atribua à variável Resto3 o resto da divisão de Múltiplo por 3. iv. Atribua à variável Resto5 o resto da divisão de Múltiplo por 5. v. Se Resto3 = 0 e Resto5 = 0, então imprima o valor de Múltiplo. Fim do Algoritmo Teste do Algoritmo: Ler N suponha que N seja 30 Faça a variável Múltiplo variar entre todos os valores no intervalo [1 e 30] Serão impressos os valores 15, 30 Vejamos isso no Fluxograma ilustrado na Figura 1.8. Edeyson Andrade Gomes

23 Introdução à Programação 23 Início N Múltiplo = 1 Múltiplo <= N F Fim V Resto3 = resto da divisão de Múltiplo por 3 Resto5 = resto da divisão de Múltiplo por 5 Resto3 = 0 e Resto5 = 0 V Múltiplo F Múltiplo = Múltiplo + 1 Figura 1.8 Fluxograma: múltiplos de 3 e 5 entre 1 e N Dado um registro com o seguinte leiaute: Nome Nota1 Nota2 Nota3 Escreva um algoritmo que leia um arquivo com N registros no leiaute acima e imprima um relatório com alunos aprovados e outro com alunos reprovados. Um aluno está aprovado apenas de tiver média (aritmética) das notas maior ou igual a 7,0. Considere em sua solução que só existe uma impressora na execução do algoritmo. Início do Algoritmo 1. Criar uma coleção de alunos aprovados e outra de reprovados 2. Enquanto houver registros no arquivo faça: a. Ler registro b. Fazer media = (nota1 + nota2 + nota3) / 3 c. Se média maior ou igual a 7.0, inclua o aluno na coleção de aprovados, senão coloque-o na coleção dos reprovados 3. Enquanto houver registros na coleção Aprovados faça: a. Imprima registro 4. Enquanto houver registros na coleção Reprovados faça: a. Imprima registro Fim do Algoritmo

24 24 Programação com Pascal 2 A LINGUAGEM PASCAL A linguagem Pascal foi desenvolvida no início da década de 1970 por Nicklaus Wirth, na Universidade Técnica de Zurique, Suíça. O primeiro compilador para a linguagem foi disponibilizado em O objetivo do Pascal é ser uma linguagem de programação de alto nível voltada ao ensino da programação estruturada. Por ser simples, é ideal para a introdução à programação. 2.2 Estrutura de um Programa Pascal Todo programa em Pascal é dividido em três áreas distintas: cabeçalho, área de declarações e corpo. cabeçalho área de declarações corpo Cabeçalho O cabeçalho é uma área utilizada para que se possa identificar um programa através de um nome (instrução program). {Sintaxe:} program nomedoprograma; Exemplo: program adicionanumeros; área de declarações corpo Edeyson Andrade Gomes

25 A LINGUAGEM PASCAL 25 Observações: 1. O nome de um programa é um identificador e deve ser único neste. O programa da Listagem 1.1, chamado de adicionanumeros, iniciaria assim: 1. program adicionanumeros; 2. {Programa que lê 2 números e imprime sua soma.} Listagem Cabeçalho de programa Pascal. Note que no trecho de programa da Listagem 1.1 anterior, a linha 2 apresenta um comentário, pois está entre { }. A linha 1 usa a instrução program para dar nome ao programa. No caso, adicionanumeros. Observações: 1. Nossos programas sempre aparecerão em caixas como a da Listagem O uso de { } serve para definir comentários: descrições ou informações, em texto livre, que auxiliem no entendimento do código Área de Declarações A Área de Declarações de um programa é utilizada para criar identificadores que não sejam predefinidos. Todo objeto que quisermos usar num programa precisa ser identificado por um nome único. Um cuidado que se deve ter é que Pascal predefine nomes como integer, real, boolean, etc. A área de declarações pode ser subdividida em sete subáreas: uses, label, const, type, var, procedure e function. Cada uma delas será explicada em seu devido momento. Utilização de Units As units são conjuntos de funções que já estão prontas para serem usadas pelo programador. Por exemplo, se quisermos limpar a tela ou ler o teclado já existem funções prontas para isso nas units, evitando o trabalho de reescrevê-las. São elas: 1. CRT: possui a maior parte das rotinas e variáveis de geração de som, controle de vídeo e teclado; 2. DOS: possui as rotinas que envolvem a utilização do sistema operacional; 3. GRAPH: possui rotinas destinadas a manipulações gráficas;

26 26 Programação com Pascal 4. OVERLAY: possibilita gerenciar as atividades de um programa economizando memória; 5. PRINTER: permite declarar um arquivo tipo texto com o nome LST e associálo à impressora; 6. SYSTEM: possui a maior parte das rotinas padrão da linguagem Pascal e é usada de forma automática. Para se fazer uso de units é necessário o uso da instrução uses antes da declaração da instrução var. {Sintaxe:} uses nomedaunidade; Nosso programa continuaria como apresenta a Listagem program adicionanumeros; 2. {Programa que lê 2 números e imprime sua soma.} 4. {Usa a biblioteca CRT onde está a função ReadKey: Lê Tecla} 5. uses crt; Listagem 1.2 Utilização de Unit. Note que no programa da Listagem 1.2 as linhas 2 e 4 apresentam comentários, pois estão entre { }. A linha 1 usa a instrução program para dar nome ao programa (adicionanumeros). A linha 5 usa a instrução uses para habilitar as funções da biblioteca CRT. Observações: 1. Comentários são textos livres, escritos dentro do código-fonte para explicar e detalhar algo. Não são compilados e não contam como linha de código LOC (Line of Code). Declaração de Variáveis Nos problemas comuns da matemática e física nos deparamos com variáveis. Por exemplo, uma equação do segundo grau 2 possui a forma: ax 2 + bx + c. Logo, são exemplos de equação do segundo grau: x 2 + 2x + 1 e 2x 2 + 3x + 4. Cabe-nos observar que as equações do 2º grau variam, entre si, sempre num aspecto: os valores de a, b e c. Para a matemática, a, b e c são constantes (coeficientes), pois a equação 2x 2 + 3x + 4 já tem tais valores definidos. 2 Toda equação da forma ax² + bx + c = 0, em que a, b e c são números reais com a 0, é chamada de equação do 2 grau. Quando b = 0 ou c = 0 tem-se uma equação do 2º grau incompleta. Edeyson Andrade Gomes

27 A LINGUAGEM PASCAL 27 Para a programação, se quisermos montar uma equação do segundo grau a partir da fórmula ax 2 + bx + c, precisamos saber a parte que varia entre elas, ou seja, as variáveis para o algoritmo: a, b e c. Pode-se afirmar que a, b e c serão as variáveis de entrada do algoritmo e as raízes, sua saída. Da mesma forma, na física temos a fórmula da velocidade na forma: v = v o + at 2. Para sabermos a velocidade final de um corpo, precisamos conhecer os valores das variáveis: velocidade inicial, aceleração e tempo. Sempre que tivermos um problema a resolver, o que mudar entre um problema e outro similar são variáveis para o algoritmo. Para a solução de problemas como os citados são necessárias variáveis declaradas num programa, o que é feito via a instrução var. Cada variável tem um nome único no programa (identificador) e um tipo (inteiro, real, lógico, etc). {Sintaxe:} var nomedavariável : tipo de dado; nomedeoutravariável : tipo de dado; Observações: 1. Após o nome de cada variável deve ser utilizado o símbolo dois-pontos ( : ) seguido pelo tipo de dado que a variável irá receber, seguido de ponto-e-vírgula. 2. Caso as variáveis sejam de mesmo tipo, estas poderão ser relacionadas separadas por vírgula. Por exemplo: var a, b, c : integer; Isso define as variáveis a, b e c como sendo do tipo integer (inteira). Nosso primeiro programa continuaria como apresenta a Listagem program adicionanumeros; 2 {Programa que lê 2 números e imprime sua soma.} 4 {Usa a biblioteca CRT onde está a função ReadKey} 5 uses crt; 7 {Declara a, b e soma como variáveis inteiras} 8 var 9 a, b : integer; 10 soma : integer; Listagem 1.3 Declaração de Variáveis. Note que na Listagem 1.3 a linha 8 apresenta a instrução var iniciando uma área de declaração de variáveis. A linha 9 define duas variáveis inteiras chamadas a e b e a linha 10 define uma variável do tipo inteira (integer) chamada soma Corpo do Programa

28 28 Programação com Pascal Um programa em Pascal está escrito numa área denominada corpo do programa que tem início com a instrução begin e é finalizada pela instrução end, seguida do símbolo ponto (. ). O uso destas instruções caracteriza o que é chamado de bloco de comandos, como indicado abaixo: {Sintaxe:} begin instruções do programa; end. Observações: 1. O corpo do programa pode conter vários blocos. Nosso programa continuaria como apresenta a Listagem program adicionanumeros; 2 {Programa que lê 2 números e imprime sua soma.} 4 {Usa a biblioteca CRT onde está a função ReadKey} 5 uses crt; 7 {Declara a, b e soma como variáveis inteiras} 8 var 9 a, b : integer; 10 soma : integer; 12 begin 13 {limpa a tela} 14 clrscr; 16 {escreve no prompt de comandos} 17 writeln('insira o valor de a: '); 19 {esperando que o usuário digite algo e atribui à variável a} 20 readln(a); 22 writeln('insira o valor de b: '); 23 readln(b); 25 {soma a com b e atribui o resultado a soma} 26 soma := a + b; 27 writeln('a soma de ', a, ' com ', b, ' eh ', soma); 29 {para o programa até que alguma tecla seja pressionada} 30 readkey; 31 end. Listagem 1.4 Programa que lê 2 números e calcula a soma. Descrição do primeiro exemplo O objetivo do programa da Listagem 1.4 é efetuar a leitura de dois valores numéricos (variáveis a e b), fazer a operação de adição entre elas, atribuir o resultado à variável soma e apresentar o resultado obtido. Destaca-se o seguinte: Edeyson Andrade Gomes

29 A LINGUAGEM PASCAL O corpo do programa está delimitado pelas linhas 12 (begin) e 31 (end.). 2. A linha 14 apresenta uma instrução (clrscr) usada para limpar a tela. 3. As linhas 17, 22 e 27 usam uma instrução (writeln) para imprimir na tela. 4. As linhas 20 e 23 usam uma instrução (readln) para ler um valor do teclado e associar a uma variável. 5. A instrução da linha 30 (readkey) para o programa até que algo seja teclado. Outra forma de representar o algoritmo adicionanumeros é usando a Linguagem Natural, como segue: 1. Início do Algoritmo adicionanumeros a. Solicitar ao usuário para inserir o valor de a; b. Ler um valor para a variável a; c. Solicitar ao usuário para inserir o valor de b; d. Ler um valor para a variável b; e. Efetuar a soma das variáveis a e b, colocando o resultado na variável soma; f. Apresentar o valor da variável soma após a operação de soma dos dois valores fornecidos. g. Aguardar até que algo seja pressionado. 2. Fim do Algoritmo adicionanumeros. Observações: 1. Os comandos read e readln são responsáveis por entrada de dados, como leitura pelo teclado. a. ReadLn(var) lê um valor do teclado e atribui à variável var. b. O programa fica parado até que a tecla ENTER seja pressionada. Tudo o que for digitado antes de ENTER será colocado na variável (var). 2. Os comandos write e writeln são responsáveis por saída de dados, como impressão na tela. a. WriteLn(var) imprime o valor da variável (var) na tela. 3. O uso de LN (acrônimo para New Line Nova Linha) indica que uma nova linha deve ser usada após o comando. Vamos a outro exemplo comentado que serve para calcular a média aritmética de 3 valores. Ele deve ler três variáveis numéricas (a, b e c) e calcular a média aritmética destas, apresentando o resultado obtido. Algoritmo usado em Linguagem Natural: 1. Início do Algoritmo Média de 3 Números a. Solicitar ao usuário para digitar o valor da variável a; b. Ler um valor para a variável a;

30 30 Programação com Pascal c. Solicitar ao usuário para digitar o valor da variável b; d. Ler um valor para a variável b; e. Solicitar ao usuário para digitar o valor da variável c; f. Ler um valor para a variável c; g. Calcular a média como a soma de a, b e c dividida por 3. h. Imprimir os três valores lidos e a média. 2. Terminar o Algoritmo Média de 3 Números. A implementação do Algoritmo Média de 3 Números é apresentada na Listagem {O programa deve ler 3 variaveis inteiras, calcular a media aritmetica e atribuir a uma variavel media. 2 Qual deve ser o tipo da variavel media? Por que? 3 } 4 program media3n; 6 uses crt; 8 var 9 a, b, c : integer; 10 media : real; 12 begin 13 writeln('digite o valor da Variavel 1: '); 14 readln(a); 16 writeln('digite o valor da Variavel 2: '); 17 readln(b); 19 writeln('digite o valor da Variavel 3: '); 20 readln(c); 22 media := (a + b + c) / 3; 23 write('a media entre ', a, ', ', b, ' e ', c, ' eh: '); 24 writeln(media:3:2); 26 readkey; 27 end. Listagem Programa que lê 3 variáveis e calcula a média. No programa da Listagem 1.5 destaca-se o seguinte: 1. O cabeçalho do programa está entre as linhas 1 e As declarações do programa estão entre as linhas 8 e O corpo do programa está delimitado pelas linhas 12 e As linhas 13, 16, 19, 23 e 24 usam instruções writeln e write para imprimir na tela. 5. As linhas 14, 17 e 20 usam uma instrução para ler os valores de a, b e c, respectivamente. 6. Na linha 22 calcula-se a média aritmética de a, b e c, atribuindo-a à variável media. 7. A linha 24 imprime a média formatada com 3 dígitos decimais e 2 decimais. Edeyson Andrade Gomes

31 A LINGUAGEM PASCAL 31 Observações: 1. A variável media precisa ser real, pois a divisão de inteiros nem sempre é um inteiro. Por exemplo, 7/3. 2. O uso de media:3:2 na impressão significa que o resultado será formatado com 3 dígitos antes da vírgula e 2 dígitos depois. Variáveis e Constantes Em Pascal, variáveis, constantes, tipos definidos pelo usuário, procedimentos e funções precisam de um nome que forneça uma identificação única e isso é feito através de identificadores. Nomes (identificadores) em Pascal devem seguir as seguintes regras de construção: 1. Iniciar sempre por uma letra (a - z, A - Z) ou um underline (_); 2. O restante do identificador deve conter apenas letras, underlines ou dígitos (0-9). Não pode conter outros caracteres; e 3. Pode ter qualquer tamanho, desde que os primeiros 63 caracteres sejam significativos. Não existe distinção entre letras maiúsculas e minúsculas no nome de um identificador. Por exemplo, os nomes ALPHA, alpha e Alpha são equivalentes para o Pascal. Observações: 1. CamelCase é a denominação em inglês para a prática de escrever palavras compostas, ou frases, onde cada palavra é iniciada com Maiúsculas e unidas sem espaços. a. É um padrão largamente utilizado em diversas linguagens de programação, como Java, Ruby e Python. b. Exemplos: NomeDoCliente, TipoDePeça, MediaPonderada, MediaDe3Numeros. Palavras Reservadas Pascal reconhece certo grupo de palavras como sendo reservadas. Elas têm significado especial e não podem ser usadas como identificadores em um programa para objetos criados pelo programador. São elas: absolute, and, array, asm, begin, case, const, constructor, destructor, div, do, downto, else, end, file, for, function, goto, if, implementation, in, inherited, inline, interface, label, mod, nil, not, object, of, on, operator, or, packed, procedure, program, record, reintroduce, repeat, self, set, shl, shr, string, then, to, type, unit, until, uses, var, while, with, xor.

32 32 Programação com Pascal Comentários Comentários são textos escritos dentro do código-fonte para explicar ou descrever alguns aspectos relativos ao mesmo ou para esclarecer detalhes de programação que podem não ficar claros. Seu principal objetivo é adicionar informação textual ao código, facilitando seu entendimento por leitores. A sintaxe requerida aos comentários permite o uso de chaves como em: { comentário } ou de parêntesis e asteriscos, como em: (* comentário *). 2.1 Variáveis Uma variável é uma região da memória, identificada através de um nome, cujo valor pode mudar durante a execução do programa. Como Pascal é uma linguagem fortemente tipada, cada variável precisa obrigatoriamente de um tipo de dados predeterminado. {Sintaxe:} var variável : tipo de dado; variável1, variável2 : tipo de dado2; Nesta especificação de sintaxe, variável tem seu tipo definido por tipo de dado. Note que variável1 e variável2 são definidas juntas, separadas por vírgulas e atribuindo-se um único tipo de dados. Isso pode ser feito para qualquer número de variáveis que compartilhem um mesmo tipo de dados. 2.2 Constantes Uma constante é uma região rotulada da memória através de um nome cujo valor não pode mudar durante a execução do programa. Um exemplo de constante é o PI na matemática. {Sintaxe:} const nomedaconstante = expressão; 2.3 Tipos de Dados Um tipo de dado especifica as características, ou seja, quais os possíveis valores e operações que um dado possui. Por exemplo, um valor inteiro pode ser somado a outro, Edeyson Andrade Gomes

33 A LINGUAGEM PASCAL 33 subtraído, multiplicado, etc. Variáveis, como apresentado em sua sintaxe, requerem um tipo de dado em sua definição. A linguagem Pascal fornece ao programador um conjunto de tipos de dados predefinidos e que serão descritos a seguir. Inteiros Inteiros são valores numéricos positivos ou negativos, excluindo-se qualquer número fracionário. Em Pascal, este tipo de dado pode ser referenciado por um dos seguintes identificadores: Byte, Shortint, Smallint, Word, Integer, Cardinal, Longint, Longword, Int64 e QWord. Tabela 2.1 Tipos Inteiros Tipo Valores Tamanho em Bytes Byte Shortint Smallint Word Integer Smallint ou Longint 2 ou 4 Cardinal Longword 4 Longint Longword Int QWord A definição de variáveis inteiras é feita com a seguinte sintaxe: {Sintaxe:} variável : integer; A Listagem 6 apresenta um exemplo de uso de Inteiros. 1 program InteirosEmPascal; 2 {Este programa vai demonstrar o uso de Inteiros em Pascal.} 4 uses crt; 6 var 7 forca : integer; 8 massa, aceleracao : integer; 9 begin 10 massa := 100; 11 aceleracao := 2; 12 forca := massa * aceleracao; 13 writeln ('A forca eh: ', forca); 14 readkey; 15 end. Listagem 2.1 Exemplo de uso de Inteiros No programa da Listagem 6 destaca-se o seguinte: 1. Na linha 7 declara-se a variável forca do tipo integer.

34 34 Programação com Pascal 2. A linha 8 apresenta a declaração de duas variáveis inteiras: massa e aceleração. Embora as três variáveis pudessem ter sido declaradas numa única linha, optou-se por duas declarações separadas para exemplificação. 3. Na linha 10 atribui-se o valor 100 à variável massa, enquanto na linha 11 atribui-se 2 à variável aceleração. 4. Na linha 12 atribui-se à variável forca o produto entre massa e aceleração. 5. A linha 13 imprime o valor resultante da forca. A execução do programa imprimirá: A forca eh: 200 Reais O tipo de dado real permite trabalhar com números fracionários, tanto positivos como negativos, sendo sua capacidade de armazenamento maior que dos números inteiros. Vejamos os tipos: Real, Single, Double, Extend, Comp e Currency. Tabela Tipos Reais Tipo Valores Dígitos Tamanho Signific. em Bytes Real Depende da Plataforma 4 ou 8 Single 1.5E E Double 5.0E E Extended 1.9E E Comp -2E E Currency A definição de variáveis reais é feita com a seguinte sintaxe: {Sintaxe:} variável : real; A Listagem 7 apresenta um exemplo de uso de Reais. 1 program ReaisEmPascal; 2 {Este programa vai demonstrar o uso do tipo Real em Pascal.} 4 uses crt; 6 var 7 forca : real; 8 massa, aceleracao : real; 9 begin 10 forca := 235; 11 aceleracao := 2; 12 massa := forca / aceleracao; 13 writeln ('A massa eh: ', massa:3:2); 14 readkey; 15 end. Listagem 2.2 Uso de Reais em Pascal Edeyson Andrade Gomes

35 A LINGUAGEM PASCAL 35 No programa da Listagem 7 destaca-se o seguinte: 1. Na linha 7 declara-se a variável forca do tipo real. 2. A linha 8 apresenta a declaração de duas variáveis reais: massa e aceleração. Embora as três variáveis pudessem ter sido declaradas numa única linha, optou-se por duas declarações separadas para exemplificação. 3. Na linha 10 atribui-se o valor 235 à variável forca, enquanto na linha 11 atribui-se 2 à variável aceleração. 4. Na linha 12 atribui-se à variável massa a razão entre forca e aceleração. 5. A linha 13 imprime o valor resultante da massa. A execução do programa imprimirá: A massa eh: Observações: 1. Write e WriteLn permitem que sejam definidos formatos aos números. a. Estes formatos são úteis na impressão de números reais para evitar a forma com exponenciação. b. O formato é: numero:tamanho:precisão i. numero é o número que se quer imprimir. ii. tamanho informa a largura da saída. iii. precisão informa com quantos dígitos o numero será impresso. Caracteres String Tipos de Dados Caracteres em Pascal são seqüências contendo letras, números e símbolos especiais e devem ser representadas entre apóstrofos ( ). Este tipo de dado é referenciado pelo identificador string, podendo armazenar de 1 até 255 caracteres. Para definir uma variável cujo conteúdo pode ter até 255 caracteres, usa-se a seguinte sintaxe: {Sintaxe:} variável : string; Como a sintaxe anterior não determina um tamanho, a variável definida sempre ocupará 255 bytes na memória, pois o Pascal na tem como saber quantos bytes realmente serão necessários. Para o caso de variáveis String que o programador conheça o tamanho máximo, pode-se usar a seguinte sintaxe para determiná-lo

36 36 Programação com Pascal {Sintaxe:} variável : string[tamanho]; O uso de colchetes determina que a variável terá um conteúdo de até tamanho caracteres. A Listagem 8 apresenta um exemplo de uso de Strings. 1 program StringsEmPascal; 2 {Este programa vai demonstrar o uso de String em Pascal.} 4 uses crt; 6 var 7 endereco : string; {endereço é uma cadeia com 0 a 255 caracteres.} 8 nome : string[30]; 9 CPF : string[11]; {O uso de [] delimita o número de caracteres. Neste caso CPF tem 11 caracteres.} 11 begin 12 endereco := 'Rua dos Alferes, 1234, Ap. 1001, Barra, Salvador, Bahia - CEP: '; 13 nome:= 'Jose da Silva Santos'; 14 CPF := ' '; 15 writeln('endereco: ', endereco, ' Cliente: ', nome, ' CPF: ', cpf); Listagem 2.3 Exemplo com Strings 16 readkey; 17 end. No programa da Listagem 8 destaca-se o seguinte: 1. Na linha 7 declara-se a variável endereco que terá até 255 caracteres (é o limite máximo de uma string), 2. A linha 8 apresenta a declaração da variável nome que terá, no máximo, 30 caracteres. 3. A linha 8 apresenta a declaração da variável CPF que terá, no máximo, 11 caracteres. 4. Na linha 12 atribui-se um valor 235 à variável endereço. Note que atribuição de string requer o uso de apóstrofos. 5. A linha 15 faz-se a impressão das três variáveis e seus valores. A execução do programa imprimirá: Endereco: Rua dos Alferes, 1234, Ap. 1001, Barra, Salvador, Bahia - CEP: Cliente: Jose da Silva Santos CPF: Observações: 1. Write e WriteLn permitem imprimir múltiplos valores separando-os por vírgulas. a. A impressão de constantes string é feita colocando-as entre apóstrofos. b. O comando writeln('endereco: ', endereco); imprimirá Endereco: seguido pelo valor da variável endereco. Edeyson Andrade Gomes

37 A LINGUAGEM PASCAL 37 Char Pascal suporta o tipo Char, que ocupa exatamente 1 byte e contém um caractere ASCII (American Standard Code for Information Interchange). Para definir uma variável do tipo char usa-se a seguinte sintaxe: {Sintaxe:} variável : char; A Listagem 9 apresenta um exemplo de uso de char. 1 program CharEmPascal; 2 {Este programa vai demonstrar o tipo Char do Pascal} 3 4 uses crt; 5 6 var 7 letraaminuscula, letraamaiuscula : char; 8 letrabminuscula, letrabmaiuscula : char; 9 sexo : char; {char representa um único caracter. Neste caso sexo pode ser 'M' ou 'F'} begin 12 {Atribuições de valores às variáves} 13 sexo := 'M'; 14 letraaminuscula := 'a'; 15 letraamaiuscula := #65; letrabminuscula := #98; 18 letrabmaiuscula := 'B'; writeln('sexo: ', sexo); 21 writeln('letras Maiusculas: ', letraamaiuscula, letrabmaiuscula); 22 writeln('letras Minusculas: ', letraaminuscula, letrabminuscula); 23 readkey; 24 end. Listagem 2.4 Exemplo com Char Nas linhas 7, 8 e 9 definem-se variáveis do tipo char. Um caractere pode ser especificado colocando o caractere entre aspas simples (apóstrfos), como 'a' ou 'B', por exemplo, nas linhas 14 e 18. Também pode ser especificado pelo seu valor de caracteres (normalmente um código ASCII), precedendo o valor ordinal com o símbolo (#). Por exemplo, na linha 15, especificando #65 é o mesmo que 'A'. O resultado da execução do programa é: Sexo: M Letras Maiusculas: AB Letras Minusculas: ab

38 38 Programação com Pascal Tipos Lógicos Pascal suporta o tipo Boolean, com dois possíveis valores predefinidos: true e false. Qualquer expressão que resulte em um valor booleano (verdadeiro ou falso) também pode ser atribuída a um tipo booleano. Para definir uma variável do tipo boolean usa-se a seguinte sintaxe: {Sintaxe:} variável : char; A Listagem 10 apresenta um exemplo de uso de boolean. 1 program BooleanEmPascal; 2 {Este programa vai demonstrar o tipo boolean do Pascal} 3 4 uses crt; 5 var 6 aprovado : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 7 maior, menor, igual : boolean; 8 9 begin 10 {Atribuições de valores às variáves} 11 aprovado := true; {Atribui TRUE a aprovado} 12 maior := 2 > 1; {Atribui o resultado do teste: 2 > 1? a maior} 13 igual := 2 = 1; {Atribui o resultado do teste: 2 > 1? a igual} 14 menor := 2 < 1; {Atribui o resultado do teste: 2 > 1? a menor} writeln('aprovado: ', aprovado); 17 writeln('2 > 1? eh: ', maior); 18 writeln('2 = 1 eh: ', menor); 19 writeln('2 = 1 eh: ', igual); 20 readkey; 21 end. Listagem 2.5 Exemplo com Boolean O resultado da execução do programa é: Aprovado: TRUE 2 > 1? eh: TRUE 2 = 1 eh: FALSE 2 < 1 eh: FALSE A linha 11 atribui diretamente o valor TRUE à variável aprovado. As linhas 12 a 14 atribuem o valor lógico do teste às variáveis maior, igual e menor. Note que uma atribuição tem duas partes: uma antes do := e outra depois. No caso da linha 12 estamos atribuindo à variável maior o resultado da expressão que avalia se dois é maior que um, o que é verdade (TRUE). As linhas 13 e 14 seguem o mesmo princípio, atribuindo a igual e a menor o resultado dos respectivos testes lógicos. A Listagem 11 a seguir apresenta um exemplo com variáveis e constantes. Edeyson Andrade Gomes

39 A LINGUAGEM PASCAL 39 1 program VariaveisEConstantes; 2 {Este programa vai demonstrar variáveis e constantes no Pascal} 3 4 uses crt; 5 6 var 7 area, raio : real; {Declara area e raio como variáveis REAIS} 8 9 const 10 pi = ; {Declara pi como uma constante} begin 13 {Atribuições de valores às variáves} 14 raio := 10; 15 area := pi * raio * raio; 16 writeln('a area do circulo de raio 10 eh: ', area:3:4); raio := 15; 19 area := pi * raio * raio; 20 writeln('a area do circulo de raio 15 eh: ', area:3:4); {pi := 10;} 23 readkey; 24 end. Listagem 2.6 Exemplo com Variáveis e Constantes O programa VariaveisEConstantes declara na linha 7 as variáveis área e raio do tipo REAL. Como o nome já informa, variáveis podem ter seu valor mudado durante a execução do programa. As linhas 14, 15, 18 e 19 exemplificam isso, mudando os valores de raio e área. Para um novo valor do raio é calculada a área de um círculo usando-se a fórmula: Área = π * raio 2 Note que raio 2 foi calculado como raio * raio A constante matemática π é representada no programa pela constante PI, cujo valor é atribuído na própria declaração, como é visto na linha 10. O resultado da execução do programa da Listagem 9 é: A area do circulo de raio 10 eh: A area do circulo de raio 15 eh:

40 40 Programação com Pascal 3 EXPRESSÕES Expressões são arranjos de operandos (variáveis, constantes ou valores gerados por funções) e operadores (operações a serem efetuadas sobre os operandos) que ocorrem nas atribuições ou em testes e produzem um valor de um determinado tipo. Um operador pode ser binário, ou seja, requer 2 operandos (como em X / Y e em A * B) ou unário, isto é, exige apenas um argumento (como em -X). Cada tipo de dados possui um conjunto de operadores relacionados. 3.1 Prioridades das Operações Se vários operadores aparecerem em uma expressão, sua ordem de execução será dada segundo os seguintes critérios: 1. Pelo emprego explícito de parênteses; 2. Pela ordem de precedência existente entre os operadores; e 3. Se existirem operadores de mesma ordem de precedência, a avaliação será feita da esquerda para a direita. Como exemplo, qual será o resultado da expressão: * 5? A resposta é 25 ou 13? Como sabemos, na matemática a multiplicação precede a soma. Logo, a expressão pode ser lida assim: 3 + (2 * 5), o que resulta em 13. O uso de parêntesis facilita a leitura de expressões com múltiplos operadores, explicitando sua precedência. Vejamos a ordem de precedência dos operadores (da maior para a menor): Tabela 3.1 Precedência de Operadores OPERADOR PRECEDÊNCIA CATEGORIA Primeira Unária *, /, div, mod, and, shl, shr, Segunda Multiplicação as +, -, or, xor Terceira Adição <, <>, >, <=, >=, in, is Última Relacional 3.2 Tipos de Expressões As expressões podem ser divididas em três grupos: Numérica - quando os operandos e o resultado são numéricos (inteiros ou reais). Literal - quando os operandos e o resultado são literais do tipo string (não pode ser char). Só existe um operador para expressões literais: Concatenação ( + ). Edeyson Andrade Gomes

41 EXPRESSÕES 41 Booleana - quando seu resultado é do tipo boolean (TRUE ou FALSE). 3.3 Tipos de Operadores Existem vários operadores para a realização de expressões em Pascal, como detalhado a seguir. Operador de Atribuição O operador de atribuição é utilizado para atribuir o valor de uma expressão a uma variável. {Sintaxe:} nomedavariável := expressão; Exemplos de atribuições: 1 program VariaveisPascal; 2 3 var 4 a, b, c : integer; {Declara a, b e c como variáveis inteiras} 5 media : real; {Declara media do tipo real} 6 aprovado : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 7 endereco : string; {endereço é uma cadeia com 0 a 255 caracteres.} 8 CPF : string[11]; {O uso de [] delimita o número de caracteres.} 9 sexo : char; {char representa um único caracter.} begin 12 {Atribuições de valores às variáves} 13 endereco := 'Rua dos Alferes, 1234, Ap. 1001, Barra, Salvador, Bahia - CEP: '; 14 nome:= 'Jose da Silva Santos'; 15 CPF := ' '; 16 writeln('endereco: ', endereco, ' Cliente: ', nome, ' CPF: ', cpf); 17 sexo := 'M'; 18 a := 7; 19 b := a + 2; 20 c := 8; 21 media := (a + b + c) / 3; 22 readkey; 23 end. Listagem 3.1 Operador de Atribuição Das linhas 13 a 21, exceto a linha 16, temos atribuições de valores a variáveis de diversos tipos. Note que o que está após o := é uma expressão. Operadores Aritméticos Os operadores aritméticos são utilizados para efetuar operações aritméticas com números inteiros e reais. São eles: Subtração (-), Adição (+) e Multiplicação (*).

42 42 Programação com Pascal O operador de Divisão Real (/) só se aplica a números reais e os operadores de Divisão Inteira (DIV) e Resto da Divisão Inteira (MOD) só se aplicam a números inteiros. A (/) é chamada de Divisão Real, pois sempre resultará num número real. Não se pode garantir que a divisão de dois inteiros resultará num número inteiro, como é o caso da divisão de 10 por 3. Logo, para obter a parte inteira da divisão entre inteiros existe o operador DIV. O operador MOD fornece o resto inteiro da divisão. Exemplos: / 3 5,3333 (número real) 2. 7 / 2 3,5 (número real) DIV 3 5 (note que todos os fatores são inteiros) MOD 3 1 A listagem 11 apresenta um código que ilustra o uso de DIV e MOD apresentando o dividendo, divisor, quociente, resto numa divisão inteira e a Listagem 12 demonstra como extrair todos os dígitos de um número com 3 dígitos. 1 program UsoDivMod; 2 {Este programa demonstra o uso de DIV e MOD como operadores de inteiros.} 3 4 uses crt; 5 6 var 7 dividendo, divisor, quociente, resto : integer; 8 quocientereal : real; 9 10 begin 11 dividendo := 10; 12 divisor := 3; 13 quociente := dividendo div divisor; 14 quocientereal := dividendo / divisor; resto := dividendo mod divisor; writeln('dividendo: ', dividendo:3, ' Divisor: ', divisor:3); 19 writeln('quociente: ', quociente:3, ' Resto : ', resto:3); 20 writeln('quociente Real: ', quocientereal:3:4); readkey; {Para o programa até que algo seja teclado} 23 end. Listagem 3.2 Uso de DIV e MOD Na Listagem 11 as linhas 7 e 8 definem as variáveis dividendo, divisor, quociente e resto como inteiros e quocientereal como real. Tais variáveis representarão os elementos numa divisão. As linhas 11 e 12 iniciam o dividendo com 10 e o divisor com 3. A divisão entre 10 e 3 é uma dízima periódica 3.333, que será o valor de quocientereal calculado na linha 14. Pensando-se numa divisão com todos os fatores inteiros, quociente (linha 13) assumirá o valor 3 e resto (linha 16) assumirá o valor 1. Vale lembrar que 10 dividido por 3 é igual a 3 com resto 1 (10 = 3 * 3 + 1). Edeyson Andrade Gomes

43 EXPRESSÕES 43 O resultado da execução do programa da Listagem 11 é: Dividendo: 10 Divisor: 3 Quociente: 3 Resto : 1 Quociente Real: program UsoDivMod2; 2 {Este programa vai demonstrar o uso de DIV e MOD.} 3 4 uses crt; {Usa a biblioteca CRT onde está readkey} 5 6 var 7 numero, centena, dezena, unidade, resto : integer; 8 {Operações sobre Inteiros: +, -, *, DIV e MOD} 9 10 begin {inicia o programa} 11 {Atribuições de valores às variáves} 12 numero := 367; {XYZ = X * YZ} 13 centena := numero div 100; {centena = X} 14 resto := numero mod 100; {resto = YZ} {YZ = Y * 10 + Z} 15 dezena := resto div 10; {dezena = Y} 16 unidade := resto mod 10; {unidade = Z} writeln('centena: ', centena); 19 writeln('dezena: ', dezena); 20 writeln('unidade: ', unidade); readkey; {Para o programa até que algo seja teclado} end. {termina o programa} Listagem 3.3 Uso de DIV e MOD com Unidade, Dezena e Centena O objetivo do programa da Listagem 12 é apresentar os valores de unidade, dezena e centena de um número. Na linha 12 atribui-se o valor 367 à variável numero. Note que 367 = 3 * A linha 13 atribui à variável centena o valor de numero div 100, ou seja, o quociente inteiro da divisão entre 367 e 100, que resulta em 3. A linha 14 atribui à variável resto o valor de numero mod 100, o que representa o resto inteiro da divisão. Como número é igual a 367, resto será 67. Seguindo o raciocínio do uso de DIV e MOD, a linha 15 atribui 6 a dezena e a linha 16 atribui 7 a unidade. O resultado da execução do programa da Listagem 12 é: Centena: 3 Dezena : 6 Unidade: 7

44 44 Programação com Pascal Operador de Concatenação O operador de concatenação efetua a junção de duas variáveis ou constantes do tipo string. Por exemplo, suponha as strings nome e sobrenome. Nome armazena Edeyson e sobrenome, Gomes. Como obter uma string com o nome completo? Strings suportam a operação de soma (+) que funciona com a concatenação (junção). A Listagem 13 exibe um exemplo de concatenação de strings. 1 program ConcatenacaoDeStrings; 2 {Este programa vai demonstrar a Concatenação de Strings em Pascal.} 3 4 uses crt; 5 6 var 7 nome : string[20]; {Definição de variáveis} 8 sobrenome : string[20]; 9 nomecompleto : string[40]; begin 12 nome := 'Edeyson'; {Atribui Edeyson para a var. nome} 13 sobrenome:= 'Gomes'; {Atribui Gomes para a var. sobrenome} 14 nomecompleto := nome + ' ' + sobrenome; {Concatena nome, espaço em branco e sobrenome} 15 writeln('nome Completo: ', nomecompleto); {Exibe o nome completo} readkey; 18 end. Listagem Concatenação de Strings Na Listagem 13, as linhas 7, 8 e 9 declaram strings com tamanho definido. As variáveis nome e sobrenome só podem armazenar cadeias com, no máximo, 20 caracteres. Já a variável nomecompleto pode armazenar cadeias de até 40 caracteres. Na linha 12 atribui-se a string Edeyson à variável nome. Na linha 13 atribui-se Gomes para sobrenome. Note que na linha 14 faz-se uma operação de soma entre strings. Isso significa que as strings Edeyson, espaço em branco e Gomes serão concatenadas e o resultado atribuído à variável nomecompleto. O resultado da linha 15 será: Nome Completo: Edeyson Gomes. Edeyson Andrade Gomes

45 EXPRESSÕES 45 Operadores Relacionais Os operadores relacionais são utilizados para efetuar a comparação entre dados de mesmo tipo, por exemplo, se um número inteiro é maior que outro, se um número real é menor ou igual a outro, se duas strings são iguais, etc. Exemplo de operadores relacionais: Tabela 3.2 Operadores Relacionais OPERADOR SÍMBOLO Maior que > Menor que < Igual = Maior Igual >= Menor Igual <= Diferente <> 1 program OperadoresRelacionaisComInteger; 2 {Este programa vai demonstrar Operadores Relacionais do Pascal} 3 uses crt; 4 var 5 valorlogico : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 6 inteiro1, inteiro2 : integer; 7 8 begin 9 {Atribuições de valores às variáves} 10 inteiro1 := 10; 11 inteiro2 := 20; valorlogico := inteiro1 = inteiro2; 14 writeln('teste se ', inteiro1, ' eh = a ', inteiro2, ' : ', valorlogico); valorlogico := inteiro1 < inteiro2; 17 writeln('teste se ', inteiro1, ' eh < que ', inteiro2, ' : ', valorlogico); valorlogico := inteiro1 > inteiro2; 20 writeln('teste se ', inteiro1, ' eh > que ', inteiro2, ' : ', valorlogico); readkey; 23 end. Listagem 3.5 Operadores Relacionais com Integer Na Listagem 14 a linha 5 define uma variável valorlogico do tipo boolean, ou seja, ela só armazena Verdade (TRUE) ou Falso (FALSE). A linha 6 define duas variáveis inteiras que são inicializadas nas linhas 10 e 11, respectivamente. A linha 13, valorlogico := inteiro1 = inteiro2, precisa de destaque aos :=, que é o símbolo de atribuição do Pascal. Este atribui ao símbolo da esquerda do :=, no caso valorlogico, o valor lógico ou absoluto do que está à direita do símbolo.

46 46 Programação com Pascal A linha 13 é lida assim: o valor do inteiro1 é igual ao valor do inteiro2? Se sim, atribua TRUE para valorlogico; se não, atribua FALSE. A linha 14 imprime o resultado do teste lógico. Note que as linhas 16/17 e 19/20 fazem algo similar às linhas 13/14, apenas mudando o operador relacional. O resultado da execução do programa da Listagem 14 é: Teste se 10 eh = a 20 : FALSE Teste se 10 eh < que 20 : TRUE Teste se 10 eh > que 20 : FALSE 1 program OperadoresRelacionaisComString; 2 {Este programa vai demonstrar Operadores Relacionais do Pascal} 3 uses crt; 4 var 5 valorlogico : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 6 string1, string2 : string; 7 8 begin 9 {Atribuições de valores às variáves} 10 string1 := 'abc'; 11 string2 := 'def'; valorlogico := string1 = string2; 14 writeln('teste se ', string1, ' eh = a ', string2, ' : ', valorlogico); valorlogico := string1 > string2; 17 writeln('teste se ', string1, ' eh > que ', string2, ' : ', valorlogico); valorlogico := string1 < string2; 20 writeln('teste se ', string1, ' eh < que ', string2, ' : ', valorlogico); readkey; 23 end. Listagem 3.6 Operadores Relacionais com String Na Listagem 15, similar a Listagem 14, a linha 5 define uma variável valorlogico do tipo boolean, ou seja, ela só armazena Verdade (TRUE) ou Falso (FALSE). A linha 6 define duas variáveis do tipo string (cadeias de caracter) que são inicializadas nas linhas 10 e 11, respectivamente. A linha 13 é lida assim: o valor da string1 é igual ao valor do string2? Se sim, atribua TRUE para valorlogico; se não, atribua FALSE. A linha 14 imprime o resultado do teste lógico. Note que as linhas 16/17 e 19/20 fazem algo similar às linhas 13/14, apenas mudando o operador relacional. Note que strings podem ser comparadas com >, <, etc. O resultado da execução do programa da Listagem 15 é: Edeyson Andrade Gomes

47 EXPRESSÕES 47 Teste se abc eh = a def : FALSE Teste se abc eh > que def : FALSE Teste se abc eh < que def : TRUE 1 program OperadoresRelacionaisComReal; 2 {Este programa vai demonstrar Operadores Relacionais do Pascal} 3 uses crt; 4 var 5 valorlogico : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 6 real1, real2 : real; 7 8 begin 9 {Atribuições de valores às variáves} 10 real1 := 8/6; 11 real2 := 4/3; valorlogico := real1 > real2; 14 writeln('teste se ', real1:3:4, ' eh > que ', real2:3:4, ' : ', valorlogico); valorlogico := real1 = real2; 17 writeln('teste se ', real1:3:4, ' eh = a ', real2:3:4, ' : ', valorlogico); valorlogico := real1 < real2; 20 writeln('teste se ', real1:3:4, ' eh < que ', real2:3:4, ' : ', valorlogico); readkey; 23 end. Listagem 3.7 Operadores Relacionais com Reais A listagem 16 é similar a 14 e 15. Ressaltam-se as linhas 10 e 11 que fazem a atribuição de números não inteiros às variáveis real1 e real2. Fica como exercício sua execução e a observação do resultado. Operadores Lógicos O Pascal dispõe dos seguintes operadores lógicos: AND (E), OR (OU) e NOT (NÃO, NEGAÇÃO). Para compreendê-los, vamos fazer uma breve introdução à Lógica. A lógica é a ciência que estuda a correção do pensamento, do raciocínio. Quando elaboramos frases como: a) A Lua é maior que a Terra; b) A água do mar é salgada e c) 2 (dois) é o único número primo que é par, podemos determinar a elas um valor lógico verdadeiro ou falso. Logo, a é falso, b e c são verdade. Tais frases são chamadas de proposições, pois afirmam fatos, exprimem juízos.

48 48 Programação com Pascal A Lógica Matemática apresenta regras fundamentais do pensamento baseadas em dois princípios (Axiomas): a. Princípio da Não Contradição - uma proposição ou é Verdadeira ou é Falsa; b. Princípio do Terceiro Excluído - toda proposição ou é Verdadeira ou é Falsa - apenas esses valores são possíveis. Nas listagens 14, 15 e 16 foram elaboradas proposições, por exemplo, em valorlogico := inteiro1 = inteiro2. A proposição é: o inteiro1 tem o mesmo valor do inteiro2. O valor lógico (verdadeiro ou falso) desta proposição é armazenado na variável valorlogico e depende dos valores atribuídos a inteiro1 e inteiro2. Como exemplo, se inteiro1 armazena o valor 10 e inteiro2 armazena o valor 20, valorlogico é FALSO. As proposições usadas nas Listagens 14, 15 e 16 são ditas Simples ou Atômicas, pois não contém outra proposição como parte integrante. Uma proposição é dita Composta quando ela resulta da combinação (via conectivos E ou OU, por exemplo) de outras proposições. Por exemplo, supondo-se que se queira saber se um número x pertence ao Intervalo Fechado nos extremos a e b : [a, b] = { x ϵ R ; a x b }. Em Pascal necessitamos de uma proposição composta como segue: valorlogico := (x >= a) AND (x <= b); Esta proposição é lida da seguinte forma: Teste se x é maior ou igual a a E se x é menor ou igual a b. Se ambos forem verdade, e apenas neste caso, valorlogico será verdade. Note o seguinte: supondo o intervalo [1, 5]. Sendo a = 1 e b = 5; se x = 6 o teste 6 >= 1 é verdade, mas 6 <= 5 é falso, logo x = 6 não pertence ao intervalo [1, 5]. Por isso o valorlogico neste caso é falso. Uma proposição composta com conectivos AND só é verdade se todas as suas componentes são verdade. Pela teoria básica de conjuntos, define-se A B por: A B = { x / x ϵ A e x ϵ B } Podemos afirmar que x pertence a A B se, e somente se, x pertence a A AND x pertence a B, ou seja, pertence aos dois conjuntos simultaneamente. O conectivo AND opera a interseção entre proposições (e conjuntos). Vejamos um exemplo em Pascal: suponha que A = {1, 2, 3, 4, 5} e B = {4, 5, 6}. Se x ϵ A, então (x >= 1) AND (x <= 5) é verdade. Se x ϵ B, então (x >= 4) AND (x <= 6) é verdade. Se x ϵ A B, então ((x >= 1) AND (x <= 5)) AND ((x >= 4) AND (x <= 6)) é verdade. Ou seja, x ϵ {4, 5}. De outra forma, x ϵ [1, 5] [4, 6]. Edeyson Andrade Gomes

49 EXPRESSÕES 49 O uso de operadores lógicos é apresentado na Listagem program OperadoresLogicos; 2 {Este programa vai demonstrar Operadores Lógicos do Pascal} 3 uses crt; 4 var 5 valorlogico : boolean; {Variáveis lógicas - podem ser TRUE ou FALSE} 6 x, inicio, fim : integer; 7 8 begin 9 {Atribuições de valores às variáves} 10 inicio := 0; 11 fim := 10; 12 x := 5; valorlogico := (x > inicio) and (x > fim); 15 writeln('teste se ', x, ' eh > que ', inicio, ' E ', x, ' eh > que ', fim, ' : ', valorlogico); valorlogico := (x > inicio) and (x < fim); 18 writeln('teste se ', x, ' eh > que ', inicio, ' E ', x, ' eh < que ', fim, ' : ', valorlogico); valorlogico := (x > inicio) or (x > fim); 21 writeln('teste se ', x, ' eh > que ', inicio, ' OU ', x, ' eh > que ', fim, ' : ', valorlogico); valorlogico := ((x >= 1) and (x <= 5)) AND ((x >= 4) and (x <= 6)); 24 writeln('teste se ', x, ' esta entre 1 e 5 e se ', x, ' esta entre 4 e 6 simultaneamente : ', valorlogico); readkey; 27 end. Listagem 3.8 Operadores Lógicos Na Listagem 17, as linhas 5 e 6 definem as variáveis e as linhas 10 a 11 as iniciam. A linha 14 atribui à variável valorlogico o resultado do teste (valorlogico := (x > inicio) and (x > fim)), ou seja, se x é maior que inicio AND x é maior que fim. Logo, x tem de ser maior que o maior valor. Como inicio e fim foram iniciadas com 0 e 10, respectivamente, o teste só é verdade se x for maior que 10. Como x foi iniciada com 5, valorlogico é FALSE na linha 14. A linha 17 atribui à variável valorlogico o resultado do teste (valorlogico := (x > inicio) and (x < fim)), ou seja, se x é maior que inicio AND x é menor que fim. Como inicio e fim foram iniciadas com 0 e 10, respectivamente, o teste só é verdade se x for maior que 0 AND menor que 10. Como x foi iniciada com 5, valorlogico é TRUE na linha 14. A linha 20 atribui à variável valorlogico o resultado do teste (valorlogico := (x > inicio) or (x > fim)), ou seja, se x é maior que inicio OR x é maior que fim. Como inicio e fim foram iniciadas com 0 e 10, respectivamente, o teste só é verdade se x for maior que 0 OR maior que 10.

50 50 Programação com Pascal Diferente do AND, uma proposição composta com OR é verdade se pelo menos uma das proposições componentes for verdade. Como x foi iniciada com 5, valorlogico é TRUE, pois 5 é maior que 0, embora 5 seja menor que 10. A linha 23 atribui à variável valorlogico o resultado do teste (valorlogico := ( (x >= 1) and (x <= 5) ) AND ( (x >= 4) and (x <= 6) )), ou seja, se x deve estar no conjunto [1, 5] [4,6]. Note que o AND em maiúsculas só foi usado para destacar os conjuntos na expressão. Em Pascal não há distinção de maiúsculas e minúsculas. Como x tem o valor 5, o valorlogico é TRUE na linha 24. Ainda pela teoria básica de conjuntos, define-se A U B por: A U B = { x / x ϵ A or x ϵ B } Podemos afirmar que x pertence a A U B se, e somente se, x pertence a A OR x pertence a B, ou seja, pertence a um ou ao outro. O conectivo OR opera a união entre proposições (e conjuntos). Vejamos um exemplo em Pascal: suponha que A = {1, 2, 3, 4, 5} e B = {4, 5, 6}. Se x ϵ A, então (x >= 1) AND (x <= 5) é verdade. Se x ϵ B, então (x >= 4) AND (x <= 6) é verdade. Se x ϵ A U B, então ((x >= 1) AND (x <= 5)) OR ((x >= 4) AND (x <= 6)) é verdade. Ou seja, x ϵ {1, 2, 3, 4, 5, 6}. De outra forma, x ϵ [1, 5] U [4, 6]. Exercícios 1. Elabore um programa que deve: a. Declarar a variável x como inteira. b. Solicitar ao usuário para informar um valor para x. c. Determinar se x pertence aos intervalos: i. [2, 7] U [10, 15] ii. [1, 5) U [4, 10) U (20, 26] iii. [0, 10] [7, 15] iv. (0, 10] (7, 15) Edeyson Andrade Gomes

51 ESTRUTURAS DE DECISÃO Todos os programas de exemplo elaborados até este capítulo apresentam um conjunto de ações seqüenciais onde todas as ações são executadas numa mesma ordem. O modelo da Figura 2 (Fluxogramas são abordados no apêndice A) não é comum em programas quotidianos. Normalmente o programador se depara com ações que serão executadas ou não a depender de uma determinada situação. Entrada Ação 1 Ação 2 Saída Listagem 4.9 Fluxograma de sequência Quando uma ou mais ações dependem de uma ou mais condições para sua execução, necessitam-se de estruturas de decisão que controlam o fluxo de execução do programa efetuando tomadas de decisão e desvios de operações. Em Linguagem Natural podem-se descrever tais estruturas de decisão das seguintes formas: 1. Seleção com uma via: Se a condição é verdadeira então execute a ação Seleção com duas vias: Se a condição é verdadeira então execute a ação 1. Senão, execute a ação 2. Em ambas as formas a ação 1 só será executada se e somente se a condição for verdadeira. Na forma 1, seleção com uma via, caso a condição seja verdadeira adiciona-se uma ação ao fluxo normal do programa. Na forma 2, escolhe-se um caminho a seguir, executando a ação1 ou a ação 2. Observações: 1. Uma ação, como descrita no texto, não consiste apenas numa instrução. Ela pode ser executada por um bloco de comandos bloco de programa com demarcação de início e fim (usando-se BEGIN e END) que contém uma ou várias instruções. 2. A instrução Pascal end pode ser finalizado com um ponto-e-vírgula ( ; ) e não apenas com um ponto. O uso de ponto ao final de um end ocorre somente na finalização de um programa. 4.1 IF.. THEN A instrução do Pascal IF condição THEN ação pode ser lida assim: SE a condição é verdadeira ENTÃO execute a ação.

52 52 Programação com Pascal IF.. THEN tem por finalidade testar uma condição e tomar uma decisão e uma seleção com uma via. Se a condição é verdadeira, um bloco de comandos é executado. Em caso contrário, esse bloco é saltado. {Sintaxe:} IF condição THEN bloco de comandos A listagem 20 apresenta um código com seleção com uma via através de IF.. THEN. 1 program testanota; 2 uses crt; 3 {Declarar uma variável nota do tipo real;} 4 var nota : real; 5 begin 6 {Solicitar um valor para a nota;} 7 write('digite uma nota: '); 8 readln(nota); 9 {Se a nota for maior ou igual a 6.0, então imprimir: Aluno aprovado.} 10 if (nota >= 6.0) then 11 writeln('aluno aprovado.'); 12 {Parar o programa até que algo seja pressionado} 13 readkey; 14 end. Listagem 4.1 Seleção com uma Via IF.. THEN O programa da Listagem 4.1 é assim descrito: 1. Início do Algoritmo; a. Declarar uma variável nota do tipo real; b. Solicitar um valor para a nota; c. Se a nota for maior ou igual a 6.0, então imprimir: Aluno aprovado. 2. Terminar Algoritmo. Neste programa declara-se uma variável real chamada nota na linha 4. As linhas 7 e 8 solicitam o valor da nota (write) e efetuam sua leitura (readln), respectivamente. Na linha 10 testa-se se a nota lida é maior ou igual a 6 e, caso seja, e apenas com esta condição, escreve-se Aluno aprovado. Note que se a nota for menor que 6 o programa aguarda uma tecla ser pressionada linha 13 e acaba. Veja que neste código, após o IF não se colocou o par begin.. end, pois desejava-se executar uma ação com apenas uma instrução linha 11. Caso a ação desejada necessitasse de mais de uma instrução para executar, estas deveriam estar inseridas em um bloco de comandos. Edeyson Andrade Gomes

53 ESTRUTURAS DE DECISÃO 53 Início nota Nota >= 6.0 SIM Aluno aprovado Fim Listagem 4.2 Fluxograma da seleção com uma Via O fluxograma correspondente ao programa da Listagem 20 é apresentado na Figura 3. Através dele deve ficar claro que a mensagem Aluno aprovado será apresentada se, e somente se, a nota for maior ou igual a seis. 4.2 IF.. THEN.. ELSE Assim como a instrução IF condição THEN ação, a instrução IF condição THEN ação1 ELSE ação2 tem por finalidade testar uma condição e tomar uma decisão. Se a condição é verdadeira, um bloco de comandos após o THEN é executado. Se a condição é falsa, um bloco de comandos após o ELSE é executado. A instrução IF condição THEN ação1 ELSE ação2 pode ser lida assim: SE a condição é verdadeira ENTÃO execute a ação1. EM CASO CONTRÁRIO, execute a ação2. Suponha que no programa da Listagem 21 também fosse necessário informar se o aluno está reprovado. Neste caso tem-se duas vias: Se a nota é maior ou igual a 6, a via 1 é informar Aluno Aprovado. Senão, se a nota é menor que 6, a via 2 é informar Aluno Reprovado. A listagem 21 apresenta um código com seleção com duas vias através de IF.. THEN onde a ação possui múltiplas instruções. Note o bloco de comandos delimitado por BEGIN.. END. {Sintaxe:} IF condição THEN bloco de comandos ELSE Vloco de comandos O programa da Listagem 21 é assim descrito: 1. Início do Algoritmo; a. Declarar uma variável nota do tipo real;

54 54 Programação com Pascal b. Solicitar um valor para a nota; c. Se a nota for maior ou igual a 6.0, então imprimir: Aluno aprovado. d. Senão, imprimir: Aluno reprovado. 2. Terminar Algoritmo. 1 program testanota; 2 uses crt; 3 {Declarar uma variável nota do tipo real;} 4 var nota : real; 5 begin 6 {Solicitar um valor para a nota;} 7 write('digite uma nota: '); 8 readln(nota); 9 {Se a nota for maior ou igual a 6.0, então imprimir: Aluno aprovado.} 10 if (nota >= 6.0) then 11 writeln('aluno aprovado.') 12 else 13 writeln('aluno reprovado.'); {Parar o programa até que algo seja pressionado} 16 readkey; 17 end. Listagem 4.2 Seleção com 2 Vias IF.. THEN.. ELSE Observações: 1. Observe que um END antes de um ELSE não deve possuir ponto-e-vírgula ( ; ). Note que o que diferencia as Listagens 20 e 21 é que nesta a linha 10 testa se a nota lida é maior ou igual a 6 e, caso seja, e apenas com esta condição, escreve-se Aluno aprovado. Em caso contrário - teste da linha 12 - escreve-se se Aluno reprovado linha 13. Início nota NÃO Nota >= 6.0 SIM Aluno reprovado Aluno aprovado Fim Listagem Fluxograma da seleção com duas Vias O fluxograma correspondente ao programa da Listagem 21 é apresentado na Figura 4. Através dele deve ficar claro que a mensagem Aluno aprovado será apresentada se, e Edeyson Andrade Gomes

55 ESTRUTURAS DE DECISÃO 55 somente se, a nota for maior ou igual a seis e que Aluno aprovado será apresentada em caso contrário. Estas são as duas vias. Outro exemplo do uso de IF..THEN..ELSE está no programa da Listagem 22, que simula um débito numa conta corrente. O débito só é possível se há saldo e/ou limite disponíveis para isso. O programa é assim descrito: 1. Início do Algoritmo; a. Definir as variáveis saldo, limite e valoradebitar como real; b. Atribuir valores a saldo e limite; c. Solicitar ao usuário o valor a debitar; d. Se o saldo somado ao limite for maior que o valor a debitar, então: i. subtraia valoradebitar do saldo; ii. Imprima 'Debito efetuado com sucesso'. e. Senão: i. Imprima 'Saldo insuficiente'. f. Imprima: 'Fim da transacao. Pressione Alguma Tecla'; g. Pare o programa até que uma tecla seja pressionada. 2. Fim do algoritmo. A Listagem 22 exibe o programa que implementa o referido algoritmo. 1 program TesteContaCorrente; 2 {importação da biblioteca CRT} 3 uses crt; 4 var 5 {Definição das variáveis saldo, limite e valoradebitar do tipo real} 6 saldo, limite, valoradebitar : real; 7 begin 8 {limpa a tela} 9 clrscr; {Atribuição de valores a saldo e limite} 12 saldo := 200; 13 limite := 500; {Solicitar ao usuário o valor a debitar.} 16 writeln('qual o valor a debitar?'); 17 readln(valoradebitar); {Se o saldo somado ao limite for maior que o valor a debitar, então debite o valoradebitar do saldo} 21 if (saldo + limite > valoradebitar) then 22 begin 23 saldo := saldo - valoradebitar; 24 writeln('debito efetuado com sucesso.'); 25 end 26 {Senão, imprima: 'Saldo Insuficiente'} 27 else 28 begin 29 writeln('saldo insuficiente.'); 30 end; 31 writeln('fim da transacao. Pressione Alguma Tecla'); 32 readkey; 33 end. Listagem Seleção com duas Vias

56 56 Programação com Pascal Neste código testa-se na linha 21 se a variável saldo somada à variável limite tem valor maior que a variável valoradebitar. Se isto é verdade, a linha 23 subtrai do saldo o valoradebitar e a linha 24 imprime o sucesso do débito. Note que as linhas 22 a 25 e 28 a 30 compõem blocos de comandos delimitados por BEGIN.. END. Início saldo = 200 limite = 500 valoradebitar saldo + limite > valoradebitar NÃO SIM saldo = saldo - valoradebitar Saldo Insuficiente Debito efetuado com sucesso Fim da transacao. Pressione Alguma Tecla Fim Listagem Fluxograma da seleção com duas Vias O fluxograma correspondente ao programa da Listagem 21 é apresentado na Figura 4. A instrução IF condição THEN ação1 ELSE ação2 tem uma limitação: ela só oferece dois caminhos alternativos. Se a condição é verdadeira, segue-se o caminho que executa a ação1. Em caso contrário, segue-se o caminho que executa a ação2. É comum, contudo, a necessidade de aninhamento de IF quando a condição possui múltiplos caminhos alternativos (aninhamento de Seleções de Duas Vias.). Suponha o seguinte problema: uma seguradora dá descontos progressivos no seguro de automóvel em função da faixa etária do cliente. As faixas são as seguintes: a 25 anos: 3% de desconto; a 30 anos: 5% de desconto; a 45 anos: 8 % de desconto; Edeyson Andrade Gomes

57 ESTRUTURAS DE DECISÃO Acima de 45 anos: 10% de desconto. Uma especificação em Linguagem Natural para o cálculo do desconto concedido pode ser a seguinte, que chamaremos de Algoritmo Calcula Desconto 1: 1. Início do Algoritmo Calcula Desconto1; a. Ler um valor para a variável idade; b. Desconto é de 0%; c. Se a idade está entre 20 e 25 anos, o desconto é de 3%; d. Senão, Se a idade está entre 26 e 30 anos, o desconto é de 5%; e. Senão, Se a idade está entre 31 e 45 anos, o desconto é de 8%; f. Senão, Se a idade é maior que 45 anos, o desconto é de 10%; g. Informar o desconto. 2. Fim do algoritmo Calcula Desconto1. Um erro comum à especificação em Linguagem Natural seria o seguinte, que chamaremos de Algoritmo Calcula Desconto 2: 1. Início do Algoritmo Calcula Desconto2; a. Ler um valor para a variável idade; b. Desconto é de 0%; c. Se a idade está entre 20 e 25 anos, o desconto é de 3%; d. Se a idade está entre 26 e 30 anos, o desconto é de 5%; e. Se a idade está entre 31 e 45 anos, o desconto é de 8%; f. Se a idade é maior que 45 anos, o desconto é de 10%; g. Informar o desconto. 2. Fim do algoritmo Calcula Desconto2. Embora as duas especificações dêem o mesmo resultado, a primeira (Algoritmo Calcula Desconto 1) o faz de maneira ótima. Note que uma pessoa encontra-se numa única faixa etária, logo, se uma condição é satisfeita as demais não precisam ser testadas. O desconto sempre inicia em 0%, assumindo-se que não haverá desconto (casos de pessoas com menos de 20 anos). A segunda especificação (Algoritmo Calcula Desconto 2) obriga a execução de todos os testes de condição, o que é desnecessário. Vejamos os Fluxogramas: A Figura 6 apresenta o fluxograma do algoritmo Calcula Desconto 1. Como pode ser notado, caso uma condição seja atendida (SIM), o algoritmo determina o novo desconto, informa-o e termina. Caso o teste de uma condição falhe (NÃO), testa-se a próxima condição até que uma seja verdadeira, determinando o novo desconto, informando-o e terminando.

58 58 Programação com Pascal Início idade Desconto = 0% idade >= 20 e idade <= 25 NÃO idade >= 26 e idade <= 30 NÃO idade >= 31 e idade <= 45 NÃO idade > 45 SIM SIM SIM SIM Desconto = 3% Desconto = 5% Desconto = 8% Desconto = 10% Informar Desconto Fim Listagem 4.5 Fluxograma do Algoritmo Calcula Desconto 1 A Listagem 23 exibe o programa que implementa o algoritmo Calcula Desconto 1. 1 program CalculaDesconto1; 2 {importação da biblioteca CRT} 3 uses crt; 4 var 5 {Definição das variáveis idade e desconto como inteiras} 6 idade, desconto : integer; 7 begin 8 {limpa a tela} 9 clrscr; {Solicitar ao usuário o valor da idade.} 12 writeln('qual sua idade?'); 13 readln(idade); {Atribuição de valor inicial ao desconto} 16 desconto := 0; {Seleçõe aninhadas} 19 if (idade >= 20) and (idade <= 25) then 20 desconto := 3 21 else 22 if (idade >= 26) and (idade <= 30) then 23 desconto := 5 24 else 25 if (idade >= 31) and (idade <= 45) then 26 desconto := 8 27 else 28 if (idade >= 46) then 29 desconto := 10; writeln('o desconto eh de ', desconto, '%'); 32 readkey; 33 end. Listagem Calcula Desconto 1 Edeyson Andrade Gomes

59 ESTRUTURAS DE DECISÃO 59 Na Listagem 23, na linha 6 definem-se as variáveis inteiras idade e desconto. Nas linhas 12 e 13 solicita-se o valor da idade. Na linha 16 inicia-se o desconto com 0. A linha 19 testa se a idade está no limite [20, 25]. Se sim, atribui 3 ao desconto. Senão, inicia um novo teste aninhado na linha 22 verificando se a idade está no limite [26, 30]. Note que o aninhamento de IF fica mais legível graças à endentação do código. O processo da aninhamento e endentação continua para os demais limites de idade. A Figura 7 apresenta o fluxograma do algoritmo Calcula Desconto 2. Como pode ser notado, mesmo com uma condição sendo atendida (SIM), o algoritmo continua a testar desnecessariamente as demais condições para determinar o novo desconto, informandoo e terminando. Embora o Algoritmo Calcula Desconto 1 seja mais eficiente que o 2, há um problema. Imagine um conjunto com 20 condições. Com ficaria o fluxograma da Figura 6? Para eliminar o problema que surgiria é que existe a seleção com múltiplas vias (vide Apêndice A, e que é implementado com a instrução CASE. Início idade Desconto = 0% idade >= 20 e idade <= 25 NÃO SIM idade >= 26 e idade <= 30 NÃO Desconto = 3% SIM idade >= 31 e idade <= 45 NÃO Desconto = 5% SIM idade > 45 Desconto = 8% SIM Desconto = 10% Informar Desconto NÃO Fim Listagem Fluxograma do Algoritmo Calcula Desconto 2

60 60 Programação com Pascal Exemplos de Código Edeyson Andrade Gomes

61 ESTRUTURAS DE DECISÃO CASE Embora o aninhamento de IF seja comum quando a condição possui múltiplos caminhos alternativos, normalmente ela é usada com condições que necessitam de avaliação de um valor lógico verdadeiro ou falso. Em algumas situações, contudo, a condição pode ser avaliada para um conjunto de valores discretos, sendo estes inteiros ou caracteres. Por exemplo, imagine um sistema que automatiza uma URA (Unidade de Reconhecimento Audível), comum em atendimento telefônico pelo sistema Comumente são oferecidas opções entre 0 e 9. Cada opção leva a uma ação diferente. Por exemplo, vamos analisar o problema URA 01 a seguir. Uma solução de URA (URA 01) deve oferecer as seguintes opções e ações: 1 Saldo; 2 Extrato Parcial; 3 Extrato da Última Conta; 8 Falar com atendente; 9 Menu anterior. Uma especificação em Linguagem Natural para a URA 01 pode ser a seguinte, que chamaremos de Algoritmo URA 01 IF: 1. Início do Algoritmo URA 01 IF; a. Informar ao usuário quais as opções do menu; b. Solicitar ao usuário qual a opção desejada; c. Se a opção for 1, apresentar o saldo; d. Senão, Se a opção for 2, apresentar o Extrato Parcial; e. Senão, Se a opção for 3, apresentar o Extrato da Última Conta; f. Senão, Se a opção for 8, transferir a ligação para a atendente; g. Senão, Se a opção for 9, desviar para o menu anterior; h. Senão, informar opção inválida. 2. Fim do algoritmo URA 01 IF. Com esta especificação teremos um fluxograma muito semelhante ao da Figura 6. Todavia, existe a opção de reescrever o algoritmo usando Seleção com Múltiplas Vias ao invés de Aninhamento de Seleções de Duas Vias. Um exemplo é o seguinte Algoritmo URA 01 CASE: 1. Início do Algoritmo URA 01 CASE; a. Informar ao usuário quais as opções do menu; b. Solicitar ao usuário qual a opção desejada; c. Caso a opção seja: i. 1 : apresentar o saldo; ii. 2 : apresentar o Extrato Parcial; iii. 3 : apresentar o Extrato da Última Conta; iv. 8 : transferir a ligação para a atendente; v. 9 : desviar para o menu anterior;

62 62 Programação com Pascal vi. Outra, informar opção inválida. 2. Fim do algoritmo URA 01 CASE. A Figura 8 apresenta o fluxograma do algoritmo URA 01 CASE. Como pode ser notado, testa-se uma condição em busca de um valor específico (discreto) e desvia a execução para cada caso especificado. Início Exibir as opções opção opção 1 8 0, 4, 5, 6 ou Saldo Extrato Parcial Extrato Última Conta Transfere ligação para Atendente Desvia para o Menu Anterior Opção Inválida Fim Listagem 4.6 Fluxograma do algoritmo URA 01 CASE A implementação do algoritmo URA 01 CASE deve ser feito com o comando CASE, cuja sintaxe é descrita a seguir: {Sintaxe:} CASE variável OF Valor1 : Bloco de Comandos 1; Valor2 : Bloco de Comandos 2; Valor3 : Bloco de Comandos 3;... ELSE Bloco de Comandos n END; Observações: 1. A variável do CASE deve ser inteira ou caracter (integer ou char) apenas. 2. O ELSE é usado para tratar uma possível exceção de valor da variável Edeyson Andrade Gomes

63 ESTRUTURAS DE DECISÃO 63 A Listagem 24 exibe o programa que implementa o algoritmo URA 01 CASE. 1 program URA01Case; 2 {importação da biblioteca CRT} 3 uses crt; 4 var 5 {Definição das variável opção como inteira} 6 opcao : integer; 7 begin 8 {limpa a tela} 9 clrscr; {Informar opções ao usuário.} 12 writeln('tecle 1 para Saldo'); 13 writeln('tecle 2 para Extrato Parcial'); 14 writeln('tecle 3 para Extrato da Ultima Conta'); 15 writeln('tecle 8 para Transferir ligação para a Atendente'); 16 writeln('tecle 9 para Retornar ao Menu anterior'); 17 readln(opcao); case opcao of 20 1: begin 21 {código para apresentar saldo} 22 end; 23 2: begin 24 {código para apresentar o Extrato Parcial} 25 end; 26 3: begin 27 {código para apresentar o Extrato da última Conta} 28 end; 29 8: {transferir a ligação para a atendente}; 30 9: {desviar para o menu anterior}; 31 else 32 writeln('opcao Invalida'); 33 end; {end case} 34 readkey; 35 end. Listagem 4.5 Algoritmo URA 01 Case Na Listagem 24, a linha 6 define a variável opção como inteira. As linhas 12 a 17 exibem as opções da URA e a linha 17 lê a opção escolhida pelo usuário. A tomada de decisão do que fazer após a seleção da opção está entre as linhas 19 e 33. O CASE da Listagem 24 baseia-se no valor da variável opção. Para cada caso, um bloco de ações é sugerido. No caso, apenas fez-se a indicação de onde e como o bloco de comandos deve ser inserido linhas 20 a 22, por exemplo. Na linha 31 o ELSE captura qualquer valor de opção que não seja 1, 2, 3, 8 ou 9.

64 64 Programação com Pascal 4.4 EXERCÍCIOS Dado o programa TesteCondicional, escreva seu algoritmo em Linguagem Natural, seu fluxograma e reescreva-o usando CASE..ELSE. 1 program TesteCondicional; 2 {importação da biblioteca CRT} 3 uses crt; 4 var 5 condicao: integer; 6 7 begin 8 {limpa a tela} 9 clrscr; 10 {escreve no prompt de comando} 11 writeln('digite o valor da condicao: '); 12 {esperando que o usuário digite algo e atribua aa variável condicao} 13 readln(condicao); if (condicao = 1) then 16 writeln('a condicao eh 1') 17 else 18 if (condicao = 2) then 19 begin 20 writeln('a condicao eh 2'); 21 writeln('e dois eh par e primo'); 22 end 23 else 24 writeln('a condicao eh: ', condicao); 25 readkey; 26 end. Listagem 4.6 Exercício Teste Condicional Escrever um algoritmo em Linguagem Natural, fluxograma e em Pascal que, lendo três lados de um triângulo, determine se o mesmo é eqüilátero, isósceles ou escaleno. Opção 1 de solução em Linguagem Natural: 1. Início do Algoritmo Triângulos a. Obter os lados a, b e c b. Se os três lados são iguais, imprima que é Equilátero c. Senão, se dois lados são iguais, imprima que é Isósceles d. Senão, imprima que é Escaleno 2. Fim do Algoritmo Triângulos Opção 2 de solução em Linguagem Natural: 1. Início do Algoritmo Triângulos a. Obter os lados a, b e c b. Se a = b e b = c, imprima que é Equilátero Edeyson Andrade Gomes

65 ESTRUTURAS DE DECISÃO 65 c. Senão, se a = b ou b = c ou a = c, imprima que é Isósceles d. Senão, imprima que é Escaleno 2. Fim do Algoritmo Triângulos Fluxograma: Início a = b e b = c V Triângulo Equilátero F a, b, c a = b ou a = c ou b = c V Triângulo Isósceles F Triângulo Escaleno Fim Código: 1 program Triangulos; 2 3 uses crt; 4 var 5 lado1, lado2, lado3 : integer; 6 7 begin 8 writeln('digite o lado 1'); 9 readln(lado1); writeln('digite o lado 2'); 12 readln(lado2); writeln('digite o lado 3'); 15 readln(lado3); if (lado1 = lado2) and (lado2 = lado3) then 18 writeln('triangulo Equilatero') 19 else 20 if ((lado1 = lado2) or (lado1 = lado3) or (lado2 = lado3) ) then 21 writeln('triangulo Isosceles') 22 else 23 writeln('triangulo Escaleno'); 24 readkey; 25 end. Listagem 4.7 -

66 66 Programação com Pascal 5 ESTRUTURAS DE REPETIÇÃO Um método recomendado à construção de algoritmos (Top-Down) reforça a busca de pequenos passos, simples, que possam ser resolvidos manualmente por um humano. A composição de passos simples é a melhor forma de construir um algoritmo complexo. Em muitas situações, um conjunto de passos simples é repetido um número determinado de vezes. Por exemplo, suponha um problema onde se deseja ler uma coleção de 100 notas e, para cada uma, determinar se o aluno foi aprovado (nota maior ou igual a seis) ou reprovado (nota menor que seis). Os passos que devem ser repetidos são facilmente identificados: determinar se o aluno foi aprovado ou não. Uma seleção com duas vias resolve este problema, contudo, necessita-se testar uma coleção de 100 notas. Para isto, necessita-se de uma estrutura de repetição. Uma solução possível, porém muito ruim pela repetição de código, seria assim descrito: 1. Início do Algoritmo Le100Notas; a. Declarar uma variável nota do tipo real; b. Solicitar um valor para a nota 1; c. Se a nota 1 for maior ou igual a 6.0, então imprimir: Aluno aprovado. d. Senão, imprimir: Aluno reprovado. e. Solicitar um valor para a nota 2; f. Se a nota 2 for maior ou igual a 6.0, então imprimir: Aluno aprovado. g. Senão, imprimir: Aluno reprovado. h.... i. Solicitar um valor para a nota 100; j. Se a nota 100 for maior ou igual a 6.0, então imprimir: Aluno aprovado. k. Senão, imprimir: Aluno reprovado. 2. Terminar Algoritmo Le100Notas. Analisando-se o algoritmo Le100Notas nota-se que um conjunto de passos (ler a nota, testar e tomar uma decisão em duas vias) se repetirá 100 vezes. Imagine repetir o trecho de código entre a leitura da nota e sua análise 100 vezes. Isso é viável? E se a coleção fosse maior? Em situações com essas, onde é necessária a repetição de um determinado trecho de código, usam-se estruturas de repetição, também chamadas de laços. Uma forma mais apropriada de escrever o mesmo algoritmo é o seguinte: 1. Início do Algoritmo RepeteTesteNotas; a. Declarar uma variável nota do tipo real; b. Repetir 100 vezes: i. Solicitar um valor para a nota; Edeyson Andrade Gomes

67 ESTRUTURAS DE REPETIÇÃO 67 ii. Se a nota for maior ou igual a 6.0, então imprimir: Aluno aprovado. iii. Senão, imprimir: Aluno reprovado. 2. Terminar Algoritmo RepeteTesteNotas. O fluxograma correspondente ao algoritmo RepeteTesteNotas encontra-se na Figura 5.1. Início i = 0 Fim NÃO i < 40 SIM nota NÃO Nota >= 6.0 SIM Aluno reprovado Aluno aprovado i = i + 1 Listagem 8.1 Fluxograma RepeteTesteNotas Note que o fluxograma inicia i com zero e testa se i é menor que 40. A variável i é usada como um contador de vezes que o algoritmo executa a leitura e o teste das notas. Assim, enquanto i for menor que 40 não se chega ao fim da repetição. Um dos passos do algoritmo no fluxograma é incrementar o valor de i para indicar que um passo foi executado. Sem isso, nunca se chegaria ao fim. À estrutura de volta a um ponto do algoritmo para que este seja repetido chama-se de Laço. Os laços dividem-se em dois grupos: Laços Finitos: o número de repetições do laço é conhecido; Laços Infinitos (indeterminados): o número de repetições do laço é desconhecido previamente.

68 68 Programação com Pascal 5.1 FOR O comando FOR permite a repetição de um comando, ou bloco de comandos, um número finito de vezes. Esse número é determinado por uma variável denominada de contador do FOR. Sua sintaxe é: {Sintaxe 1:} for contador := início to fim do Comando; {Sintaxe 2:} for contador := início to fim do begin Bloco de Comandos; end; Caso o laço contenha um único comando, usa-se a sintaxe 1 ou a 2. Caso seja um bloco de comandos, usa-se a sintaxe 2, obrigatoriamente. O ponto central para o entendimento do FOR é o entendimento de seu fluxo de execução. Por exemplo, com a sintaxe 2 tem-se o seguinte: {Sintaxe 1:} for contador := início to fim do begin Bloco de Comandos; end; Os passos do fluxo de execução do comando FOR são os seguintes: 1. O FOR inicia o contador com o valor de início. 2. O FOR inicia um laço de execução: a. O FOR testa se o contador é <= fim (condição de controle); b. Se sim: i. executa o Bloco de Comandos; ii. o FOR incremente automaticamente o contador em um; iii. volta ao laço (passo 2.a). c. Senão: i. Para e sai do FOR. O Fluxo de Execução para o FOR com a sintaxe 1 altera apenas o Bloco de Comandos (subitem 2.b.i) para um Comando Simples (que não necessita ser delimitado por begin..end). Usando o comando FOR, a implementação do algoritmo RepeteTesteNotas fica como apresentado na Listagem 5.1. Edeyson Andrade Gomes

69 ESTRUTURAS DE REPETIÇÃO 69 1 program RepeteTesteNotas; 2 {Importa a biblioteca CRT para usar ReadKey} 3 uses crt; 4 5 {Declara as variáveis} 6 var nota : real; 7 i : integer; {Variável que ajudará a contar número de repetições} 8 9 {Inicia o programa principal} 10 begin 11 for i := 1 to 40 do 12 begin 13 write('digite a nota do aluno entre 0 e 10: '); 14 readln(nota); if (nota >= 6) then 17 writeln('aluno aprovado') 18 else 19 writeln('aluno reprovado'); 20 end; 21 end. Listagem 5.1 Uso de For para repetir teste de notas A linha 11 inicia um laço de repetição de 40 vezes. Ela pode ser lida assim: faça i variar de 1 até 40 e, para cada valor de i neste intervalo (incluindo 1 e 40) faça o que está entre o begin..end. Tudo que está entre o begin (linha 12) e o end (linha 20), que compõe um bloco de comandos, será repetido 40 vezes. Isso é garantido se o programador não mudar o valor de i (que é incrementado automaticamente pelo FOR). As linhas 13 e 14 solicitam a digitação de uma nota entre 0 e 10. A linha 16 teste se a nota digitada é maior ou igual a seis. Em caso verdadeiro, escreve Aluno aprovado (linha 17). Senão (linha 18), escreve Aluno reprovado (linha 19). Na Listagem 5.2 temos outro exemplo do FOR. Veja que a variável contador pode ter qualquer nome (neste exemplo, numerodalinha) e é inteira. O programa imprimirá 8 vezes linha seguido do número do contador. Na Listagem 5.2 a linha 11 determina o laço de repetição. As linhas 11 e 12 podem ser lidas como: faça o numerodalinha variar entre 1 e 8 e para cada valor neste intervalo imprima: linha: concatenado ao numerodalinha. Neste caso, o FOR não usa o begin..end, pois será executando apenas um comando por vez (sintaxe 1).

70 70 Programação com Pascal 1 program ForSimples; 2 3 uses crt; 4 5 var 6 numerodalinha : integer; 7 8 begin 9 clrscr; for numerodalinha := 1 to 8 do 12 writeln('linha: ', numerodalinha); readkey; 15 end. Listagem 5.2 For Simples A descrição do algoritmo da Listagem 5.2 é o seguinte: 1. Início do Algoritmo ForSimples; a. Para cada valor de numerodalinha entre 1 e 8 faça: i. Imprimir: linha: concatenado com o valor de numerodalinha. 2. Terminar Algoritmo ForSimples. O Fluxograma do ForSimples está na Figura 5.2. Os elementos em amarelo são controlados automaticamente pelo FOR. São eles: atribuição inicial da variável de controle, teste da condição de controle e incremento da variável contadora de iterações no laço. Início numerodalinha = 1 numerodalinha <= 8 NÃO Fim SIM Nota : i numerodalinha = numerodalinha + 1 Listagem 6.2 Fluxograma do ForSimples O resultado da execução do programa ForSimples é o seguinte: Edeyson Andrade Gomes

71 ESTRUTURAS DE REPETIÇÃO 71 linha: 1 linha: 2 linha: 3 linha: 4 linha: 5 linha: 6 linha: 7 linha: 8 Para entender melhor tal resultado, deve-se seguir o Fluxo de Execução para o FOR da linha 11: 1. Inicie o numerodalinha com o valor Inicie o Laço (execução do Comando). a. Teste se o numerodalinha é <= 8; b. Se sim: i. execute o comando: writeln('linha: ', numerodalinha);; ii. incremente o numerodalinha; {Isso é feito automaticamente pelo FOR} iii. Volte ao laço (passo 2.a). c. Senão: i. Pare. O Passo a Passo de execução da Listagem 5.2 é o seguinte: 1: numerodalinha = 1 2.a: numerodalinha é menor que 8? 2.b: sim o 2.b.i escreva linha: 1 o 2.b.ii numerodalinha = 2 o 2.b.iii Voltar a 2.a 2.a: numerodalinha é menor que 8? 2.b: sim o 2.b.i escreva linha: 2 o 2.b.ii numerodalinha = 3 o 2.b.iii Voltar a 2.a 2.a: numerodalinha é menor que 8? 2.b: sim o 2.b.i escreva linha: 3... Uma dúvida comum ao entendimento do fluxograma da Figura 5.1 é o que significa numerodalinha := numerodalinha + 1. Em programação (assim como na matemática) toda atribuição se inicia da direita para a esquerda. Quando se escreve: x = , soma-se 10 com 5 e atribui-se o resultado a x. Logo, x resultará em 15.

72 72 Programação com Pascal E quando se escreve x = x + 5? Qual o resultado? O que isso significa é: compute o valor atual de x acrescido de 5 e atribua à mesma variável x. Logo, se x era 15, passará a ser 20. Escrever x = x + y significa acumular o valor y ao de x. O novo valor de x será igual a seu valor antigo acrescido de y. O FOR se vale disso para fazer o incremento da variável de controle. 1 for i := 1 to 2 do 2 begin 3 writeln('valor de i: ', i); 4 end; Listagem 5.3 uso do FOR No trecho de código da Listagem 5.3, o Bloco de Comandos (linhas 2, 3 e 4) vai ser executado 2 vezes, com i assumindo os valores 1 e 2. Quando i for 3, o teste 2.a, do fluxo de execução do FOR, que testa se i <= 2, informa que o FOR acabou. Isso é explicado na Figura 5.3, onde a seta indica a linha sendo executada. Edeyson Andrade Gomes

73 ESTRUTURAS DE REPETIÇÃO 73 Listagem 6.3 Passo a passo do FOR. Observações: 1. Note que se a variável usada como contador for alterada entre 2.a e 2.b.iii, o número de repetições pode mudar. Vejamos uma alteração intencional do contador com a mudança do fluxo de repetições: 1 for i := 3 to 10 do 2 begin 3 writeln('valor de i: ', i); 4 i := i + 5; 5 end; Listagem 5.4 Exemplo de FOR Note que o contador (no caso, a variável i) pode iniciar em qualquer valor. Neste trecho de código da Listagem 5.4 (linha 1) ele inicia em 3. O que este trecho de código fará? Veja que neste exemplo o contador i é incrementado no bloco (linha 4) e também pelo FOR (linha 1) automaticamente.

74 74 Programação com Pascal Neste caso, o Bloco de comandos (linhas 3 e 4) vai ser executado 2 vezes, com i assumindo os valores 3 e 9. Quando i for 15, o teste (i <= 10) informa que o FOR acabou. Vamos seguir o Fluxo de Execução na Figura 5.4. Edeyson Andrade Gomes

75 ESTRUTURAS DE REPETIÇÃO 75 O comando FOR apresentado até agora suporta o incremento automático da variável denominada de contador, o que é chamado de FOR Crescente. Existe, ainda, o FOR Decrescente, que decrementa o contador {Sintaxe 1:} for contador := fim downto início do Comando; {Sintaxe 2:} for contador := fim downto início do begin Bloco de Comandos; end; O raciocínio de uso é o mesmo, a principal diferença é a inversão do início e fim e o decremento do contador. 5.2 WHILE.. DO O comando WHILE.. DO permite a repetição de um comando, ou bloco de comandos, um número finito ou indeterminado de vezes. O número de repetições é determinado por uma condição de controle que deve ser testada antes da execução do comando (ou bloco de comandos). {Sintaxe 1:} while condição do Comando; {Sintaxe 2:} while condição do begin Bloco de Comandos; end;

76 76 Programação com Pascal Note que o comando, ou bloco de comandos, só será executado se a condição for avaliada como verdadeira. Pode-se ler o comando como: ENQUANTO a condição for verdadeira, FAÇA: executar comando (ou bloco de comandos). A principal característica do WHILE é efetuar um teste lógico no início de um loop (laço), verificando se é permitido executar o trecho de instruções abaixo dela. Desta forma, poderá executar um determinado conjunto de instruções enquanto a condição verificada permanecer verdadeira. No momento em que a condição se torna falsa, o processamento da rotina é desviado para fora do laço. Sendo a condição falsa logo no início do laço, as instruções contidas nele são ignoradas. Usando o comando WHILE.. DO, vamos elaborar um programa para imprimir todos os números entre 1 e 10. Para isto, a condição será os números serem maiores que 0 e menores ou iguais a 10. Usando o FOR, o programa seria como a Listagem for i := 1 to 10 do 2 begin 3 writeln('valor de i: ', i); 4 end; Listagem 5.5 Listagem de números de 1 a 10 Note que o FOR controla implicitamente a condição, fazendo o i (controle) variar entre 1 e 10. Para fazer o mesmo com o WHILE, necessitamos de um código similar. Vamos iniciar uma variável de controle com 1 e fazê-la variar explicitamente de 1 em 1, até chegar a 10. Por exemplo, vejamos a Listagem program whilesimples; 2 uses crt; 3 var i : integer; 4 5 begin 6 i := 1; 7 while (i <= 10) do 8 begin 9 writeln('valor de i: ', i); 10 i := i + 1; 11 end; 12 readkey; 13 end. Listagem 5.6 Listagem de números de 1 a 10 A linha 6 inicia a variável i com 1, pois desejam-se os números entre 1 e 10. Logo, ela tem de iniciar em 1. Como o maior valor deve ser o 10, i terá de variar até 10. Isso deve ser garantido pela condição do WHILE, o que é feito na linha 7. Edeyson Andrade Gomes

77 ESTRUTURAS DE REPETIÇÃO 77 Tem-se, então, um laço de repetição de 10 vezes. Porém, isso só é verdade se i for incrementado de 1 em 1, como é feito na linha 10. Isso garante que i será um valor do conjunto {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}. Se a linha 10 fosse i := i + 5, i passaria de 1 para 6, por exemplo, não atendendo o que se deseja. O código da Listagem 5.6 pode ser lido assim: inicie i em 1, faça i variar de 1 em 1 até 10 e, enquanto i for menor que 10, imprima seu valor. Tudo que está entre o begin (linha 5) e o end (linha 13), que compõe um bloco de comandos, será repetido 10 vezes. Isso é garantido se o programador incrementar o valor de i de 1 em 1. O fluxograma do programa da Listagem 5,6 é apresentado na Figura 5.AA Início i = 1 i <= 10 NÃO Fim SIM Valor de i: i i = i + 1 Figura 5.AA While com Contador Uma alteração interessante a este programa é o seguinte: imprimir todos os número pares entre 1 e 10. Apresentaremos duas soluções possíveis a este problema. Na solução 1, exibida na Listagem 5.7, vamos iniciar uma variável de controle com 1 e fazê-la variar explicitamente de 1 em 1, até chegar a 10. Embora a solução seja similar a anterior, o bloco de comandos deve filtrar os elementos a exibir.

78 78 Programação com Pascal 1 program whilepares; 2 uses crt; 3 var i : integer; 4 5 begin 6 i := 1; 7 while (i <= 10) do 8 begin 9 if (i mod 2 = 0) then 10 writeln('valor de i: ', i); 11 i := i + 1; 12 end; 13 readkey; 14 end. Listagem 5.7 Listagem de números de 1 a 10 A principal alteração da Listagem 5.7 para a 5.6 está na adição da condicional na linha 9. Agora, um número só será impresso se ele for par, ou seja, o resto da divisão de i por 2 é zero (i mod 2 = 0), logo, i é divisível por 2. O fluxograma desta solução é apresentado na Figura 5.BB Início i = 1 i <= 10 NÃO Fim SIM i mod 2 = 0 SIM Valor de i: NÃO Laço do While i i = i + 1 Figura 5.BB Pares entre 1 e 10 com WHILE Na solução 2, exibida na Listagem 5.8, vamos usar um pouco de matemática. Como se desejam os números pares entre 1 e 10, sabe-se que o primeiro número válido é 2. Logo, pode-se iniciar a variável de controle i com 2. Edeyson Andrade Gomes

79 ESTRUTURAS DE REPETIÇÃO 79 E, como se desejam apenas os pares, vamos variar explicitamente i de 2 em 2, até chegar a 10. Assim, teremos {2, 4, 6, 8, 10}. Vejamos a solução 1 program whilepares; 2 uses crt; 3 var i : integer; 4 5 begin 6 i := 2; 7 while (i <= 10) do 8 begin 9 writeln('valor de i: ', i); 10 i := i + 2; 11 end; 12 readkey; 13 end. Listagem 5.8 Listagem de números de 1 a 10 A principal alteração da Listagem 5.7 para a 5.6 está no início da variável i e em seu incremento, agora de 2 em 2 (linha 10). Como i inicia em 2, teremos os valores {2, 4, 6, 8, 10}. O fluxograma desta solução é apresentado na Figura 5.CC Início i = 2 i <= 10 NÃO Fim SIM Valor de i: i Laço do While i = i + 2 Figura 5.CC Os exemplos apresentados até agora usaram o WHILE com laços finitos, pois havia uma condição de parada. Todavia, no seguinte problema, teremos um laço infinito (indeterminado):

80 80 Programação com Pascal Início do Algoritmo WhileQuadrado 1. Solicitar ao usuário para digitar um número. 2. Enquanto o número digitado não for zero, faça: a. imprimir o quadrado do número; b. solicitar ao usuário para digitar um número. Fim do Algoritmo WhileQuadrado Quando o algoritmo WhileQuadrado chegará ao fim? Isso é indeterminado, pois não se sabe quando o usuário digitará o número 0. O fluxograma deste algoritmo está na Figura 5.DD Início i i <> 0 NÃO Fim SIM i * i Laço do While i Figura 5.DD While O código deste algoritmo está na Listagem program whilequadrados; 2 uses crt; 3 var i : integer; 4 5 begin 6 writeln('digite um valor. 0 para terminar.'); 7 readln(i); 8 9 while (i <> 0) do 10 begin 11 writeln('o quadrado de : ', i, ' eh: ', i * i); writeln(#10, #10, #13, 'Digite um valor. 0 para terminar.'); 14 readln(i); 15 end; 16 readkey; 17 end. Listagem 5.9 While Edeyson Andrade Gomes

81 ESTRUTURAS DE REPETIÇÃO 81 No código da Listagem 5.9, a linha 6 imprime uma mensagem e a 7 lê um valor para i. A linha 9 inicia um laço que se repetirá enquanto i for diferente de 0 (i <> 0). Se o usuário iniciar digitando 0, a condição da linha 9 faz com que o laço não seja executado. A linha 11 imprime o quadrado do número lido e a 13 solicita outro valor. Destaca-se o uso de #10 (nova linha) e #13 (retorno de cursor) para criar duas linhas em branco e posicionar o cursor na coluna da esquerda, na tela. A linha 14 lê um novo valor para i. Note que enquanto i for diferente de 0, o bloco de comando entre as linhas 10 e 15 se repetirá. Isso é um laço infinito. Desafios 1. Imprimir todos os múltiplos de 5 entre 1 e 100 usando WHILE e sem usar IF ou Case. 2. Imprimir todos os múltiplos de 3 e 5 entre 1 e 100 usando WHILE e sem usar IF ou Case. 3. Imprimir todos os múltiplos de 3 ou 5 entre 1 e 100 usando WHILE e sem usar IF ou Case.

82 82 Programação com Pascal 5.3 REPEAT.. UNTIL O comando REPEAT.. UNTIL permite a repetição de um comando, ou bloco de comandos, um número finito ou indeterminado de vezes. O número de repetições é determinado por uma condição de controle que deve ser testada após a execução do comando (ou bloco de comandos). Note que sua principal diferença para o WHILE..DO está onde o teste será feito. Como o WHILE executa o teste da condição ANTES do comando, pode ser que este nunca seja executado (no caso da condição ser falsa). O REPEAT testa a condição APÓS e execução do comando, o que significa que, ao menos, este será executado uma vez. {Sintaxe:} repeat Bloco de Comandos; until (condição); Note que o comando, ou bloco de comandos, será executado até que a condição seja avaliada como verdadeira, outra diferença para o WHILE, que executa até a condição ser falsa. Pode-se ler o comando como: REPITA a execução do bloco de comandos ATÉ QUE a condição seja falsa. A principal característica do REPEAT..UNTIL é efetuar um teste lógico ao final de um loop (laço), verificando se é permitido continuar a execução do trecho de instruções. Desta forma, poderá executar um determinado conjunto de instruções enquanto a condição verificada permanecer falsa. No momento em que a condição se torna verdadeira, o processamento da rotina é desviado para fora do laço. Usando o comando REPEAT..UNTIL, vamos elaborar um programa para imprimir todos os números entre 1 e 10. Para isto, a condição será os números serem maiores que 0 e menores ou iguais a 10, tal qual com WHILE..DO. O Fluxograma encontra-se na Figura 5.EE. Comparando-o com o mesmo fluxograma do WHILE, Figura 5., nota-se que a única diferença está onde o teste da condição é feito. Edeyson Andrade Gomes

83 ESTRUTURAS DE REPETIÇÃO 83 Início i = 1 Valor de i: i Laço do Repeat i = i + 1 i > 10 SIM Fim Figura 5.EE Repeat Until de 1 a 10 O código está na Listagem program Repeat1a10; 2 uses crt; 3 var i : integer; 4 5 begin 6 i := 1; 7 repeat 8 writeln('valor de i: ', i); 9 i := i + 1; 10 until (i > 10); 11 readkey; 12 end. Listagem 5.10 Listagem de números de 1 a 10 A linha 6 inicia a variável i com 1, pois desejam-se os números entre 1 e 10. Logo, ela tem de iniciar em 1. Como o maior valor deve ser o 10, i terá de variar até 10. Isso deve ser garantido pela condição do REPEAT, o que é feito na linha 10, que pode ser lida: execute os comandos ATÉ QUE i seja maior que 10. Note que a condição é diferente da do WHILE. Aqui, informamos quando o laço deve terminar. Tem-se, então, um laço de repetição de 10 vezes. Porém, isso só é verdade se i for incrementado de 1 em 1, como é feito na linha 9. Isso garante que i será um valor do conjunto {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.

84 84 Programação com Pascal O código da Listagem 5.10 pode ser lido assim: inicie i em 1 e repita: imprima i e incremente-o de 1 em 1 até que seja maior que 10. Observações: 1. O REPEAT..UNTIL já delimita por si só o bloco de comandos, tornando o uso de BEGIN..END opcional. 2. Note que os comandos entre o REPEAT e o UNTIL compõem o bloco de comandos e serão repetidos. Na Listagem 5.11 apresentaremos a conversão do programa da Listagem 5.7 para o uso de REPEAT..UNTIL. Os passos para isto são os seguintes: 1. Onde se tem WHILE, substituir por REPEAT; 2. Eliminar, se houver, o begin do início do bloco de comandos e substituir o end pelo UNTIL; Lembrar que o REPEAT..UNTIL delimita um bloco de comandos. 3. Negar a condição do WHILE e movê-la para a condição do UNTIL; a. Neste caso, a negação de (i <= 10) é (i > 10). 1 program repeatpares; 2 uses crt; 3 var i : integer; 4 5 begin 6 i := 1; 7 repeat 9 if (i mod 2 = 0) then 10 writeln('valor de i: ', i); 11 i := i + 1; 12 until (i > 10); 13 readkey; 14 end. Listagem 5.11 Listagem de números de 1 a 10 O fluxograma desta solução é apresentado na Figura 5.FF Edeyson Andrade Gomes

85 ESTRUTURAS DE REPETIÇÃO 85 Início i = 1 i mod 2 = 0 SIM Valor de i: NÃO Laço do Repeat i i = i + 1 i > 10 SIM Fim Figura 5.FF Desafios 4. Imprimir todos os múltiplos de 5 entre 1 e 100 usando REPEAT e sem usar IF ou Case. 5. Imprimir todos os múltiplos de 3 e 5 entre 1 e 100 usando REPEAT e sem usar IF ou Case. 6. Imprimir todos os múltiplos de 3 ou 5 entre 1 e 100 usando REPEAT e sem usar IF ou Case.

86 86 Programação com Pascal 6. Arrays Um Array, também chamado de vetor, quando unidimensional, ou matriz, quando bidimensional, é uma estrutura simples de dados. Arrays mantêm uma coleção de elementos, do mesmo tipo de dados. Elementos individuais são acessados por sua posição no array, que é determinada por um índice. {Sintaxe:} nomedovetor : array [início..fim] of tipodedados; Em Pascal, define-se um array informando-se qual o valor de seu primeiro e último índice (início e fim, respectivamente). Por exemplo, analisemos o seguinte código: 1 program TesteArray; 2 uses crt; 3 4 var 5 a : array[1..2] of integer; 6 i : integer; 7 8 begin 9 i := 10; 10 a[1] := -5; {Coloca -5 na posição 1 do vetor a} 11 a[2] := 2; {Coloca 2 na posição 2 do vetor a} writeln('i: ', i); 14 writeln('a[1]: ', a[1]); 15 writeln('a[2]: ', a[2]); 16 readkey; 17 end. Na linha 5 declara-se a variável a como sendo um array de inteiros e na linha 6 declarase i como um inteiro. O que diferencia i de a é que i representa um único inteiro, ou seja, um único valor inteiro. Pode-se atribuir um único valor inteiro para i e acessá-lo diretamente pelo nome da variável. Imagine que para cada variável, o sistema reserva uma área de memória com seu nome. Referenciar o nome i significa para o sistema acessar seu conteúdo, como representa a Figura XYZ. Figura 6.XYZ A variável a, contudo, possui índices 1 e 2 (especificado por [1..2], sendo início = 1 e fim = 2). Logo, a pode armazenar 2 valores distintos. A linha 10 atribui o valor -5 à posição 1 do array a. A linha 11 atribui 2 à sua segunda posição. Edeyson Andrade Gomes

87 ESTRUTURAS DE REPETIÇÃO 87 Não se pode acessar a variável a pelo nome, pois ela exige um índice, como representa a Figura ZZZ. Figura 7 Imagine que, para cada vetor, o sistema reserva uma área de memória com várias posições. Logo, apenas o nome (a, por exemplo) não serve para identificar qual posição se quer acessar. Por isso necessita-se do índice (a[1] e a[2]), que indica a posição correta dentro da área reservada. O seguinte problema ilustra o uso de vetores: desejam-se ler 5 valores e, após isso, imprimir os pares separados dos ímpares. Uma solução está na Listagem 6.XX 1 program paresimparessemarray; 2 uses crt; 3 var v1, v2, v3, v4, v5 : integer; 4 5 begin 6 writeln('problema: ler 5 valores e, apos isso, imprimir os pares separados dos ímpares'); 7 write('digite o valor 1: '); read(v1); 8 write('digite o valor 2: '); read(v2); 9 write('digite o valor 3: '); read(v3); 10 write('digite o valor 4: '); read(v4); 11 write('digite o valor 5: '); read(v5); writeln(#10, #10, #13, 'Imprimindo os Valores Pares'); 14 if (v1 mod 2 = 0) then writeln(v1); 15 if (v2 mod 2 = 0) then writeln(v2); 16 if (v3 mod 2 = 0) then writeln(v3); 17 if (v4 mod 2 = 0) then writeln(v4); 18 if (v5 mod 2 = 0) then writeln(v5); writeln(#10, #10, #13, 'Imprimindo os Valores Impares'); 21 if (v1 mod 2 = 1) then writeln(v1); 22 if (v2 mod 2 = 1) then writeln(v2); 23 if (v3 mod 2 = 1) then writeln(v3); 24 if (v4 mod 2 = 1) then writeln(v4); 25 if (v5 mod 2 = 1) then writeln(v5); readkey; 28 end. Para minimizar a área da listagem, optou-se por usar comandos compostos numa mesma linha, como é o caso das linhas 7 a 10, onde a solicitação de um número e sua leitura

88 88 Programação com Pascal estão numa mesma linha de código. Também, os comandos IF, por não conterem blocos de comando, fazem a escrita logo após o THEN, numa mesma linha. Ressalta-se que este não é o modelo preferencial de escrita de código, pois minimiza a legibilidade do mesmo. Ele foi usado apenas para reduzir o espaço da listagem. Analisando o código, a linha 3 declara 5 variáveis inteiras necessárias ao programa. As linhas de 7 a 10 fazem a leitura dos 5 números inteiros, solicitando-os ao usuário. Em seguida, linhas 13 a 18, apenas os números pares são impressos. Após isso, as linhas de 20 a 25 imprimem apenas os números ímpares. Observações: 1. O uso de #10 (nova linha) e de #13 (retorno do cursor) é feito no WRITE(LN) para saltar múltiplas linhas. a. O comando writeln(#10, #10, #13, 'ABC') imprime 2 linhas em branco, volta o cursos para a primeira coluna e depois imprime ABC. Imagine a Listagem 6.XX caso o requisito fosse o de leitura de 30 números. Seriam necessárias mais 75 linhas de código (25 para leitura, 25 para pares e 25 para ímpares). Uma solução com vetores resolveria esse acréscimo de linha por todo o código. A Listagem 6.YY demonatra isso. 1 program paresimparescomarray; 2 uses crt; 3 4 const tamanhovetor = 5; 5 var v : array [1..tamanhoVetor] of integer; 6 i : integer; 7 8 begin 9 writeln('problema: ler 5 valores e, apos isso, imprimir os pares separados dos impares'); 10 for i := 1 to tamanhovetor do 11 begin 12 write('digite o valor ', i, ' : '); 13 read(v[i]); 14 end; writeln(#10, #10, #13, 'Imprimindo os Valores Pares'); 17 for i := 1 to tamanhovetor do 18 if (v[i] mod 2 = 0) then 19 writeln(v[i]); writeln(#10, #10, #13, 'Imprimindo os Valores Impares'); 22 for i := 1 to tamanhovetor do 23 if (v[i] mod 2 = 1) then 24 writeln(v[i]); readkey; 27 end. Edeyson Andrade Gomes

89 ESTRUTURAS DE REPETIÇÃO 89 Na Listagem 6.YY, a linha 4 declara uma constante tamanhovetor com valor 5. A linha 5 declara v como um vetor com 5 posições inteiras (valor de tamanhovetor). A linha 6 declara i como um inteiro, que será o controlador do FOR. As linhas efetuam a leitura dos números. Como são 5 números, tem-se um laço finito com 5 passos (linha 10: FOR com i variando entre 1 e 5). O bloco de comandos deste laço é composto pelas linhas 11-14, onde é feita a solicitação de um valor e sua leitura. A linha 12 solicita um valor, identificando-o pelo controlador do FOR. O usuário sabe que digitará o i-ésimo número da seqüência de 5. A linha 13 efetua a leitura de um elemento do vetor, usando i como índice. As linhas 17 a 19 formam um novo laço com 5 passos. Em cada passo testa-se se um dos elementos do vetor é par (testa-se se v indexado por i e par: v[i] mod 2 = 0). Cada elemento só é impresso se a condição for verdadeira. As linhas de 22 a 24 fazem algo similar, mas para ímpares. Note que o tamanho do código da Listagem 6.YY não mudará mesmo que a quantidade de números a ler mude. Para isto, basta alterar a dimensão da constante tamanhovetor.

90 90 Programação com Pascal {Exercícios} Algoritmo A4.1 (Fácil): 1. Declarar idade1 e idade2 como inteiro; 2. Declarar pessoa1 e pessoa2 como string; 3. Ler um valor para a variável idade1 e outro para idade2; 4. Ler um valor para a pessoa1 e outro para a pessoa2; 5. Se (idade1 for maior que a idade2) a. imprima: pessoa1, eh mais velha que, pessoa2 6. Se (idade2 for maior que a idade1) a. imprima: pessoa2, eh mais velha que, pessoa1 7. Se (idade1 for igual a idade2) a. imprima: pessoa1, e, pessoa2, tem a mesma idade Algoritmo A4.2 (Fácil): 1. Declarar idade1 e idade2 como inteiro; 2. Declarar pessoa1 e pessoa2 como string; 3. Ler um valor para a variável idade1 e outro para idade2; 4. Ler um valor para a pessoa1 e outro para a pessoa2; 5. Se (idade1 for maior que a idade2) a. imprima: pessoa1 é mais velha que pessoa2 6. Senão a. Se (idade2 for maior que a idade1) i. imprima: pessoa2 é mais velha que pessoa1 b. Senão i. imprima: pessoa1 e pessoa2 tem a mesma idade Questões: - Qual a diferença entre A4.1 e A4.2? - Que linhas executam em A4.1 e não necessariamente executam em A4.2? Justifique. Edeyson Andrade Gomes

91 ESTRUTURAS DE REPETIÇÃO 91 Algoritmo A4.1 (Médio): 1. Declarar numerodelados como inteiro; 2. Declarar área, lado1, lado2, lado3 e lado4 como real; 3. Declarar numerodeangulosiguais como inteiro; 4. Imprimir: Quantos lados tem a figura geométrica: <3> ou <4>? 5. Ler um valor para a variável numerodelados; 6. Imprimir: Quantos ângulos são iguais: <2>, <3> ou <4>? 7. Ler um valor para a variável numerodeangulosiguais; 8. Ler área, lado1, lado2, lado3 e lado4 como real; 9. Se numerodelados for diferente de 3 ou 4 a. Imprima: Numero de lados inválido. 10. Senão a. Se numerodelados for igual a 3 i. Imprima: Triangulo ii. Se todos os lados são iguais 1. Imprima: Isto eh um triangulo equilatero; iii. Senão 1. Se dois lados forem iguais e numerodeangulosiguais for igual a 2 a. Imprima: Isto eh um triangulo isosceles; 2. Senão a. Imprima: Isto eh um triangulo escaleno; b. Senão i. Imprima Retangulo ou Trapézio ii. Se todos os lados são iguais e numerodeangulosiguais igual a 4 1. Imprima: Isto eh um quadrado ; 2. Faça área = lado1 * lado1; 3. Imprima a área do quadrado. iii. Senão, 1. Se os lados são iguais dois a dois e numerodeangulosiguais igual a 2 a. Imprima: Isto eh um retângulo ; b. Faça área = lado1 (menor) * lado2 (maior); c. Imprima: A area do retângulo é, area. 2. Senão a. Imprima: Isso é um Trapezio.

92 92 Programação com Pascal Apêndice A Fluxogramas Um Fluxograma é um diagrama que representa o esquema de solução de um problema. Ele apresenta a linha de raciocínio lógico independente de linguagem de programação e é inteligível por humanos e computadores. Sua representação gráfica é feita por símbolos como: Fluxogramas representam diversas estruturas de controle detalhadas a seguir. Seqüência Uma Seqüência representa a execução de um conjunto de ações em série. Não existe a possibilidade de alteração da ordem de processamento das ações. Por exemplo: Entrada Ação 1 Ação 2 Saída Listagem 6 Fluxograma de Sequencia Na Figura 2, apresenta-se uma sequência onde as Ações 1 e 2 ocorrerão sempre e na mesma ordem. Seleção com 1 Via Uma Seleção com 1 Via representa uma tomada de decisão onde o fluxo de processamento executa a Ação 1 apenas se o valor lógico da expressão avaliada no início da estrutura for verdade. Por exemplo, na Figura 3 a Ação 1 só será executada se o resultado da decisão for verdadeiro. Em caso contrário a Ação 1 não será executada. Edeyson Andrade Gomes

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

Aula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis 1. 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

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Representação de Algoritmos - Linguagens de Programação

Representação de Algoritmos - Linguagens de Programação Representação de Algoritmos - Linguagens de Programação A representação de algoritmos em uma pseudo-linguagem mais próxima às pessoas é bastante útil principalmente quando o problema a ser tratado envolve

Leia mais

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

A lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá. INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,

Leia mais

Algoritmos Computacionais ( Programas )

Algoritmos Computacionais ( Programas ) Algoritmos Computacionais ( Programas ) A partir deste tópico, consideramos a utilização do universo Computacional na solução de problemas. Para tanto devemos lembrar que a transposição de problemas do

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto

ALGORITMOS PARTE 01. Fabricio de Sousa Pinto ALGORITMOS PARTE 01 Fabricio de Sousa Pinto Algoritmos: Definição 2 É uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. Algoritmos 3

Leia mais

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior

Armazenamento de Dados. Prof. Antonio Almeida de Barros Junior Armazenamento de Dados Prof. Antonio Almeida de Barros Junior 1 Armazenamento de Dados Todos os dados que utilizamos até o momento, ficavam armazenados apenas na memória. Ao final da execução dos programas,

Leia mais

Resolução de problemas e desenvolvimento de algoritmos

Resolução de problemas e desenvolvimento de algoritmos SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Resolução de problemas e desenvolvimento de algoritmos Prof. Vanderlei Bonato Prof. Cláudio Fabiano Motta Toledo Sumário Análise e solução de

Leia mais

Algoritmos com VisuAlg

Algoritmos com VisuAlg Algoritmos com VisuAlg Prof Gerson Volney Lagemann Depto Eng de Produção e Sistemas UDESC - CCT Algoritmos com VisuAlg Introdução A linguagem VisuAlg é simples, seu objetivo é disponibilizar um ambiente

Leia mais

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

Algoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução

Leia mais

Componentes da linguagem C++

Componentes da linguagem C++ Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras

Leia mais

e à Linguagem de Programação Python

e à Linguagem de Programação Python Introdução a Algoritmos, Computação Algébrica e à Linguagem de Programação Python Curso de Números Inteiros e Criptografia Prof. Luis Menasché Schechter Departamento de Ciência da Computação UFRJ Agosto

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem

Leia mais

Algoritmos e Programação de Computadores

Algoritmos e Programação de Computadores Algoritmos e Programação de Computadores Algoritmos Estrutura Sequencial Parte 1 Professor: Victor Hugo L. Lopes Agenda Etapas de ação do computador; TDP Tipos de Dados Primitivos; Variáveis; Constantes;

Leia mais

PROGRAMAÇÃO DE COMPUTADORES (Teoria)

PROGRAMAÇÃO DE COMPUTADORES (Teoria) PC PROGRAMAÇÃO DE COMPUTADORES (Teoria) Aula 01 Prof. Ricardo Veras (prof.rveras@gmail.com) ALGORITMOS "Seqüência ordenada de passos, que deve ser seguida para a realização de um tarefa" "Algoritmo é um

Leia mais

Aluísio Eustáquio da Silva

Aluísio Eustáquio da Silva 1 Aluísio Eustáquio da Silva SciLab Programável Material didático usado em aulas de Programação de Computadores, Algoritmos e Lógica de Programação Betim Maio de 2012 2 PROGRAMAÇÃO O SciLab permite que

Leia mais

Introdução aos cálculos de datas

Introdução aos cálculos de datas Page 1 of 7 Windows SharePoint Services Introdução aos cálculos de datas Aplica-se a: Microsoft Office SharePoint Server 2007 Ocultar tudo Você pode usar fórmulas e funções em listas ou bibliotecas para

Leia mais

Dadas a base e a altura de um triangulo, determinar sua área.

Dadas a base e a altura de um triangulo, determinar sua área. Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares

Leia mais

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo

Sumário. INF01040 Introdução à Programação. Elaboração de um Programa. Regras para construção de um algoritmo INF01040 Introdução à Programação Introdução à Lógica de Programação s Seqüenciais Sumário Elaboração de um programa/algoritmo Formas de representação de um algoritmo Elementos manipulados em um programa/algoritmo

Leia mais

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

Algoritmo. Linguagem natural: o Ambígua o Imprecisa o Incompleta. Pseudocódigo: o Portugol (livro texto) o Visualg (linguagem) Fluxograma Roteiro: Conceitos básicos de algoritmo, linguagem, processador de linguagem e ambiente de programação; Aspectos fundamentais da organização e do funcionamento de um computador; Construções básicas de

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5

Leia mais

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO

Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO Programação de Computadores I Fluxogramas PROFESSORA CINTIA CAETANO Problemas & Algoritmos Para resolver um problema através dum computador é necessário encontrar em primeiro lugar uma maneira de descrevê-lo

Leia mais

20 Caracteres - Tipo char

20 Caracteres - Tipo char 0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,

Leia mais

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções)

Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução. (procedimentos e funções) Aulas anteriores... Formulação adequada do problema Identificação das variáveis de entrada; resultados/variáveis de saída e método ou solução Definição do algoritmo Método de decomposição hierárquica utilizando

Leia mais

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

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

Linguagem algorítmica: Portugol

Linguagem algorítmica: Portugol Programação de Computadores I Aula 03 Linguagem algorítmica: Portugol José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/34 Introdução I Lógica A lógica é usada

Leia mais

Capítulo 2: Introdução à Linguagem C

Capítulo 2: Introdução à Linguagem C Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso

Leia mais

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1

Estrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1 Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;

Leia mais

Introdução à Linguagem

Introdução à Linguagem Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:

Leia mais

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição

1. Estrutura de seleção. Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição 1 Estrutura de seleção Seleção: algumas etapas (passos) do algoritmo são executadas dependendo do resultado de uma condição - Necessário quando mais de uma ação deve ser tomada se uma condição for satisfeita

Leia mais

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

CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES. Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com CONCEITOS BÁSICOS PARA A CONSTRUÇÃO DE ALGORITMOS PARA COMPUTADORES Isac Aguiar isacaguiar.com.br isacaguiar@gmail.com Objetivos Compreender os conceitos de lógica de programação e de algoritmos. Conhecer

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

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

Introdução à Lógica de Programação Sistemas Operacionais e Introdução à Programação Introdução à Lógica de Programação 1 Estruturas de dados Representação computacional das informações do problema ser resolvido Informações podem ser de

Leia mais

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

Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Programação de Computadores I Pseudocódigo PROFESSORA CINTIA CAETANO Pseudocódigo Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando uma linguagem simples (nativa a quem o escreve,

Leia mais

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

Apostila de Fundamentos de Programação I. Prof.: André Luiz Montevecchi Apostila de Fundamentos de Programação I Prof: André Luiz Montevecchi Introdução O mundo atual é dependente da tecnologia O uso intenso de diversos aparatos tecnológicos é parte integrante do nosso dia-a-dia

Leia mais

Introdução a Algoritmos Parte 04

Introdução a Algoritmos Parte 04 Universidade Federal do Vale do São Francisco Curso de Engenharia de Computação Introdução a Algoritmos Parte 04 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br www.univasf.edu.br/~jorge.cavalcanti

Leia mais

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de

Leia mais

Conceitos Importantes:

Conceitos Importantes: Conceitos Importantes: Variáveis: Por Flávia Pereira de Carvalho, 2007 i O bom entendimento do conceito de variável é fundamental para elaboração de algoritmos, consequentemente de programas. Uma variável

Leia mais

Programação Básica em Arduino Aula 2

Programação Básica em Arduino Aula 2 Programação Básica em Arduino Aula 2 Execução: Laboratório de Automação e Robótica Móvel Variáveis são lugares (posições) na memória principal que servem para armazenar dados. As variáveis são acessadas

Leia mais

INTRODUÇÃO OBJECT PASCAL/DELPHI

INTRODUÇÃO OBJECT PASCAL/DELPHI Introdução Object Pascal/Delphi 1 INTRODUÇÃO OBJECT PASCAL/DELPHI Objetivo Demonstrar a sintaxe e a semântica do Object Pascal e a forma como esse linguagem de programação será aplicada na disciplina de

Leia mais

Resumo da Matéria de Linguagem de Programação. Linguagem C

Resumo da Matéria de Linguagem de Programação. Linguagem C Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis

Leia mais

INF 1005 Programação I

INF 1005 Programação I INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

A4 Projeto Integrador e Lista de Jogos

A4 Projeto Integrador e Lista de Jogos A4 Projeto Integrador e Lista de Jogos 1ª ETAPA PROJETO INTEGRADOR (2 pontos na A4) Como discutido em sala de aula, a disciplina de algoritmos I também fará parte do projeto integrador, para cada grupo

Leia mais

OPERADORES E ESTRUTURAS DE CONTROLE

OPERADORES E ESTRUTURAS DE CONTROLE OPERADORES E ESTRUTURAS DE CONTROLE 3.1 Operadores Os operadores indicam o tipo de operação matemática que será executada gerando novos valores a partir de um ou mais operadores. São muito utilizados em

Leia mais

Algoritmos e Programação _ Departamento de Informática

Algoritmos e Programação _ Departamento de Informática 5 TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. De um modo geral estas informações podem ser classificadas em dois tipos:

Leia mais

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos.

Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Métodos Os métodos de uma classe podem ser classificados como construtores, destrutores, funções ou procedimentos. Construtor: método executado por uma CLASSE (e não por um objeto, instância da classe)

Leia mais

Organização de programas em Python. Vanessa Braganholo vanessa@ic.uff.br

Organização de programas em Python. Vanessa Braganholo vanessa@ic.uff.br Organização de programas em Python Vanessa Braganholo vanessa@ic.uff.br Vamos programar em Python! Mas... } Como um programa é organizado? } Quais são os tipos de dados disponíveis? } Como variáveis podem

Leia mais

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

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Lógica Aula 2 Técnicas de Programação Criando algoritmos Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos Criando

Leia mais

Curso de Programação Computadores

Curso de Programação Computadores 3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

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

Introdução à Lógica de Programação Introdução à Lógica de Programação Sistemas Numéricos As informações inseridas em um computador são traduzidos em dados, ou seja, em sinais que podem ser manipulados pelo computador. O computador trabalha

Leia mais

Algoritmos em Javascript

Algoritmos em Javascript Algoritmos em Javascript Sumário Algoritmos 1 O que é um programa? 1 Entrada e Saída de Dados 3 Programando 4 O que é necessário para programar 4 em JavaScript? Variáveis 5 Tipos de Variáveis 6 Arrays

Leia mais

Conceitos básicos da linguagem C

Conceitos básicos da linguagem C Conceitos básicos da linguagem C 2 Em 1969 Ken Thompson cria o Unix. O C nasceu logo depois, na década de 70. Dennis Ritchie, implementou-o pela primeira vez usando o sistema operacional UNIX criado por

Leia mais

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++

ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++ ESTRUTURA DE UM PROGRAMA EM C++ Estrutura de um Programa em C++ #include { Este trecho é reservado para o corpo da função, com a declaração de suas variáveis locais, seus comandos e funções

Leia mais

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

Algoritmos Estruturas Seqüenciais. José Gustavo de Souza Paiva Algoritmos Estruturas Seqüenciais José Gustavo de Souza Paiva 1 Introdução Objetivo básico da computação auxiliar os seres humanos em trabalhos repetitivos e braçais, diminuindo i i d esforços e economizando

Leia mais

2 echo "PHP e outros.";

2 echo PHP e outros.; PHP (Hypertext Preprocessor) Antes de qualquer coisa, precisamos entender o que é o PHP: O PHP(Hypertext Preprocessor) é uma linguagem interpretada gratuita, usada originalmente apenas para o desenvolvimento

Leia mais

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01

IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 IFTO TÉCNICO EM INFORMÁTICA DESENVOLVIMENTO DE SISTEMAS AULA 01 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos

Leia mais

Introdução à Programação e Algoritmos. Aécio Costa

Introdução à Programação e Algoritmos. Aécio Costa Aécio Costa Programação é a arte de fazer com que o computador faça exatamente o que desejamos que ele faça. O que é um Programa? Uma seqüência de instruções de computador, para a realização de uma determinada

Leia mais

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir:

1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir: Introdução à Informática 1 de 6 Data: 29/05/04 1) Digitar o código-fonte no editor do compilador Turbo Pascal para windows, exatamente como apresentado a seguir: program eq2grau; uses WinCrt, Strings;

Leia mais

ULA Sinais de Controle enviados pela UC

ULA Sinais de Controle enviados pela UC Solução - Exercícios Processadores 1- Qual as funções da Unidade Aritmética e Lógica (ULA)? A ULA é o dispositivo da CPU que executa operações tais como: Adição Subtração Multiplicação Divisão Incremento

Leia mais

Processamento da Informação Teoria. Algoritmos e Tipos de dados

Processamento da Informação Teoria. Algoritmos e Tipos de dados Processamento da Informação Teoria Algoritmos e Tipos de dados Semana 01 Prof. Jesús P. Mena-Chalco 24/04/2013 (*) Slides adaptados das aulas do Prof. Harlen Costa Batagelo Algumas definições de algoritmo

Leia mais

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

Leia mais

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior Linguagem Pascal Prof. Antonio Almeida de Barros Junior 1 Linguagem Pascal Criada para ser uma ferramenta educacional (Década de 70); Prof. Niklaus Wirth (Universidade de Zurique); Blaise Pascal (Matemático

Leia mais

ESTRUTURA CONDICIONAL

ESTRUTURA CONDICIONAL AULA 6 ESTRUTURA CONDICIONAL 130 Tem como objetivo executar um conjunto de comandos caso uma condição lógica seja atendida. Quando a resposta lógica for falsa, nada será executado. Sintaxe Se CONDIÇÃO

Leia mais

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

Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Algoritmos e Programação Conceitos e Estruturas básicas (Variáveis, constantes, tipos de dados) Os algoritmos são descritos em uma linguagem chamada pseudocódigo. Este nome é uma alusão à posterior implementação

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Java Como Programar, 8/E

Java Como Programar, 8/E Capítulo 2 Introdução aos aplicativos Java Java Como Programar, 8/E (C) 2010 Pearson Education, Inc. Todos os 2.1 Introdução Programação de aplicativo Java. Utilize as ferramentas do JDK para compilar

Leia mais

9 Comandos condicionais

9 Comandos condicionais 9 Comandos condicionais Um comando condicional é uma instrução empregada quando se deseja criar um desvio, isto é, a opção de executar-se ou não um determinado trecho de código, segundo uma condição. Em

Leia mais

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS

AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS UNIVERSIDADE REGIONAL DE BLUMENAU CENTRO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIAS DA COMPUTAÇÃO BACHARELADO AMBIENTE PARA AUXILIAR O DESENVOLVIMENTO DE PROGRAMAS MONOLÍTICOS Orientando: Oliver Mário

Leia mais

Tutorial de Matlab Francesco Franco

Tutorial de Matlab Francesco Franco Tutorial de Matlab Francesco Franco Matlab é um pacote de software que facilita a inserção de matrizes e vetores, além de facilitar a manipulação deles. A interface segue uma linguagem que é projetada

Leia mais

13 Números Reais - Tipo float

13 Números Reais - Tipo float 13 Números Reais - Tipo float Ronaldo F. Hashimoto e Carlos H. Morimoto Até omomentonoslimitamosaouso do tipo inteiro para variáveis e expressões aritméticas. Vamos introduzir agora o tipo real. Ao final

Leia mais

Programação de Computadores. Professor Ilaim Costa Junior ilaim@ic.uff.br Www.ic.uff.br/~ilaim

Programação de Computadores. Professor Ilaim Costa Junior ilaim@ic.uff.br Www.ic.uff.br/~ilaim Programação de Computadores Professor Ilaim Costa Junior ilaim@ic.uff.br Www.ic.uff.br/~ilaim Roteiro da Aula de Hoje Introdução ao FORTRAN (Parte I) Organização de programas Tipos de dados Variáveis Programação

Leia mais

Algoritmos e Programação Estruturada

Algoritmos e Programação Estruturada Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.

Leia mais

CONVENÇÃO DE CÓDIGO JAVA

CONVENÇÃO DE CÓDIGO JAVA CONVENÇÃO DE CÓDIGO JAVA Eligiane Ceron - Abril de 2012 Versão 1.0 Conteúdo Considerações iniciais... 2 Introdução... 2 Extensão de arquivos... 2 Arquivos de código Java... 2 Comentários iniciais... 2

Leia mais

Sintaxe Básica de Java Parte 1

Sintaxe Básica de Java Parte 1 Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marcioubeno.com Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa

Leia mais

PROGRAMAÇÃO II 4. ÁRVORE

PROGRAMAÇÃO II 4. ÁRVORE 4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão

CURSO BÁSICO DE PROGRAMAÇÃO AULA 9. Introdução a linguagem C Estruturas de decisão CURSO BÁSICO DE PROGRAMAÇÃO AULA 9 Introdução a linguagem C Estruturas de decisão Introdução à Linguagem C Linguagem compilada. Desenvolvida sobre os paradigmas de programação procedural. Uma das linguagens

Leia mais

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS

ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS ERROS MAIS COMUNS COMETIDOS EM PROGRAMAS E ALGORITMOS Compilação dos erros mais comuns cometidos por estudantes de Introdução a Algoritmos Marcos Portnoi Edição 19.4.2007 Universidade Salvador UNIFACS

Leia mais

Introdução ao FORTRAN (Parte I)

Introdução ao FORTRAN (Parte I) Programação de Computadores III Aula 7 Professor Leandro Augusto Frata Fernandes laffernandes@ic.uff.br Material disponível em http://www.ic.uff.br/~laffernandes/teaching/2011.1/tcc-03.063 Roteiro da Aula

Leia mais

AMBIENTE DE PROGRAMAÇÃO PYTHON

AMBIENTE DE PROGRAMAÇÃO PYTHON Computadores e Programação Engª Biomédica Departamento de Física Faculdade de Ciências e Tecnologia da Universidade de Coimbra Ano Lectivo 2003/2004 FICHA 1 AMBIENTE DE PROGRAMAÇÃO PYTHON 1.1. Objectivos

Leia mais

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.

Linguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Linguagem e Técnicas de Programação I Operadores, expressões e funções Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Operadores básicos Toda linguagem de programação, existem

Leia mais

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas CMP1132 Processo e qualidade de software II Prof. Me. Elias Ferreira Sala: 402 E Quarta-Feira:

Leia mais

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação

Algoritmo. Prof. Anderson Almeida Ferreira. Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação 1 Algoritmo Prof. Anderson Almeida Ferreira Agradeço ao prof. Guilherme Tavares de Assis por fornecer slides que fazem parte desta apresentação Desenvolvimento de programas 2 Análise do problema Desenvolvimento

Leia mais

Microsoft Excel 2007

Microsoft Excel 2007 Microsoft Excel 2007 O Microsoft Excel é um aplicativo para a construção e edição de planilhas eletrônicas, que permite o trabalho com: formulários, tabelas, gráficos e outros. 2.1 CONCEITOS INICIAIS:

Leia mais

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos

Memória Flash. PdP. Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006. Pesquisa e Desenvolvimento de Produtos TUTORIAL Memória Flash Autor: Tiago Lone Nível: Básico Criação: 11/12/2005 Última versão: 18/12/2006 PdP Pesquisa e Desenvolvimento de Produtos http://www.maxwellbohr.com.br contato@maxwellbohr.com.br

Leia mais

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

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias Departamento de Engenharia Rural Centro de Ciências Agrárias Programação I Prof. Bruno Vilela Oliveira bruno@cca.ufes.br http://www.brunovilela.webnode.com.br Aulas 2-3-4-5-6-7-8 Lógica Algoritmos Portugol

Leia mais

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,...

Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... Por que o quadrado de terminados em 5 e ta o fa cil? Ex.: 15²=225, 75²=5625,... 0) O que veremos na aula de hoje? Um fato interessante Produtos notáveis Equação do 2º grau Como fazer a questão 5 da 3ª

Leia mais

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7

CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 CURSO BÁSICO DE PROGRAMAÇÃO AULA 7 Revisão para prova: Comandos de Entrada e Saída Estruturas de Decisão (Se, caso (escolha)) Laços de Repetição (Enquanto, Repita, Para) Relembrando Trabalho 1 Prazo de

Leia mais

TÉCNICAS DE PROGRAMAÇÃO

TÉCNICAS DE PROGRAMAÇÃO TÉCNICAS DE PROGRAMAÇÃO (Adaptado do texto do prof. Adair Santa Catarina) ALGORITMOS COM QUALIDADE MÁXIMAS DE PROGRAMAÇÃO 1) Algoritmos devem ser feitos para serem lidos por seres humanos: Tenha em mente

Leia mais

1. Introdução ao uso da calculadora

1. Introdução ao uso da calculadora 1. Introdução ao uso da calculadora O uso da calculadora científica no curso de Estatística é fundamental pois será necessário o cálculo de diversas fórmulas com operações que uma calculadora com apenas

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

1.1. Organização de um Sistema Computacional

1.1. Organização de um Sistema Computacional 1. INTRODUÇÃO 1.1. Organização de um Sistema Computacional Desde a antiguidade, o homem vem desenvolvendo dispositivos elétricoeletrônicos (hardware) que funciona com base em instruções e que são capazes

Leia mais

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES

LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES LÓGICA DE PROGRAMAÇÃO PARA ENGENHARIA INTRODUÇÃO À ORGANIZAÇÃO DE COMPUTADORES Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o funcionamento do computador Apresentar a função da memória e dos dispositivos

Leia mais

Manipulação de Arquivos em Pascal

Manipulação de Arquivos em Pascal Manipulação de Arquivos em Pascal Estrutura de Dados II Aula 03 UFS - DComp Adaptados a partir do material da Profa. Kenia Kodel Cox 1 Para implementar programa infantil para ordenação (alfabética) de

Leia mais

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 4 PROF. MARCELO LUIZ SILVA (R E D)

INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 AULA TEÓRICA 4 PROF. MARCELO LUIZ SILVA (R E D) Universidade Federal de Ouro Preto - UFOP Instituto de Ciências Exatas e Biológicas - ICEB Departamento de Computação - DECOM INTRODUÇÃO À PROGRAMAÇÃO BCC 201 TURMAS 31, 32 E 33 2015-2 1 AULA TEÓRICA 4

Leia mais