ENGENHARIA DE PRODUÇÃO ICC 1 – TÉCNICAS DE PROGRAMAÇÃO 1. INTRODUÇÃO O que é um programa? Programa constitui uma seqüência lógica de passos para solução de um problema. Um programa pode ser codificado em linguagem de baixo nível (ex: assembly) ou em linguagens de alto nível (ex: Pascal, C, ...). Por exemplo: a linguagem de programação Pascal foi criada por Niklaus With de Technical University em Zurich, para ser uma ferramenta educacional. Programas escritos em Turbo Pascal 7 têm código-fonte com extensão .PAS e devem ser salvos no diretório \BIN. Uma alternativa é utilizar o PascalZim! Neste caso, não é necessário usar a instrução uses fdelay, crt; A execução de programas pode ser feita por dois processos: pela interpretação e pela compilação. Pela interpretação, a avaliação da sintaxe e a execução são feita no mesmo momento ... quando se submete o prgrama para execução. Na compilação, os programas são executados por meio do seguinte esquema: 2. ESTRUTURA DO PROGRAMA program NOME_DO_PROGRAMA; uses fdelay, crt; var { definição de variáveis procedure begin } NOME_DA_PROCEDURE; { se houver ... } ....................................... end; { fim da procedure function begin end; begin } NOME_DA_FUNCTION; { se houver ... ....................................... { fim da function } } { corpo principal do programa } CLRSCR; ................................ aqui se codifica o algoritmo ... aqui se usam comandos FOR, WHILE, REPEAT, READ/READLN, WRITE/WRITELN, IF, CASE ... ................................ READKEY end. { fim do programa } Página 1 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== Comentários: Todo programa começa com a declaração PROGRAM seguido de um nome do programa. Após deve-se declarar as units por meio do comando uses . Declarar as variáveis. O algorítmo em si começa com BEGIN e termina com END. Em princípio, todas as instruções terminam com ; Não se esqueça, para todo BEGIN deverá sempre ter um END. Exemplo: Program example; Uses fdelay, crt; ……………….. Só usado no Turbo Pascal 7 Var x : integer; y : real; Begin {Aqui vai o algorítmo} End. 3. VARIÁVEIS 3.1 - Tipos de VARIÁVEIS do tipo lógico, ocupa 1 byte, só pode ter os valores True ou False (Verdadeiro ou Boolean Falso) do tipo inteiro e numérico, ocupa 2 bytes, seus valores vão de -32768 até 32767, Integer do tipo inteiro do tipo inteiro e numérico, ocupa 4 bytes, valores vão de -2147483648 a Longint 2147483647 do tipo fracionário e numérico, ocupa 6 bytes, seus valores vão de 1E-38 até Real 1E+38 .... tem vírgula Shortint do tipo inteiro e numérico, inteiros de -128 a 127 Word do tipo inteiro e numérico, ocupa 2 bytes, inteiro de 0 a 65535 Byte do tipo inteiro e numérico, ocupa 1 byte, tipo inteiro de 0 a 255 do tipo caracter, ocupa 1 byte, tipo alfanumérico, seu conteúdo é qualquer valor Char da tabela ASCII do tipo literal e alfanumérico, ocupa de 2 a 256 bytes, seu conteúdo é qualquer String valor da tabela ASCII Obs: Em azul os tiposs primitivos utilizados no PascalZim! 3.2 - Outros tipos de VARIÁVEIS Single Double Extended Comp tipo real com 7 digitos tipo real com 15 digitos tipo real com 19 digitos inteiros de -10E18 até 10E18 3.3 - Atribuição de valores às VARIÁVEIS é feita por meio de Ex: K:=0; := Página 2 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 4. UNITs As units são rotinas separadas do programa principal. Para usar uma unit deve se declarar Uses. FDELAY CRT DOS GRAPH PRINTER UNIT para corrigir "bug" do Turbo Pascal 7. rotinas de vídeo e som controles do SO rotinas gráficas define LST como arquivo de texto direcionado para impressora 5. COMANDOS BÁSICOS DE ENTRADA E SAÍDA Comandos básicos: escreve algo num dispositivo de saída. Se o dispositivo não for WRITE ou WRITELN especificado o default será a tela do micro. Ex: WriteLn('Isto é uma string e sairá na tela'); Permite a entrada de dados via teclado READ ou READLN Ex: Write('Digite um valor para X: '); Readln(x); Permite limpar a tela, posicionando o cursor no canto superior CLRSCR (Clear Screen) esquerdo --- posição (0,0). Posiciona o cursor em qualque parte da tela GOTOXY Sintaxe: GOTOXY(coluna,linha); Possibilita a visualização do resultado do processamento, quando inserida da última instrução END. do programa. READKEY Sintaxe: READKEY END. Permite uma pausa no programa em milisegundos. (Este comando funciona conforme o clock do computador, sendo diferente em DELAY cada tipo de computador). Sintaxe: DELAY(3000); 6. ESTRUTURAS DE CONTROLE 6.1 – SEQÜÊNCIA Página 3 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 6.2 - ESTRUTURAS CONDICIONAIS As estruturas condicionais imnpõem uma condição para que uma tarefa seja realizada. 6.2.1 - Seleção a um ramo ------ IF.. Then.. (Se.. Então.. ) A instrução só é executada se a condição for satisfeita. ou, quando a condição sendo verdadeira, cabe executar mais de uma instrução (C1 e C2) 6.2.2 - Seleção a dois ramos ------ IF.. Then.. Else (Se.. Então.. Senão) A instrução C1 é excutada se a a condição for satisfeita. Caso contrário, a instrução C2 é executada. ou, quando a condição sendo verdadeira, cabe executar mais de uma instrução (C1 e C2) e quando a condição sendo falsa, cabe executar mais de uma instrução (C3 e C4). Página 4 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 6.2.3 - Estrutura CASE .... substitui um ninho de IF´s CASE constitui um seletor de opções, executando a opção que for igual a expressão. 6.3 - ESTRUTURAS DE REPETIÇÃO - LOOP Uma estrutura de repetição repete um bloco até que a condição seja satisfeita. 6.3.1 - FOR ... DO ... 6.3.1.1 – FOR ... TO ... DO Exemplo: Página 5 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 6.3.1.2 – FOR ... DOWNTO ... DO Exemplo: 6.3.2 - REPEAT ... UNTIL ... 6.3.3 - WHILE ... DO ... Página 6 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 7. EXERCÍCIOS 1. Analise o quadro abaixo, referente às estruturas de controle repeat ... until e while ... do. NÚMERO I II III IV V VI DESCRIÇÃO O teste de controle é realizado no início da estrutura de controle. O teste de controle é realizado no fim da estrutura de controle. A condição de saída do loop ocorre quando o teste é FALSE. A condição de saída do loop ocorre quando o teste é TRUE. Se o resultado do teste for TRUE, a execução do programa permanece no loop. Se o resultado do teste for FALSE, a execução do programa permanece no loop. a. Quando se trata da estrutura de controle repeat ... until ..., são afirmativas verdadeiras as de números: ____, _____ e _____. b. Quando se trata da estrutura de controle while ... do ..., são afirmativas verdadeiras as de números: ____, _____ e _____. 2. Analise o programa abaixo: program prg71; uses fdelay, crt; var B : boolean; S : string; begin { corpo do programa } CLRSCR; B:=FALSE; S:=’ENGENHARIA DE PRODUÇÃO’; repeat writeln(S); B:=NOT B; until( NOT B ); READKEY end. A variável S será impressa uma quantidade de vezes igual a ______ 3. Observe o programa abaixo. program ENGPROD; uses fdelay, crt; var N, K, Y : integer; begin clrscr; N:=4; Y:=10; for K:=2 to N do Y:=Y * K; writeln(Y); readkey; end. Ao final do processamento, será impresso para a variável Y o seguinte valor: _________ Página 7 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== 4. Analise o programa abaixo: program prg72; uses fdelay, crt; var X, I : integer; B : boolean; begin { corpo do programa } CLRSCR; X:=1; for I:=0 to 7 do begin X:=X+1; if (X MOD 2) = 0 then B:=TRUE else B:=FALSE; end; S:='UNIVERSO'; writeln(X:3,I:3,S:20); READKEY end. 5. Analise o programa abaixo: program prg73; uses fdelay, crt; var A, B, X, Y : integer; begin { corpo do programa } CLRSCR; write('Digite dois números : '); readln(X,Y); A:=X; B:=Y; while A < > B do if A > B then A:=A - B else B:=B - A; writeln('O valor de A e igual a ',A:3); READKEY end. Ao final do processamento, as variáveis X, I e B serão iguais, respectivamente, a ___, ___ e __________ Ao final do processamento, as variáveis X, I e B serão iguais, respectivamente, a ___, ___ e __________ 6. Elaborar um programa em Turbo Pascal que imprima o fatorial de todos os números inteiros entre 0 e 5, inclusive, conforme abaixo: NUMERO FATORIAL 1 1 2 2 3 6 4 24 5 120 Solução 1 : Utilizando a estrutura for ... to ... PROGRAM FATORIAL_FOR; USES FDELAY, CRT; VAR K, N, FAT : INTEGER; BEGIN CLRSCR; WRITELN('NUMERO FATORIAL'); FOR N:=1 TO 5 DO BEGIN FAT:=1; FOR K:=2 TO N DO FAT:=FAT * N; WRITELN(N:3,FAT:10); END; READKEY; END. Solução 2 : Utilizando a estrutura REPEAT... UNTIL ... Página 8 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== PROGRAM FATORIAL_REPEAT; USES FDELAY, CRT; VAR K, N, FAT : INTEGER; BEGIN CLRSCR; WRITELN('NUMERO FATORIAL'); N:=0; REPEAT N:=N+1; FAT:=1; K:=0; REPEAT K:=K+1; IF K > 1 DO FAT:=FAT * K; UNTIL K = N; WRITELN(N:3,FAT:10); UNTIL N = 5; READKEY END. Solução 3 : Utilizando a estrutura REPEAT... UNTIL ... e FOR … TO … PROGRAM FATORIAL_REPEAT; USES FDELAY, CRT; VAR K, N, FAT : INTEGER; BEGIN CLRSCR; WRITELN('NUMERO FATORIAL'); N:=0; REPEAT N:=N+1; FAT:=1; FOR K:=2 TO N DO FAT:=FAT * N; WRITELN(N:3,FAT:10); UNTIL N = 5; READKEY END. Solução 4 : Utilizando a estrutura WHILE ... DO... PROGRAM FATORIAL_WHILE; USES FDELAY, CRT; VAR K, N, FAT : INTEGER; BEGIN CLRSCR; WRITELN('NUMERO FATORIAL'); N:=0; WHILE N < 5 DO BEGIN N:=N+1; FAT:=1; K:=0; WHILE K < N DO BEGIN K:=K+1; IF K > 1 DO FAT:=FAT * K; END; WRITELN(N:3,FAT:10); END; READKEY END. Solução 5 : Utilizando a estrutura WHILE... DO ... e FOR … TO … Página 9 de 10 ICC1 - TÉCNICAS DE PROGRAMAÇÃO – PASCALZIM! ==================================================================================================== PROGRAM FATORIAL_WHILE; USES FDELAY, CRT; VAR K, N, FAT : INTEGER; BEGIN CLRSCR; WRITELN('NUMERO FATORIAL'); N:=0; WHILE N< 5 DO BEGIN N:=N+1; FAT:=1; FOR K:=2 TO N DO FAT:=FAT * N; WRITELN(N:3,FAT:10); END; READKEY END. FIM Página 10 de 10