Algoritmos e Programação Thyago Maia Tavares de Farias Aula 12 Sumário Pascal – Conceitos e Ambiente Passos para a construção de Software 1º passo: Conhecimento do problema; 2º passo: Construção do algoritmo; 3º passo: Codificação do algoritmo em uma linguagem de programação; Problema !!! Solução Codificação Linguagens de programação Para armazenar um algoritmo na memória de um computador, e para que o mesmo seja executável, é necessário que o mesmo seja programado (codificado); Precisamos transcrever nossos algoritmos para uma linguagem de programação; Exemplos: Pascal, C, Java, Cobol, etc. Na disciplina, utilizaremos a linguagem de programação Pascal; A linguagem Pascal Desenvolvida em 1968 por Niklaus Wirth, da Universidade Técnica de Zurique, na Suíça; Objetivo: Oferecer uma linguagem para o ensino de programação que fosse simples, coerente e capaz de confeccionar programas claros e legíveis; Batizada em homenagem a Blaise Pascal, filósofo, matemático e inventor da primeira calculadora mecânica; A linguagem Pascal Linguagem parecida com a linguagem algorítmica; Usa o paradigma estruturado, onde qualquer problema pode ser resolvido utilizando três estruturas: Sequencial; Condicional; Iterativa (repetição); Adaptando algoritmos para a linguagem Pascal Ex.: PORTUGOL Algoritmo “exemplo” PASCAL Var numero: inteiro program exemplo; Uses crt; Var numero: integer; Inicio begin escreva(“Informe um número: ”) leia(numero) numero <- numero + 10; escreva(“Novo número: ”, numero) fimalgoritmo write(‘Informe um número: ‘); readln(numero); numero := numero + 10; write(‘Novo número: ‘, numero); end. Área de Declarações Declaração de Uso das Unidades: • Um programa Pascal pode fazer uso de algumas unidades padrão, tais como: CRT, PRINTER, etc. • A unidade CRT faz a adequação do hardware com seu programa. PASCAL program exemplo; Uses crt; Var numero: integer; begin Declaração de Variáveis: var <lista-de-identificadores>: <tipo> onde, <lista-de-identificadores>: lista variáveis de um mesmo tipo <tipo-de-dado>: nome de um dos tipos pré-definidos ou criados pelo programador write(“Informe um número: ”); readln(numero); numero := numero + 10; write(“Novo número: ”, numero); end. Tipos de variáveis Integer Equivalente ao tipo inteiro em algoritmos; Nome Valor mínimo Valor máximo Bytes ocupados Integer -32.768 32.767 2 Exemplo de declaração: Em algoritmos: var numero: inteiro Em Pascal: var numero: integer; Tipos de variáveis Integer Tipos variantes: Nome Valor mínimo Valor máximo Bytes ocupados Shortint -128 127 1 Byte 0 255 1 Word 0 65.535 2 Longint -2.147.483.648 2.147.483.647 4 Tipos de variáveis Real Equivalente ao tipo real em algoritmos; Nome Valor mínimo Valor máximo Bytes ocupados Real -2.9 x 10-39 1.7 x 1038 6 Exemplo de declaração: Em algoritmos: var numero: real Em Pascal: var numero: real; Tipos de variáveis Real Tipos variantes: Nome Valor mínimo Valor máximo Bytes ocupados Single -1.5 x 10-45 1.7 x 1038 4 Double 5.0 x 10-324 1.7 x 10308 5 Extended 3.4 x 10-4932 1.1 x 104932 10 Comp -2-63+1 2-63-1 8 Tipos de variáveis Boolean Equivalente ao tipo lógico em algoritmos; Valores True False Exemplo de declaração: Em algoritmos: var valor: logico Em Pascal: var valor: boolean; Tipos de variáveis String Equivalente ao tipo literal em algoritmos (tamanho máximo de caracteres: 255); Exemplo de declaração: Em algoritmos: var time: literal Em Pascal: var time: String; Exemplo de atribuição: Em algoritmos: time <- “Sport Recife” Em Pascal: time := ‘Sport Recife’; Tipos de variáveis String Podemos limitar o tamanho de um string, utilizando [ + tamanho do texto + ] ao lado da especificação de tipo Exemplo de declaração: var time: String[10]; var sexo: String[1]; Var nome_completo: String[100]; Tipos de variáveis Char Equivalente ao tipo literal em algoritmos, porém representa um único caractere; Exemplo de declaração: Em algoritmos: var sexo: literal Em Pascal: var sexo: char; Exemplo de atribuição: Em algoritmos: sexo <- “M” Em Pascal: sexo := ‘M’; Variáveis Representam os espaços reservados na memória para armazenar informações; Funcionamento, declaração e atribuição semelhantes às variáveis utilizadas em algoritmos; Assim como em algoritmos, cada variável possui um nome (identificador) e um tipo; As regras para criação de nomes de variáveis são as mesmas utilizadas em algoritmos; Variáveis Regras para identificadores de variáveis: Não devem ser extensas demais; Caracteres permitidos: números, letras e sublinhado; Primeiro caractere é sempre uma letra; Identificadores não podem se repetir; Não são permitidos caracteres em branco; Não são permitidos caracteres especiais; Não podemos utilizar palavras reservadas em nomes de variáveis; Variáveis Exemplos de declaração: var numero: integer; nome: string; sexo: char; salario: real; Palavras Reservadas Nomes utilizados pelo computador para representar comandos, operadores e nomes de seção de programas; Constantes Variáveis que assumem um determinado valor atribuído e não pode ser alterado ao longo do programa; Constantes assumem o tipo de valor a ela atribuído (não é necessária a definição de tipo na declaração!); Uma constante, assim como uma variável, deverá ser declarada na área de declarações; Constantes Para declarar constantes, utilizamos a palavra reservada CONST, seguido do seu identificador (nome) + = + valor da constante + ; Exemplos: CONST time_professor = ‘Sport Recife’; CONST pi = 3.1416; CONST max = 10; Comentários Texto delimitado entre {} ou (* *) Seu conteúdo não é compilado; Pode conter qualquer tipo de caractere; Pode conter mais de uma linha; Pode ser colocado em qualquer região do programa; Utilizado para documentar código, esclarecer alguma região de código, etc.; Comentários Exemplo: program exemplo; {área de declarações} Uses crt; Var numero: integer; begin {lista de instruções} write(“Informe um número: ”); readln(numero); numero := numero + 10; write(“Novo número: ”, numero); end. Área de Comandos Área de Comandos: PASCAL • Delimitada pelo BEGIN e END. • Os comandos são separados entre si pelo delimitador ponto-e-vírgula. • A forma geral é: Begin End. < comando >; ... < comando >; program exemplo; Uses crt; Var numero: integer; begin write(“Informe um número: ”); readln(numero); numero := numero + 10; write(“Novo número: ”, numero); end. Comando de atribuição Utilizado para atribuir um valor a uma variável, um resultado de uma expressão ou o valor de outra variável; Equivalente ao comando de atribuição <utilizando em algoritmos; Sintaxe em Pascal: Nome_variavel := valor, variável ou expressão; Comando de atribuição OBS: No comando de atribuição, a variável e seu valor devem ter o mesmo tipo, exceto nos seguintes casos: Variáveis reais podem receber valores integer; Variáveis string podem receber valores char; Exemplos: nome := ‘Thyago’; media := (nota1+nota2) / 2; Comandos de Entrada Utilizado para receber dados digitados pelo usuário; Funcionamento similar ao comando leia utilizado em algoritmos; Comandos de entrada disponíveis em Pascal: read readln (similar ao read, realizando também a leitura do “new line” (nova linha) após o pressionamento da tecla Enter); Comandos de Entrada Exemplo: programa que lê o nome e a idade de um usuário: program exemplo; Uses crt; Var nome: string; idade: integer; begin readln(nome); readln(idade); end. Comandos de Saída Utilizado para exibir dados; Funcionamento similar ao comando escreva e escreval utilizados em algoritmos; Comandos de saída disponíveis em Pascal: write (similar ao escreva) writeln (realiza a escrita de dados e passa o cursor para a próxima linha). Similar ao escreval Comandos de Saída No caso de variáveis do tipo integer ou real, podemos apresentar os dados na formatação desejada; Exemplo: Media := (8 + 2) / 2; Writeln(Media); {escreveria 5.00000000E + 01} Writeln(Media:0:2); {escreveria 5.00} Comandos de Saída Exemplo: programa que lê o nome e a idade de um usuário: program exemplo; Uses crt; Var nome: string; idade: integer; begin writeln(‘Digite seu nome:’); readln(nome); writeln(‘Digite sua idade:’); readln(idade); writeln(‘Seu nome: ’, nome); writeln(‘Sua idade: ’, idade); end. Operadores Operador Exemplo Comentário := X := 1 O valor 1 é atribuído a variável X. + X+Y Soma o conteúdo de X e de Y. - X–Y Subtrai o conteúdo de Y do conteúdo de X. * X*Y Multiplica o conteúdo de X pelo conteúdo de Y. / X/Y Obtém o quociente da divisão de X por Y. DIV X DIV Y Obtém o quociente inteiro da divisão de X por Y. MOD X MOD Y Obtém o resto da divisão inteira de X por Y. = X=Y Testa se o conteúdo de x é igual ao conteúdo de Y. <> X <> Testa se o conteúdo de x é diferente do conteúdo de Y. >= X >= Y Testa se o conteúdo de x é maior ou igual ao de Y. <= X <= Y Testa se o conteúdo de x é menor ou igual ou de Y. > X>Y Testa se o conteúdo de x é maior do que o conteúdo de Y. < X<Y Testa se o conteúdo de x é menor do que o conteúdo de Y. Funções Predefinidas Funções Matemáticas Função Comentários ABS (x) Obtém o valor absoluto de x. LOG(x) Obtém o logaritmo de x. TRUNC (x) FRAC(x) ROUND (x) Obtém a parte inteira do número real armazenado em x. Obtém a parte fracionária do número real armazenado em x. Arredonda x. SIN (x) Calcula o seno de x. COS (x) Calcula o cosseno de x. PI SQRT (x) SQR (x) Retorna o valor de ¶ Calcula a raiz quadrada de x. Calcula x elevado ao quadrado. INC (x, Y) Incrementa a variável x com o valor da variável Y. DEC (x,y) Decrementa a variável x com o valor da variável Y Ambientes de Programação Free Pascal Compiler Código aberto e gratuito; Interpreta Pascal e Object Pascal; Criado em 1993; Versões para vários sistemas operacionais; Ambientes de Programação Dev-Pascal Gratuito; Código Aberto; Ambientes de Programação Turbo Pascal Compilador Pascal; Software Proprietário da Borland International; Em 1995, deixou de ser desenvolvido; Licença de uso livre; Ambientes de Programação Pascal ZIM Desenvolvido no Departamento de Ciências da Computação da Universidade de Brasília, sendo utilizado pelo curso desde 2000. O compilador implementa um subconjunto da linguagem Pascal e contém as estruturas de dados, funções e comandos mais utilizados. É freeware. Ambientes de Programação Download: Free Pascal Compiler: http://www.freepascal.eti.br/ Dev-Pascal: http://www.bloodshed.net/devpascal.html Turbo Pascal: http://www.netdownloads.com.br/Download/2303/TurboPascal-70.html Pascal ZIM: http://pascalzim.tripod.com/index.html