Introdução à Programação Introdução à Informática DCC -UFMG Introdução à Programação Aula 1 Introdução Programa: conjunto de comandos com uma determinada seqüência lógica, permitindo o processamento de dados. PascaL: Implementação quase completa de um compilador Pascal no Logo Facilidade para a produção de figuras a partir de comandos. Ele usa um “robô triangular” que aparece na tela, como metáfora para um robô real. Problema – Desenhar retângulo Descrição: Desenvolver um programa para desenhar um retângulo com o lado maior de tamanho 100 e o lado menor de tamanho 50. 1 Passo: Identificar uma seqüência de comandos a ser seguida pelo computador para resolver o problema Diagrama de Nassi Diagrama de Nassi Programa PascaL Utilizar Lápis Limpar Tela Desenhar traço de comprimento 50 na direção do robô Comandos Alterar na direção do robô em 90 para direita Faz com que o robô não seja mostrado (Desapareça Robô) Resultado Problema – Desenhar retângulo de tamanho variável Descrição: O tamanho dos lados do retângulo deve ser variável, e o tamanho do lado maior deve ser o dobro do tamanho do lado menor. Diagrama de Nassi Programa PascaL Conceitos Básicos Tipos de variáveis: Integer: (...,-1, 0, 1,...) Real: (..., -1.99, ..., -1.9, ..., 0, ..., 0.3, ...) Char: (“a”, “A”, “z”, “ ”) String: (“palavra”, “maria”) Comandos de entrada e saída: Readln Writeln Write Problema: Calcular área do retângulo Descrição: Além de desenhar um retângulo com o tamanho do lado variável, calcular sua área e seu perímetro. Diagrama de Nassi Programa PascaL Resultado Introdução à Programação Aula 2 Cenário 1: Desenhar quadrado ou retângulo Problema: Desenhar um quadrado ou um retângulo reaproveitando o código o máximo possível. A informação sobre o que deve ser desenhado deve vir do usuário, bem como o tamanho do lado menor do retângulo como visto no exercício anterior Descrição do Problema Dados de Entrada Tamanho do lado do quadrilátero caso seja um retângulo é o tamanho do lado menor, o lado maior tem o dobro deste comprimento. Quadrado ou um retângulo (1 = quadrado e 2 = retângulo). Descrição do Problema Processamento Ler os dados de entrada Calcular o tamanho do lado maior Se for um quadrado, o lado maior é igual ao lado menor. Se for um retângulo, o lado maior é o dobro do lado menor. Desenhar o quadrilátero. Dados de Saída Desenho do quadrilátero. Diagrama de Nassi Diagrama de Nassi com repetição Programa PascaL Programa PascaL Comando de Decisão if [condicao] then begin [bloco de comandos a serem executados caso a condição seja verdadeira] end else begin [bloco de comandos a serem executados caso a condição seja falsa] end Caso a condição seja verdadeira, os comandos após o then serão executados. Caso seja falsa, os comandos após o else serão executados. Você delimita esses dois blocos de comando com um begin e um end. Comando de Repetição while [condição] do begin [bloco de comandos a serem executados enquanto a condição for verdadeira] end; Condição: expressão que deve ter como resultado verdadeiro ou falso. Os comandos serão executados enquanto a condição for verdadeira. Cenário 2 - Cálculo do valor de multa em biblioteca Programa para calcular: Valor da multa para os livro de um determinado usuário Valor total da soma de todas as multas para o usuário Média dos dias de atraso. O programa deve ler, até que seja digitado um código de livro negativo (FLAG): Código de cada livro Número de dias de atraso Se o livro está reservado ou não Se o livro não estiver reservado: Caso contrário Multa de R$ 1,00 por dia Multa de R$ 2,00 por dia. Caso o número de dias de atraso seja superior a 15 dias Adicionar multa extra de 10% sobre o valor total da multa. Descrição do Problema Dados de Entrada Código do livro Número de dias de atraso Informação se o livro está reservado ou não Dados de Saída Valor da multa para cada livro. Valor total das multas. Média dos dias de atraso Descrição do Problema Processamento Ler repetidamente os dados de entrada Calcular o valor da multa para um livro sabendo que: Se o livro não estiver reservado, a multa é de R$ 1,00 por dia. Se o livro estiver reservado, a multa é de R$ 2,00 por dia. Se o número de dias em atraso for maior que 15, o valor total da multa deve ser acrescido em 10%. Calcular o valor total das multas para todos os livros. Calcular a média dos dias de atraso. Exibir os dados de saída. Diagrama de Nassi Programa PascaL Programa PascaL Introdução à Programação Aula 3 Cenário 3 - Tabela de valor de multas Fazer uma tabela com o valor de multas para atrasos entre 10 e 20 dias, estando o livro reservado ou não. Exemplo: 2 primeiras linhas Descrição do Problema Dados de Entrada Não tem. Dados de Saída Tabela como valor da multa para livros reservados e não reservados variando-se o número de dias entre 10 e 20. Descrição do Problema Processamento Para número de dias entre 10 e 20, calcular o valor da multa para livros reservados e não reservados de acordo com as seguintes regras: Se o livro não estiver reservado, a multa é de R$ 1,00 por dia. Se o livro estiver reservado, a multa é de R$ 2,00 por dia. Se o número de dias em atraso for maior que 15, o valor total da multa deve ser acrescido em 10%. Exibir os dados de saída. Módulo de programa Utilizar um módulo para calcular do valor da multa, evitando a replicação do código Módulo: Grupo de comandos, constituindo um trecho de algoritmo, com uma função bem definida e o mais independente possível em relação ao resto do programa. Podem ser classificados como procedimentos ou funções Parâmetros: dados que o módulo recebe para sua execução. Descrição da função para calcular valor da multa Dados de Entrada (Parâmetros) Número de dias de atraso Informação se o livro está reservado ou não Dado de Saída (Valor de retorno) Processamento Calcular o valor da multa de acordo com as seguintes regras: Se o livro não estiver reservado Caso contrário Multa de R$ 2,00 por dia. Se o número de dias em atraso for maior que 15 Valor da multa. Multa de R$ 1,00 por dia. Valor total da multa deve ser acrescido em 10%. Retornar o valor de saída no nome da função Diagrama de Nassi para a função Diagrama de Nassi para o programa que utiliza a função Código PascaL da função calculaValorMulta Função function [nome da função] ([lista de parâmetros]): [tipo do valor de retorno]; [declarações de variáveis] begin [comandos da função] [nome da funcao] := [valor a ser retornado] end; Nome da função: Lista de parâmetros: Parâmetros, com seu tipo especificado. Não são obrigatórios. Comandos da função: Deve indicar o que a função faz. Retorna o valor calculado. Utilizados para calcular o valor a ser retornado pela função. O valor a ser retornado pela função deve ser atribuído ao nome desta ao fim do processamento. Programa PascaL que utiliza a função calculaValorMulta Código da função Utilização de Função Para utilizar a função basta realizar uma chamada passando como parâmetros os valores desejados, conforme o exemplo abaixo. multaReservado := calculaValorMulta(numDias, 1); Resultado Cenário 4 - Programa para desenhar quadriláteros. Programa para desenhar a figura abaixo utilizando um procedimento para desenhar quadrados e retângulos: Descrição do Problema Dados de Entrada Não tem Dados de Saída Figura semelhante à apresentada abaixo Processamento Posicionar o robô. Desenhar retângulo maior. Posicionar o robô. Desenhar quadrado da esquerda. Posicionar o robô. Desenhar retângulo do centro da figura. Posicionar o robô. Desenhar quadrado da direita. Posicionar o robô. Desenhar retângulo pequeno na parte superior da figura. Diagrama de Nassi do procedimento para desenhar quadriláteros Diagrama de Nassi do programa Código PascaL do procedimento desenhaQuadrilatero Procedimento procedure [nome do procedimento] ([lista de parâmetros]); [declarações de variáveis] begin [comandos] end; Nome do procedimento: Deve indicar o que ele faz. Lista de parâmetros: parâmetros, com seu tipo especificado. Não são obrigatórios Programa PascaL que utiliza o procedimento desenhaQuadriláteros Código do procedimento Chamadas ao procedimento Utilização de Procedimentos Para se executar o procedimento basta inserir uma chamada no bloco de comandos do programa. Um exemplo de chamada a procedimento pode ser visto abaixo: desenharQuadrilatero(200, 2); Os parâmetros devem ser colocados entre parênteses, separados por vírgulas, em ordem. No exemplo acima, o primeiro parâmetro é o tamanho do lado menor e o segundo é o tipo do quadrilátero (quadrado ou retângulo).