UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e...

51
A B X C X X O X X O X X O Template <class GS> void Stack<GS>::push( G

Transcript of UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e...

Page 1: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

CURSO DE

INTRODUÇÃO À

COMPUTAÇÃO

2002

UTILIZADO NA UNIVERSIDADE FEDERAL DE SÃO CARLOS

Roberto Ferrari

A

B

X

C

X

XO

X XO

XX

O

Template <class GS> void Stack<GS>::push( G

Page 2: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

2

CURSO DE INTRODUÇÃO À COMPUTAÇÃO

ROBERTO FERRARI 2002

Page 3: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

3

Publicação não destinada à exploração comercial. Direitos autorais reservados.

Informações adicionais com o autor.

[email protected]

www.dc.ufscar.br/~ferrari/

Edição do autor. Copyright 1999, 2002 Roberto Ferrari.

Todos os direitos reservados.

Ferrari, Roberto.

Curso de introdução à Computação/ Roberto Ferrari - Sâo Carlos,

2002.

p.

Inclui bibliografia.

1. Programação.

I. Título

Page 4: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

4

APRESENTAÇÃO

Este Curso de Introdução à Computação contém um

resumo das notas de aula, exercícios, trabalhos e provas de anos

anteriores. Seu objetivo não é substituir o livro texto, mas

mostrar aos alunos o curso que os aguarda, possibilitando um

planejamento prévio do estudo e do aprendizado.

Page 5: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

5

CONTEÚDO Módulo 1- Algoritmos e Programas 6

Módulo 2- Elementos Fundamentais 14

Módulo 3- Estruturas de Dados 28

Módulo 4- Modularização 36

Módulo 5- Arquivos 40

Especificação dos trabalhos do curso 45

Provas de Anos Anteriores 48

Referências Bibliográficas 50

Page 6: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

6

Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados", cap. 0. 1- Evolução Tecnológica dos Computadores • manuais (ex. ábaco) • mecânicos (ex. máquina de somar à manivela) • eletrônica digital

• válvulas e relés • transístores (semicondutores), Bell Labs., 1948 => menor, menos consumo de

energia • circuitos integrados (semicondutores) => menor ainda => computador de uso

pessoal 2- A Tecnologia Digital diferença: analógico X digital • dispositivo analógico: funciona por analogia, por comparação, por proporção.

• ex.: termômetro (varia a temperatura, varia a dilatação do mercúrio, ou corrente elétrica)

• ex.: válvula reguladora de pressão ou do escoamento de fluidos (varia a corrente enviada à válvula, varia a pressão ou escoamento de fluidos)

• lida com grandezas contínuas • dispositivo digital: trabalha com as grandezas discretas e absolutas: "0"s e

"1"s, ligado e desligado, com corrente e sem corrente. Bit (Binary Digit) Menor unidade de informação, que pode assumir um dentre dois estados: "0" ou "1". Byte Conjunto de 8 bits -- capaz de identificar um caractere do alfabeto .

Objetivos de aprendizado neste módulo...

• o conceito de algoritmo e de programa • técnica básica para desenvolvimento de algoritmos • a contextualização de algoritmos e programas em

relação à tecnologia atual e aos objetivos profissionais dos alunos

• executar um programa exemplo

0 0 1 0 0 0 0 0 1

bi byte

Page 7: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

7

Representação de números em decimal (base 10) e em binário (base 2)

representação decimal

representação em binário

0 0000 1 0001 2 0010 3 0011 4 0100 5 0101 6 0110 7 0111 8 1000 9 1001 10 1010 ... ...

Conversão binário-decimal e decimal-binário binário --> decimal 1101 = (2 3 * 1) + (2 2 * 1) + (2 1 * 0) + ( 2 0 * 1) = 8 + 4 + 0 + 1 = 13 decimal --> binário 13 2 1 6 2 0 3 2 1 1 2 1 0 resposta = restos das divisões sucessivas por 2, na ordem inversa => 1101 Representação de caracteres (alfabéticos e outros)

caractere representação em ASCII

A 01000001 B 01000010 C 01000011 ... ... + 00101011 4 00100100 ... ... 0 00110000 1 00110001 2 00110010 ... ...

Capacidades de representação

Page 8: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

8

Variando o estado (0 ou 1) de cada bit de 1 byte, quantas combinações posso ter ? 28 = 256

N 2 N 8 (1 byte) 256

16 65536 32 4,2 x 10 9 ... ...

• 1 Kbyte (Kilobyte) = 1024 Bytes • 1Mbyte (Megabyte) = 1024 Kbytes • 1 Gbyte (Gygabyte) = 1024 MBytes 3- Evolução dos Tecnológica dos Computadores - Continuação

tendência inicial... com o tempo... hardware mainframes, grande porte microcomputadores capacidade pequena cresceu muito custo $$$$$$$$$$$$$$$ $ aplicações científicas, grandes

empresas escritório, casa, escola

• anos 80: microcomputadores, várias arquiteturas, nenhuma padrão

• IBM abriu a arquitetura ( IBM PC) • terceirizou a fabricação do sistema operacional ao estudante Bill Gates • virou padrão, aumentaram os fabricantes, a concorrência, competitividade,

abaixou o custo... Comparação • Mark I, 1944, 5 toneladas. • ENIAC 1946 19.000 válvulas, consumia grande energia, podia registrar um

máximo de 20 números de até 10 dígitos. A programação era feita com com fios e pinos, como em um antigo painel de telefonista.

• anos 80: XT 4,77 MHz, 20 Mbytes disco, 256 Kbytes RAM vídeo monocromático. • atualmente: Pentium 600 MHz, 64 Mbytes RAM, 6 Gbytes disco, CD, video SVGA

color... 4- Conceitos Básicos sobre Programação de Computadores 1

computador: Máquina capaz de executar processos de acordo com regras precisamente definidas. • Existe um repertório finito de instruções elementares que o computador

entende e é capaz de executar. • Os elementos desse repertório finito podem ser agrupados (ou programados) de

modo a dar origem a um número infinito de combinações. Exemplos: • Música (composta pela combinação das 7 notas musicais) • Representação decimal de números reais (a partir de dígitos de 0 a 9) • Coreografia de um ballet clássico (a partir de um conjunto limitado de

passos básicos). Programação (de computadores, de uma coreografia, etc.) É o ato de agrupar instruções em seqüências de forma que, quando seguidas, produzem um resultado esperado.

1 alguns conceitos e exemplos foram adaptados do texto experimental de Catto e outros, de data desconhecida

Page 9: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

9

Ação Acontecimento de duração finita, com um efeito previsível e bem definido. • executada sobre um objeto. • interesse é pelo efeito da ação no objeto. • a ação leva o objeto de um estado inicial a um estado final. • a execução de uma ação é chamada de processo. • o agente que executa o processo é chamado de processador. exemplo: descascar uma banana • ação = descascar • objeto = banana • efeito = banana descascada contra-exemplos • viver (duração indeterminada) • disputar um jogo de azar (imprevisível) • esperar (não parece algo bem definido) Ações primitivas São ações que o processador é capaz de entender e executar (sobre objetos bem determinados). Algoritmo • (Abib) seqüência ordenada e sem ambiguidade de passos que levam à solução de

um dado problema. • (Farrer) Descrição de um conjunto de comandos que, obedecidos, resultam numa

sucessão finita de ações. • (Catto e outros) Definição de um padrão de comportamento em termos de um

conjunto finito, bem conhecido e bem definido de ações primitivas, que se supõe possam ser executadas sobre objetos bem determinados, produzindo o efeito desejado.

Linguagem de programação Um conjunto finito, conhecido e bem definido de ações primitivas. Programa (Abib) Um algoritmo escrito numa linguagem de programação qualquer (Pascal, C, C++ etc.). Técnica de desenvolvimento de algoritmos: refinamentos sucessivos • Descrever o conjunto de ações que, executadas, levam à obtenção de um efeito

desejado. • Se uma ação não pertencer ao conjunto das ações primitivas ela deverá ser

decomposta em ações mais simples e específicas, e assim sucessivamente até que todas as ações pertençam ao conjunto de ações primitivas.

Problema 1: ensinar robô a fazer um bolo "Bata no liquidificador 2 cenouras, 4 ovos e 1 chícara de óleo. Já na batedeira,

adicione fermento e açucar a gosto. Leve ao forno como um bolo normal" Identificar ambiguidades, indefinições e efeitos não previsíveis... 1º refinamento 1. bata no liquidificador 2 cenouras, 4 ovos e 1 chícara de óleo por 2 minutos. 2. colocar na batedeira e acrescentar um tablete de fermento e 1 chícara de

açucar, bata por 3 minutos.

Page 10: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

10

3. leve ao forno por 1 hora. Identificar indefinições... Refinamento do passo1 1. pegar o liquidificador 2. inserir 2 cenouras 3. inserir 4 ovos 4. inserir 1 chícara de óleo 5. ligar o liquidificador 6. esperar por 2 menutos 7. desligar o liquidificador Identificar indefinições... Refinamento do passo 1.1 1. ir até o armário 2. abrir a porta do armário 3. estender as mãos até o liquidificador 4. segurá-lo 5. ir até a mesa 6. posicionar o liquidificador sobre a mesa 7. soltá-lo e assim por diante... até que todas as ações possam ser compreendidas pelo robô. Problema 2 (introdução ao conceito de variáveis, em um programa) : "programar o robô, de modo que este aprenda a fazer o tal bolo em diferentes quantidades - para 3 pessoas, para 10, etc. solução: Seja X o nº de cenouras, Y o nº de ovos, e Z o nº de chícaras de óleo. Descrever o algoritmo em função de X, Y e Z. Definir X, Y e Z no momento da execução do processo. Problema 3 (introdução ao conceito de tipos de dados e de linguagem de programação): Sejam conhecidos os seguintes tipos, ações e regras: • tipo coisa = sacola, panela, liquidificador, batedeira • tipo fruta = banana, mamão, laranja, maçã, goiaba

ação válida sobre objetos do tipo... pegar coisa, fruta

descascar fruta guardar coisa, fruta

Exemplos de ações (verificar se são válidas): • pegar panela • descascar banana • descascar sacola (não) • descascar pera (não) • etc. Linguagems de programação - exemplos • Pascal • C • C++ Fluxograma (flowchart)

N S

Page 11: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

11

• Uma outra forma de descrever algoritmos. • Mostra o "fluxo" (seqüência) de ações, e seus relacionamentos com os objetos que estão sendo processados 5- Hardware, Software, Aplicativos, Compiladores, Linguagens Contextualizando o conceito de algoritmos e programas na tecnologia atual ... • Linguagens de programação: conjunto de ações primitivas e regras de sintaxe.

Exemplos: pascal, C, C++ • Compiladores e geradores de aplicações ou geradores de programas: programas

que traduzem instruções de uma linguagem mais acessível ao homem (mais fácil) em uma linguagem compreendida pela máquina. Ex.: Turbo Pascal, Borland C++...

• Hardware: máquina • Software: programas • Sistema Operacional: programa usado para controlar funções básicas da máquina

como gerenciamento do sistema de arquivos, gerenciamento da memória, etc. Exemplos: Windows, Unix, MacOS

• windows 98 • windows NT • Unix • MacOS

• IBM PC • MAC • Sun Sparc

Station • AS 400

• C++ • Pascal • Java

• sistema para clínicas médicas

• folha de pagamentos

• contabilidade • SAP

• Borland C++ • Turbo Pascal • Delphi • access

• oracle • sybase • informix

• netscape • director • video maker

• hardware • sistema

operacional • software

• bug do ano 2000

• virus • hacker

• RAM • disco rígido • CD ROM • scanner

Page 12: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

12

• Memória RAM: memória temporária (as informações se perdem assim que o equipamento é desligado)

• Disco rígido, CD ROM, Floppy disc: armazenam informações mesmo após desligar o equipamento.

• Dispositivos de entrada de informações: teclado, mouse, scanner... • Dispositivos de saída: vídeo, auto-falante, impressora... 6- Exemplo de um Programa 7- Atividade Extra-Classe: Executar e Alterar um Programa O objetivo da atividade é "quebrar o gelo", ou seja, ter um primeiro contato com programação (aos alunos que ainda não tiveram), com a linguagem e com o compilador que serão utilizados neste curso. Roteiro 1. Vá até o laboratório e, tendo dificuldades, peça ajuda ao monitor. 2. Execute o programa Turbo Pascal. 3. Acione a opção File/New para criar um novo arquivo, digite (como em um editor

de texto) o programa dado como exemplo. 4. Acione a opção Run para executar o programa. 5. Altere o programa, segundo seus próprios critérios, e execute novamente. 6. Execute outros programas-exemplo, eventualmente existentes no laboratório. 7. Consulte o "help" do turbo pascal e procure se familiarizar com o ambiente de

trabalho. Aqueles que pretendem estudar em seu próprio computador podem adquirir e instalar uma versão completa do Turbo Pascal ou, alternativamente, copiar uma versão compacta do laboratório, que só poderá ser utilizada para fins de aprendizado e desenvolvimento de pesquisas. 8- Temas para Debate: • Quais podem ser as aplicações da informática na sua futura profissão? • Que conhecimentos de informática você precisa ter para manter a

competitividade profissional? • Que contribuições este curso pode trazer para a sua formação? 9- Exercícios de Fixação 1. O computador que você usa é dito ´digital´. O que é um dispositivo digital?

Qual a diferença entre um dispositivo digital e um dispositivo analógico? 2. Qual a representação em binário dos decimais 7, 12 e 1240? 3. Qual a representação decimal dos binários 11001 e 10111 ?

program Exemplo; uses crt; var a,b, soma:integer; begin clrscr; write('a= '); readln(a); write('b= '); readln(b); soma := a + b; writeln( a, ' + ', b, ' = ', soma ); writeln( 'pressione enter para continuar'); readln end.

d b l 0

Page 13: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

13

4. Quantos caracteres distintos seria possível representar com apenas 4 bits? 5. O que significa 64 MBytes de memória? 6. Qual a diferença entre armazenar uma informação na memória RAM e armazenar

uma informação no disco rígido? 7. Que é um algoritmo? 8. Que é um programa de computador? 9. Qual a técnica básica para desenvolvimento de algoritmos? 10. No contexto de programação, para que serve um fluxograma? 11. Qual a diferença entre linguagem de programação e compilador? 10- Leituras Recomendadas • sobre o módulo 1, leia o Capítulo 0 do livro de Farrer e outros, "Algoritmos

Estruturados".

• sobre o módulo 2, como preparação para a próxima aula, leia o Capítulo 1 de ambos os livros de Farrer e outros, entitulados "Ítens Fundamentais".

Page 14: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

14

Módulo 2: Elementos Fundamentais Texto base para este módulo • Farrer e outros, "Algoritmos Estruturados", cap. 1. • Farrer e outros, "Pascal Estruturado", cap. 1. Tópicos 1. Constantes, variáveis e tipos

• Identificadores • Tipos de dados • Declaração de variáveis • Declaração de constantes • Declaração de tipos

2. Comentários

3. Comandos de atribuição, entrada e saída • Atribuição • Comandos de entrada • Comandos de saída

4. Expressões • Expressões aritméticas • Expressões lógicas

5. Estruturas básicas de controle • Estrutura seqüencial • Estrutura condicional • Estrutura de repetição

1- Constantes, variáveis e tipos Conceito de variável

=> 4X2 + 3X + 9 => constantes: 4, 3, 9

Objetivos de aprendizado neste módulo... • apresentar ao estudante os elementos básicos de um programa:

variáveis, tipos, estruturas de controle, entrada e saída, etc. • praticar o desenvolvimento de algoritmos com a utilização de tais

elementos

X

Y

X

Y contém água

contém vinho

2

4

Page 15: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

15

=> variáveis: X

Variáveis podem assumir diversos valores. .. • em uma equação aritmética, X pode assumir diversos valores. • uma variável pode ser comparada a um copo que pode receber água ou vinho (ou outro líquido), ou

ainda a uma caixinha que pode abrigar diferentes objetos. • exemplo de utilização em um programa: X pode representar o número de colheres de fermento em um

bolo, Y o número de ovos e Z o nº de bananas. 1.1- Identificadores Variáveis são identificadas por nomes, ou identificadores. Nos exemplos acima, X é um identificador. Em Pascal os identificadores podem ser formados basicamente por... • uma combinação de letras a-z, A-Z e números 0-9 • não pode começar com número • não pode usar uma palavra reservada do Pascal (como read, write, program..) • Turbo Pascal permite a utilização do caractere especial ´_´ (underscore) • nenhum outro caractere ( +, -, *, &, $ etc..) pode ser utilizado • em um identificador, Pascal não faz diferença entre letras maiúsculas e minúsculas. Exemplos de identificadores válidos • Aluno • X • A34 • NotaDoAluno Exemplos de identificadores não válidos • 23 • Nota do Aluno • 1treco 1.2- Tipos de Dados Recordação • tipo coisa = sacola, panela, liquidificador, batedeira • tipo fruta = banana, mamão, laranja, maçã, goiaba

ação válida sobre objetos do tipo... pegar coisa, fruta

descascar fruta guardar coisa, fruta

O que é um tipo? Um tipo define um padrão de comportamento para constantes e variáveis. Por exemplo, objetos do tipo fruta podem ser descascados, objetos do tipo coisa não.

Page 16: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

16

Principais tipos pré-definidos no Pascal tipo descrição faixa exemplos de constantes desse

tipo Integer valores inteiros -32.768 a +32.767 (2 bytes) • 01, 12, -15, 6.678 Real valores reais +/- 10 38 (4 bytes) • 2.43, -5.678, 1x10 6, etc Char um caractere qualquer caractere • A, C, 8, &, *, , -, etc String[size] cadeia de

caracteres qualquer cadeia que caiba no tamanho definido

• String[3] = �ABC´, ´6T$´, �o´, .. • String[5] = ´a´, ´´, ´pares´, ..

Boolean valores lógicos True, False • True, False Cada variável é definida como sendo de um tipo específico, e pode assumir somente valores válidos a esse tipo. • se X é do tipo Integer, pode assumir valores inteiros: 2, 15, 5555, -4, etc. • se X é do tipo Boolean, pode assumir os valores True ou False • etc. 1.3- Declaração de variáveis Podemos definir variáveis através da seguinte declaração:

Var lista de identificadores : tipo ; Exemplos: • Var X : Integer; • Var Y, Z : Real; • Var Disciplina : String[10]; • Var Turma : Char; • Var Status : Boolean; 1.4- Declaração de constantes É possível definir novas constantes através da seguinte declaração

Const identificador : valor ; Exemplos: • Const NumerodeBananas = 10; • Const Pi = 3,1416; • Const Status = False; • Const Tamanho = 30; • Const Nome = ´Jose da Silva´; • Const Turma = ´C´; 1.5- Declaração de tipos É possível acrescentar novos tipos de dados (como tipo fruta, tipo coisa etc.) ao conjunto de tipos conhecidos do Pascal (Integer, Real etc.). Esse tema será tratado posteriormente. 2- Comentários Podemos inserir comentários em um programa, sob a forma de texto, sem que isso interfira em sua lógica. O objetivo dos comentários é proporcionar maior clareza ao programa. Comentários podem ser expressos da seguinte forma.

{ texto }

Page 17: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

17

ou ainda

(* texto *) Exemplos: • Var NomeDoIndividuo : String[ 20 ] ; { armazena o nome do indivíduo } • Var EstadoCivil : Boolean; { True significa casado, False solteiro } 3- Comandos de atribuição, entrada e saída 3.1- Comando de atribuição É possível atribuir um valor qualquer a uma variável. • valor atribuído pode ser um valor constante, o valor de uma variável ou ainda o valor de uma expressão. • valor atribuído precisa ser compatível com o tipo da variável. O comando de atribuição é expresso da seguinte forma:

identificador := expressão ; onde a expressão pode simplesmente ser uma constante ou variável. Exemplos:

Var X : Integer; Var Y, Z : Real; Var Disciplina : String[10]; Var Turma : Char; Var Status : Boolean; {casos válidos } X := 5; X := X + 1; Y := Z; Z := Y + 5 + X; Turma := �B�; Status := True; Disciplina := �Química I�; { Casos não válidos� } X := Y; Z + Y := 5; 5 := X;

3.2- Comandos de entrada Entrada de dados, ou ainda leitura de dados, seria análogo a atribuir a uma variável um valor obtido externamente. O exemplo mais natural para leitura de dados é pedir ao usuário fornecer valores via teclado. Mas pode-se também ler dados de arquivos, ou ainda de outros dispositivos de entrada. Considerando-se a entrada de dados via teclado, os comandos seriam:

Read ( identificador ); ou ainda

X

Y

2

4,5

Z

Page 18: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

18

Readln ( identificador ) ;

Observações: • A diferença entre ambos é que o Readln considera que a próxima leitura, se houver, será realizada na

linha seguinte. • Não é possível ler variáveis do tipo Boolean. • Na verdade é possível usar um único comando Read ou Readln para ler uma lista de identificadores. Exemplos:

{ considere as seguintes variáveis� } Var X : Integer; Var Y, Z : Real; Var Disciplina : String[10]; Var Turma : Char; Var Status : Boolean; { casos válidos } Read ( X ); Read ( Y ); Readln ( Z ); Readln ( Disciplina ); Read ( Turma ); Readln( X, Y, Z ); { casos não válidos } Read ( Status ); Read( 55 );

3.3- Comandos de saída A saída de dados significa mostrar tais dados em um dispositivo de saída, como vídeo, impressora ou arquivo. A forma mais simples de saída de dados ocorre quando se escreve valores de variáveis, constantes ou expressões no vídeo. Considerando-se a saída de dados no vídeo, os comandos seriam:

Write ( lista de identificadores, constantes ou expressões ); ou ainda

Writeln (lista de identificadores, constantes ou expressões) ; Observações: • A diferença entre ambos é que o Writeln escreve a lista de valores e considera que a próxima operação

de escrita, se houver, será realizada na linha seguinte. Exemplos:

{ considere as seguintes variáveis� } Var X : Integer; Var Y, Z : Real; Var Disciplina : String[10]; Var Turma : Char; Var Status : Boolean;

Page 19: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

19

{ casos válidos } Write ( X ); Write ( �O valor de X é:�, X ); Writeln ( �pressione uma tecla para continuar� ); Writeln ( �A soma de �, Y, � com �, Z, � resulta em �, Y + Z ); Writeln ( Disciplina, �- �, Turma ); { casos não válidos } Writeln ( O valor de X é� X ); Writeln ( X Y Z ); Writeln ( X, Y, Z ); { válido porém os espaços não aparecem }

Formatação de saída Opcionalmente, os comandos de saída podem ser expressos da seguinte forma:

Write ( p1, p2, p3� pn ); ou ainda

Writeln ( p1, p2, p3� pn ) ; Cada parâmetro pi sendo expresso em uma das 3 formas abaixo� • e • e:e1 • e:e1:e2 Onde • e é uma expressão (que pode ser simplesmente uma constante ou variável). • e1 é um valor inteiro positivo que indica o número de caracteres que será utilizado na escrita de e. • e2 é um inteiro positivo que determina o número de casas decimais que devem ser utilizadas na escrita

de e (que, neste caso, só pode ser do tipo Real). Exemplos:

Var X : Integer; Var Y, Z : Real; Var Disciplina : String[10]; Var Turma : Char; { casos válidos } Write ( X:1 ); { se X vale 5, a saída será: 5 } Write ( X:4 ); { se X vale 5, a saída será: 5 } Writeln ( Y:6:2, Z:6:2 ); { 6 caracteres, 2 casas decimais } Writeln ( Disciplina:10, �- �, Turma:4 ); { casos não válidos } Writeln ( X:5:2 );

4- Expressões conceitos

A + B • A e B são operandos • + é o operador

Seno ( X ) • Seno é uma função A < B • < é uma relação

Page 20: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

20

4.1- Expressões aritméticas Operadores • *, /, DIV, MOD { maior prioridade } • +, - Observações • DIV = divisão inteira e MOD = resto da divisão inteira. • A prioridade pode ser alterado com o uso de ( e ). Funções Ln( x ) Logaritmo neperiano real Exp( x ) Número e elevado a x Real Abs( x ) Valor absoluto Integer ou real Trunc( x ) Pega a parte inteira Integer Round( x ) Arredonda Integer Sqr( x ) Quadrado de x Real ou integer Sqrt( x ) Raiz quadrada de x Real Sin( x ) Seno de x Real Cos( x ) Co-seno Real Arctan( x ) Arco tangente Real Exemplos: • 11 DIV 4 • 11 MOD 4 • 2 * X + 10 • (A + B) * C • X / N + Sqr ( Z ) 4.2- Expressões lógicas Relações • =, <>, <=, >=, <, > Operadores • AND, OR, NOT Expressões lógicas podem envolver expressões aritméticas. Neste caso, a prioridade de execução obedece a seguinte tabela:

Prioridade Operadores 1a NOT 2a *, /, DIV, MOD, AND 3a +, -, OR 4a =, <>, <, <=, >=, >

Exemplos: • A < B • A = B • A = 0 • 2 = 6 • D <> 6 • (A = 1) AND ( (B + C <> 0) OR (K <=2) ) • NOT ( (total >= 5) AND (A <> B) ) OR Teste

Page 21: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

21

5- Estruturas básicas de controle Estruturas de controle: • Controlam a (ordem, seqüência� de) execução de um programa Estruturas básicas • Estrutura seqüencial • Estrutura condicional • Estrutura repetitiva 5.1- Estrutura seqüencial Os comandos de um programa são executados na seqüência em que aparecem. Um programa Pascal segue a sintaxe definida abaixo. Program identificador;

Declarações

Begin

Comandos

End. Exemplo de um programa Pascal program Exemplo1; { faz a soma de dois inteiros } uses crt;

{ crt = �biblioteca� de funções. Na prática, acrescenta novos comandos ao elenco de comandos do Pascal }

var a,b,soma:integer; { declara as variáveis a, b e soma } begin clrscr; { limpa a tela, comando da biblioteca crt } write('a= '); readln(a); write('b= '); readln(b); soma := a + b; { soma recebe o valor de A + B } writeln( a, ' + ', b, ' = ', soma ); writeln( 'pressione enter para continuar'); readln end. 5.2- Estrutura condicional A estrutura condicional simples é expressa da forma: If condição Then comando ; Neste caso, o comando só seria executado se a condição for verdadeira. A estrutura condicional composta é expressa da forma abaixo:

Page 22: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

22

If condição Then comando1 Else comando2; Se a condição for verdadeira, o comando1 é executado. Caso contrário será executado o comando2. Exemplos:

If A > B Then C := A; If A < B Then C := A Else C := B; If C <> 0 Then C := C + 1 Else If A > C Then C := A;

Agrupamento de comandos É possível agrupar comandos em blocos da forma abaixo: Begin Comando 1 Comando 2 � comando n End; Além de agrupar comandos, Begin e End podem funcionar como uma espécie de parêntesis, alterando o controle da execução do programa ou ainda resolvendo ambiguidades. Exemplos:

If C <> 0 Then Begin

B := C; Read( C ); G := Sqr( C ); Writeln( B, C, G ); End

Else If A > C Then C := A; If C <> 0 Then Begin

If A > B Then C := A Else C := B; End;

Definição: Identação Significa alinhar os comandos de forma a facilitar a visualização do programa, como nos exemplos acima. Exercícios para fazer durante a aula Resolva as questões abaixo com a técnica de refinamentos sucessivos. Refine até chegar a um programa Pascal. 1. Ler três valores inteiros e determinar o menor deles.

Page 23: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

23

2. Ler dois valores A e B, troque os valores e escreva A e B. 3. Ler o preço de venda de um produto, o seu preço de custo. Calcular o imposto a ser pago (30% sobre o

lucro). 4. Ler cinco valores inteiros e escrever os dois maiores. 5. Ler três valores reais e escrevê-los em ordem crescente. 6. Faça um programa chamado �Calculadora�, onde o usuário fornece dois valores e o operador ( um

dentre +, -, * e /), e o programa faz a conta. Atividades extra classe • Já é possível fazer o primeiro trabalho • Já é possível fazer vários dos exercícios propostos no capítulo 1 do Farrer. • Ler sobre estruturas de repetição Resolução dos exercícios de aula Exercício 1: Ler três valores inteiros e determinar o menor deles. Algoritmo Program EscolheMenor; 1. declare 3 inteiros A, B e C e um 4 inteiro Menor Var A, B, C, Menor : Integer; 2. Leia A, B e C Begin

Write( �forneça A�); Readln( A ); Write( �forneça B�); Readln( B ); Write( �forneça C�); Readln( C );

3. Menor ! A Menor := A; 4. Se C < Menor Então Menor! C

If C < Menor Then Menor := C;

5. Se B < Menor Então Menor ! B

If B < Menor Then Menor := B;

6. Escreva o Menor Writeln ( �O menor valor é: �, Menor ); End.

Exercício 2: Ler dois valores A e B, troque os valores e escreva A e B. " para trocar o valor de duas variáveis é preciso usar uma terceira variável como auxiliar. Algoritmo Program Troca; 1. declare inteiros A, B e auxiliar Var A, B, Auxiliar : Integer; 2. Leia A e B Begin

Write( �forneça A�); Readln( A ); Write( �forneça B�); Readln( B );

3. Salve o valor de A em Auxiliar Auxiliar := A; 4. Passe o valor de B para A A := B; 5. Passe o valor de Auxiliar para B B := Auxiliar; 6. Escreva os valores A e B Writeln ( �Novo A =�, A:6, �Novo B = �, B:6 );

End. Exercício 3: Ler o preço de venda de um produto e o seu preço de custo. Calcular o imposto a ser pago (30% sobre o lucro). Algoritmo Program Leao; 1. declare PrecoVenda, Custo, Lucro, Imposto Var PrecoVenda, Custo, Lucro, Imposto : Real; 2. Leia PrecoVenda e Custo Begin

Write( �forneça o Preco de Venda�); Readln( PrecoVenda ); Write( �forneça o custo�); Readln( Custo );

3. Calcule Lucro = PrecoVenda - Custo Lucro := PrecoVenda � Custo; 4. Calcule Imposto = Lucro x 30% Imposto = Lucro * 0,3; 5. Escreva o imposto a ser pago Writeln ( �O imposto a ser pago = �, Imposto:10:2 );

End.

Page 24: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

24

Exercício 4: Ler cinco valores inteiros e escrever os dois maiores. " Vamos usar duas variáveis auxiliares, Maior1 e Maior2, para indicar o primeiro e o segundo maior. " Maoir1 e Maior2 começam com os valores de A e B ( ou B e A, o que for apropriado). " Vamos passar pelos 3 valores restantes primeiramente verificando se eles são maiores que o segundo

maior. Se forem, o Maoir2 deve ser atualizado. A seguir verificamos se o Maior2 é maior que o Maior1. Se for, devemos trocar os valores.

Algoritmo Program DoisMaiores; 1. declare A, B, C, D, E, Maior1, Maior2 Var A, B, C, D, E, Maior1, Maior2 : Real; 2. Leia os 5 valores Begin

Write( �forneça A: �); Readln( A ); { idem para B, C, D e E } 3. Escolhe o maior entre A e B e atribui a Maoir1, o outro valor vai para Maior2

If A > B Then Begin Maior1 := A; Maior2 := B; End Else Begin Maior1 := B; Maior2 := A; End;

4. Verifique se C é maior que Maior2, se for, Atualiza maior2 com C. Se Atualizou, verifique se Maior2 é maior que Maior1: se for, troque. Obs.: repetir o processo para D e E

If C > Maior2 Then Begin Maior2 := C; If Maior2 > Maior1 Then { troca, ver exercício 2 } End; { idem para D e E }

5. Escreva os 2 maiores Writeln ( �O maoir é:�, Maior1:8:2, �e o 2o maior é: �, Maior:8:2 ); End.

Exercício 5: Ler três valores reais e escrevê-los em ordem crescente. " uma das maneiras de resolver este problema é através de expressões lógicas. Algoritmo 1- declare a, b, c 2- leia a, b, c 3- se A >= B e A >= C

então se B >= C então escreva A, B, C senão escreva A, C, B

4- senão se B >= A e B >= C então se A >= C

então escreva B, A, C senão escreva B, C, A senão se A >= B então escreva C, A, B

Page 25: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

25

senão escreva C, B, A Exercício 6: Faça um programa chamado �Calculadora�, onde o usuário fornece dois valores e o operador ( um dentre +, -, * e /), e o programa faz a conta. " o principal desafio deste exercício é a escolha do operador que será utilizado. Para isso, podemos usar

um conjunto de �if�s aninhados. Algoritmo 1- declare A, B inteiros, Resultado Real e Operador tipo caractere 2- leia A, B e Operador 3- de acordo com o operador lido, execute A + B, A � B, A * B ou A / B. Atualiza Resultado 4- escreva o resultado Refinamento 3 Se Operador = �+ Éntão Resultado ! A + B Senão Se Operador = �- Éntão resultado ! A � B Senão se Operador = �* Éntão Resultado ! A * B Senão se Operador = �/� e B <> 0 Éntão resultado ! A / B Senão resultado ! 0 Refinamento 4 Writeln( A:5, Operador:3, B:5, �= �, Resultado:7:2 ); 5.3- Estrutura repetitiva A estrutura repetitiva permite que uma seqüência de comandos sejam executados um número determinado de vezes, ou até que uma condição seja (ou deixe de ser) satisfeita. A estrutura repetitiva pode ser expressa de 3 maneiras: " comando For, " comando Repeat e " comando While. For identificador := valor1 To/Downto valor2 Do { escolher entre To e Downto }

comando ; { ou bloco de comandos, usando Begin e End } " Note que o comnando For executa um número determinado de vezes, dependendo apenas de valor1 e

valor2. Exemplo: fatorial de N (inteiro maior que 1)

Readln( N ); Fat := 1; For I := N downto 1 do

Fat := Fat * I; Writeln( �O fatorial de �, N:5, � é �, Fat : 5 );

Repeat

Comando1

Page 26: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

26

Comando2 � Comandon

Until condição; { não precisa usar Begin e End para delimitar o bloco de comandos } " Note que o comando Repeat executa Comando1, Comando2 etc. pelo menos uma vez, pois a condição

de parada é no fim. " Note também que se a condição de parada nunca ocorrer, o comando nunca será encerrado. Diz-se

que o programa entra em �loop�. " Ao contrario do For, o número de repetições pode não ser determinado Exemplo: ler uma lista de valores (e fazer alguma coisa com eles) até encontrar um valor inválido.

Total := 0; NroElementos := 0; Writeln(�Digite os elementos. Querendo acabar, digite 99999�); Repeat

Readln( Elemento ); If Elemento <> 99999 Then Begin NroElementos := NroElementos + 1; Total := Total + Elemento; End;

Until Elemento = 99999; Media := Total / NroElementos; Writeln (� A média dos �, NroElementos:4, � que você digitou é �, Media:7:2 );

While Condição Do

Comando; { ou bloco de comandos, usando begin e end } " A diferença entre o While e o Repeat é que no While a condição de parada é no início. Assim, pode ser

que o Comando não seja executada nem uma vez. Exemplo: ler uma lista de valores (e fazer alguma coisa com eles) até encontrar um valor inválido.

Total := 0; NroElementos := 0; Writeln(�Digite os elementos. Querendo acabar, digite 99999�); Readln( Elemento ); While Elemento <> 99999 Do Begin

NroElementos := NroElementos + 1; Total := Total + Elemento; Readln( Elemento ); End;

Media := Total / NroElementos; Writeln (� A média dos �, NroElementos:4, � que você digitou é �, Media:7:2 );

Exercícios para fazer durante a aula (continuação) " Resolva as questões abaixo com a técnica de refinamentos sucessivos. Pense na solução do problema,

descreva e refine até chegar a um programa Pascal. 7. Ler uma taxa de juro Taxa (tipo 1,3% ao mes) e calcular o valor final de um valor aplicado Valor após

Meses meses. 8. Calcule o fatorial de N com While e com Repeat (com For já fizemos) 9. Uma pesquisa sobre dados da população anotou o sexo, a cor dos cabelos e a idade das pessoas. Leia

um conjunto de valores (sexo, idade, cor do cabelo) e determine:

Page 27: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

27

• a maior idade • percentual de homens e mulheres • quanto porcento das mulheres são loiras

10. Fazer um programa que ofereça opções ao usuário (exemplo da calculadora: soma, subtração, multiplicação e divisão, e sair do programa). O usuário escolhe. Se a opção for válida, executa; se for inválida da uma mensagem de erro ao usuário. Fica oferecendo ao usuário e (eventualmente) executando até que este escolha a opção para sair do programa.

11. Faça um programa para calcular as contas de água de uma cidade. O valor da conta para consumo até 500 mil litros é 0.04 * consumo (em mil litros). O valor da conta para consumo maior que 500 mil litros é 0.06 * consumo (em mil litros). Os dados serão lidos da forma abaixo. Rua São Sebastião

• Nro da casa, consumo • Nro da casa, consumo • Nro da casa, consumo

Rua Celso Junqueira

• Nro da casa, consumo • Nro da casa, consumo • Nro da casa, consumo

Etc.

Exercícios de Fixação: já dá para fazer todos os do capítulo 1 do Farrer.

Page 28: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

28

Módulo 3: Estruturas de Dados Texto base para este módulo • Farrer e outros, "Algoritmos Estruturados", seções 2.1, 2.2 e 2.3. • Farrer e outros, "Pascal Estruturado", seções 2.1, 2.2 e 2.3. Tópicos 1. conceito de variáveis estruturadas (variáveis compostas) 2. variáveis compostas homogêneas unidimensionais - vetores 3. variáveis compostas homogêneas bidimensionais - matrizes 4. variáveis compostas homogêneas multidimensionais 5. variáveis compostas heterogêneas - registros 1- conceito de variáveis estruturadas (variáveis compostas) Variável estruturada (ou composta): conjunto de dados referenciável por um mesmo identificador.

Objetivos de aprendizado neste módulo...

• apresentar ao estudante os conceitos de variáveis compostas homogêneas (vetores, matrizes) e heterogêneas (registros)

• praticar o desenvolvimento de algoritmos com a utilização de tais conceitos

60 50 70 12 -1 0 0 10 Vetor V

2 31 14 5 8 77 -6 90

51 2 2 0 Matriz M

Nome Nº P1 P2 Sub média Roberto 6345-2 9 10 -- 9.5

Registro R

Page 29: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

29

Variáveis compostas podem ser • Homogêneas = todos os elementos do conjunto são do mesmo tipo

• Unidimensionais = vetores • Bidimensionais = matrizes • � • multidimensionais = N dimensões

• Heterogêneas (registros) = os elementos do conjunto são de tipos diferentes

2- Variáveis compostas homogêneas unidimensionais - vetores Declaração:

Var identificador : Array [Li..Lf] of tipo ; Onde: • Li = limite inferior (valor inteiro) • Lf = limite superior (valor inteiro) Exemplos: • Var Vetor : Array [ 1 .. 8 ] of Integer; Vetor

60 50 70 12 -1 0 0 10 1 2 3 4 5 6 7 8

• Var Vet1 : Array [ 1 .. 19 ] of Char; Vet1

A D G H + - L N * R Y U I O $ P U Y 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

• Var Vet2 : Array [ 20 .. 25 ] of String [ 5 ] ; Vet2

XICO Ratos ASDFG TT #$%¨* 20 21 22 23 24 25

60 50 70 12 -1 0 0 10 Vetor V

Page 30: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

30

Referência a todo o vetor • Atribuição de um vetor para o outro Exemplo • V1 := V2; { V1 do mesmo tipo que V2, todos os valores de V1 recebem seus equivalentes em V2 } Referência a um único elemento do vetor • Atribuição • Leitura • Uso em expressões Exemplos: • V1 [ 5 ] := 2; { sendo ´V1´ um vetor de inteiros } • V1 [ 5 ] := V1 [ 2 ] + 30; • V1 [ I + 1 ] := V1 [ I ]; • Read ( V1 [ 1 ] ); • Write ( V1 [ I ] ); • For I := 1 to N do

Read ( V1 [ I ] ) ; Exemplo de uso: fazer um programa para ler 50 valores, armazená-los em um vetor, calcular e escrever a média dos valores. Algoritmo 1- declare variáveis Soma, Média, Vetor, I 2- leia os elementos, armazenando-os no vetor 3- calcule a média 4- escreva a média Refinamento 2: leia os elementos For I := 1 to 50 do Begin Write( ´ Entre o valor para Vetor [ ´, I , ´ ] ` ); Readln ( Vetor [ I ] ); End; Refinamento 3: calcule a média Soma := 0; For I := 1 to 50 do Soma := Soma + Vetor [ I ]; Media := Soma / 50; Programa Program Calcula_Media; Var I : integer; Soma, Media : Real; Vetor : Array [ 1 .. 50 ] of Integer; Begin { 2- leitura dos elementos } For I := 1 to 50 do Begin Write( ´ Entre o valor para Vetor [ ´, I , ´ ] ` ); Readln ( Vetor [ I ] );

Page 31: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

31

End; { 3- cálculo da média } Soma := 0; For I := 1 to 50 do Soma := Soma + Vetor [ I ]; Media := Soma / 50; { 4- escrevendo a média } Writeln ( ´A média dos elementos é ´, Média ); Readln; End.

3- Variáveis compostas homogêneas bidimensionais - matrizes Declaração:

Var identificador : Array [Li..Lf , Li, Lf ] of tipo ; Onde: • Li = limite inferior (valor inteiro) • Lf = limite superior (valor inteiro) Exemplos: • Var Matriz : Array [ 1 .. 3, 1 .. 2 ] of Integer; Referência a toda matriz • Atribuição de uma matriz para outra Exemplo • M1 := M2; { M1 do mesmo tipo que M2, todos os valores de M1 recebem seus equivalentes em M2 } Referência a um único elemento da matriz • Atribuição • Leitura • Uso em expressões Exemplo: • V1 [ 1, 2 ] := 2; { sendo ´V1´ um vetor de inteiros } • V1 [ 2, 1 ] := V1 [ 2, 2 ] + 30; • V1 [ I + 1 , j ] := V1 [ I , j ]; • Read ( V1 [ I, j ] ); • Write ( V1 [ I, j ] ); • For I := 1 to N do

For J := 1 to M do Begin

2 31 14 5 8 77 -6 90

51 2 2 0 Matriz M

1 31 14 5 2 77 -6 90 1 2 3

Matriz

Page 32: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

32

Write ( ´ Entre o elemento M [ ´, I, ´ , ´, j, ´ ] ´); Readln ( M [ i, j] ) ; End;

Exemplo de uso: fazer um programa para ler 2 matrizes 5 x 4, calcular e escrever a matriz soma entre elas. Algoritmo 1- declare variáveis Matrizes A, B e Soma, I e j inteiros 2- ler a matriz a 3- ler a matriz b 4- calcule a matriz soma 5- escreva a matriz soma Refinamento 2: leia a matriz A For I := 1 to 5 do

For J := 1 to 4 do Begin Write ( ´ Entre o elemento A [ ´, I, ´ , ´, j, ´ ] ´);

Readln ( A [ i, j] ) ; End;

Refinamento 3: leia a matriz B For I := 1 to 5 do

For J := 1 to 4 do Begin Write ( ´ Entre o elemento B [ ´, I, ´ , ´, j, ´ ] ´);

Readln ( B [ i, j] ) ; End;

Refinamento 4: calcule a matriz soma For I := 1 to 5 do

For J := 1 to 4 do Soma [ I, j ] := A [ I, j ] + B [ I, j ] ;

Refinamento 5: escreva a matriz soma For I := 1 to 5 do begin

For J := 1 to 4 do Write ( Soma [ I, j ] : 6 ); Writeln ( ´´ ) ; { muda de linha} End;

Programa Program Soma_matrizes; Var I, j : integer; A, B, Soma : array [ 1..5, 1..4 ] of integer; Begin { lendo a matriz A } For I := 1 to 5 do

For J := 1 to 4 do Begin Write ( ´ Entre o elemento A [ ´, I, ´ , ´, j, ´ ] ´);

Readln ( A [ i, j] ) ; End;

Page 33: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

33

{ Refinamento 3: leia a matriz B } For I := 1 to 5 do

For J := 1 to 4 do Begin Write ( ´ Entre o elemento B [ ´, I, ´ , ´, j, ´ ] ´);

Readln ( B [ i, j] ) ; End;

{ Refinamento 4: calcule a matriz soma } For I := 1 to 5 do

For J := 1 to 4 do Soma [ I, j ] := A [ I, j ] + B [ I, j ] ;

{ Refinamento 5: escreva a matriz soma } For I := 1 to 5 do begin

For J := 1 to 4 do Write ( Soma [ I, j ] : 6 ); Writeln ( ´´ ) ; { muda de linha} End;

Readln; End. 4- Variáveis compostas homogêneas multidimensionais Declaração:

Var identificador : Array [Li1..Lf1 , Li2 Lf2, � Lin..Lfn ] of tipo ; Onde: • Li1 e Lf1 = limites inferior e superior da primeira dimensão (valors inteiros) • Li2 e Lf2 = limites inferior e superior da segunda dimensão (valors inteiros)

� • Lin e Lfn = limites inferior e superior da n-ésima dimensão (valors inteiros) Exemplo: • Var Matriz : Array [ 1 .. 4, 1 .. 4, 1 .. 4 ] of Integer; { um " cubo" de valores } 5- Variáveis compostas heterogêneas - registros Declaração:

Var identificador : Record

Nome Nº P1 P2 Sub média Roberto 6345-2 9 10 -- 9.5

Registro R

Page 34: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

34

Campo1 : tipo1; Campo2 : tipo2;

�.. CampoN : tipoN;

End; Onde: • Campo1, campo2, � campoN = identificadores; • Tipo1, tipo2, tipoN = tipos associados aos campos. Exemplo: Var Aluno = Record { desenho acima } Nome : string [ 20 ]; Numero : string [ 6 ]; P1 : real; P2 : real; Sub : real ; Media : real; End; Referência a todo o registro • Atribuição de um registro para o outro Exemplo • V1 := V2; { V1 é registro do mesmo tipo que V2}

{ todos os valores de V1 recebem seus equivalentes em V2 } Referência a um único elemento do vetor • Atribuição • Leitura • Uso em expressões Exemplos: • Aluno.nome := ´Roberto´; { sendo Aluno um registro como declarado acima } • Aluno.numero := ´6345-2´; • Aluno.Media := (Aluno.P1 + Aluno.P2)/2; • Readln ( Aluno.p1 ); • Writeln ( Aluno.nome );

Exemplo de uso: fazer um programa para ler os dados de 41 alunos (modelo acima), suas notas, calcular e escrever nome do aluno e sua respectiva média. Use um vetor de registros para armazenar temporariamente os valores. Algoritmo 1- declare variáveis Tabela (vetor de registros), I tipo inteiro 2- leia os dados (nome, nro, notas�), armazenando-os na tabela 3- calcule a média para cada aluno 4- escreva o nome e a média de cada aluno

Page 35: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

35

Programa Program Calcula_Medias; var i : integer; Tabela : Array [1..4] of Record nome : string; numero: string; p1 : real; p2 : real; media : real; end; begin { ref. 2 leitura dos dados } For i := 1 to 4 do begin write( 'nome = '); readln( Tabela[i].nome ); write( 'nro = '); readln ( tabela[i].numero ); write( 'p1 = ' ); readln ( Tabela[i].p1 ); write( 'p2 = ' ); readln ( Tabela[i].p2 ); writeln; end; { ref. 3 calculo das médias } For i := 1 to 4 do Tabela[ i ].media := (tabela[i].p1 + tabela[i].p2)/2; { ref. 4 escrever nomes e m‚dias } writeln(' nome medias '); For i := 1 to 4 do Writeln( Tabela[i].nome:10, tabela[i].media:10:2); writeln; Writeln( 'pressione enter para continuar '); readln; end. Exercícios de fixação 1- Ler um conjunto de 50 inteiros e escreve-los na ordem inversa à ordem de leitura. 2- Ler 30 elementos inteiros, colocar em um vetor. Depois, calcule e escreva o maior elemento, a soma de

todos e a média. 3- Ler 2 vetores a e b, de inteiros, montar o vetor soma = a + b. 4- Ler dois vetores a e b, de char, montar um vetor que intercale os elementos de a (todos os ímpares) e b

(os pares). 5- Ler um vetor e, em seguida, ordenar os valores (monte um novo vetor), escreva o resultado: ambos os

vetores, lado a lado. 6- Multiplicação de matrizes: leia a e b (4x4), crie C = A*B, escreva C. Nas questões abaixo, preocupe-se, antes de começar a fazer o algoritmo, em definir a estrutura de dados mais adequada para resolver o problema. 7- Gabarito vestibular. Faça um programa para corrigir provas de vestibular. Primeiramente leia (e

armazene temporariamente em um vetor) um gabarito (alternativas a-e, 50 questões). Depois leia um conjunto indeterminado de provas, calcule e escreva o número de acertos para cada uma delas. Não é necessário armazenar os valores de cada prova. Ao final da correção de cada prova, pergunte ao usuário se existem mais provas a serem corrigidas. Se não existirem mais, encerre o programa.

8- Loteria esportiva. Faça um programa para ler um "gabarito" com os resultados dos jogos da loteria esportiva (coluna 1, coluna2, coluna do meio, 13 jogos), armazenando em um vetor. Depois leia um

Page 36: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

36

conjunto indeterminado de jogos e verifique se ganhou o prêmio. Ao final da verificação, pergunte se o usuário quer entrar mais jogos. Ao final do programa, informe quantos ganharam o prêmio.

9- Estoque de supermercado. Faça um programa para controlar o estoque de um supermercado. Para cada produto armazene: nome, estoque, preço, e estoque mínimo. Leia dados para o estoque e guarde em um vetor. Depois percorra o vetor e escreva o nome e as demais informações de todos os produtos que estão com estoque abaixo do estoque mínimo.

10- Folha de pagamentos. Monte um vetor para armazenar o nome, cargo, salário bruto de cada funcionário de uma empresa. Depois execute a folha de pagamentos da seguinte forma: Para cada funcionário, imprima nome, salário bruto, salário líquido (para salários menores que 1000 o salário líquido é o próprio salário bruto; para salários maiores ou iguais a 1000 o salário líquido é cerca de 87% do salário bruto).

Módulo 4: Modularização Texto base para este módulo • Farrer e outros, "Algoritmos Estruturados", capítulo 3. • Farrer e outros, "Pascal Estruturado", capítulo 3, e capítulo 4 (sobre declaração de tipos). Tópicos 1. Conceito de modularização 2. Subprogramas em Pascal

• procedimentos • funções • Abrindo um parêntesis: declaração de tipos

3. exercícios 1- Conceito de modularização O que é um ´sistema modular´? O que é um aparelho de som modular? Conceito de módulo: porção do sistema com função bem definida. Conceito de módulo (no contexto de programação): trecho de um programa com função bem definida. Na fase de projeto do programa (refinamentos sucessivos, algoritmo), deve-se buscar o projeto de um programa modular.

Objetivos de aprendizado neste módulo...

• apresentar ao estudante o conceito de subprograma e considerações sobre modularização

• praticar o desenvolvimento de algoritmos com a utilização de tais conceitos e considerações.

Page 37: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

37

Visão de um programa na fase de projeto: programa principal e vários módulos. Program Principal; Begin A; B; C; End. Procedure A; { refinamento A? } Begin A1; A2; End; 2- Subprogramas em Pascal Subprograma • Trecho de programa com função bem definida • Variáveis próprias • Parâmetros de entrada e saída (para comunicação com o o programa principal e demais subprogramas) • Acionado pelo nome, como se fosse um comando da linguagem. Tipos • Procedimentos (procedure) • Funções (function): tem pelo menos um resultado Sintaxe de um programa com subprogramas� Program identificador; Declaração de variáveis Declaração de subprogramas Begin Comandos End. 2.1- Procedimentos sintaxe: Procedure identificador [ (declaração dos parâmetros de entrada e saída) ] ; Declaração das variáveis, constantes e tiops locais ao subprograma em questão Declaração de subprogramas locais ao subprograma em questão Begin Comandos End;

Programa Principal

A B C

A1 A2

Page 38: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

38

Exemplo: Program troca_troca;

Var a, b : integer; Procedure Troca (var A, B : integer ) ; Var aux : integer;

Begin Aux := a; A := b; B := aux; End;

Begin { programa principal } Read( a ); Read( b ); Troca( a, b ); Write( a ); Write( b ); End. Parâmetros • Entrada • Entrada e saída (são precedidos por ´var´ Variáveis com nomes iguais • Dentro de subprogramas, a referência prioritária é a uma variável local Variáveis locais e parâmetros • Conhecidos somente dentro do subprograma no qual foram declarados 2.2- Funções sintaxe: Function identificador [ (declaração dos parâmetros de entrada e saída) ] : tipo ; Declaração das variáveis, constantes e tiops locais ao subprograma em questão Declaração de subprogramas locais ao subprograma em questão Begin Comandos End; Exemplo: Program Calcula_Media; Var a, b : integer; Var med: real; Function Media ( a, b : integer ) : real; Begin Media := (a + B)/2; End; Begin Readln( a ); Readln( b ); Med := media( a, b );

Page 39: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

39

Writeln( med ); End. 2.3- Abrindo um parêntesis: declaração de tipos Sintaxe Type identificador = descrição de tipo válida em pascal ; Exemplo: � Type matriz = array[1..3, 1..3] of integer; Var a, b : matriz; � 3- Exercícios Refazer os seguintes exercícios, agora usando subprogramas para tornar o programa mais modular. 1. Fazer um programa que leia dois valores A e B, calcule e escreva a sua média aritmética.

Subprograma para calcular a média. 2. Fazer um programa que leia dois valores A e B, determine e escreva o maior entre eles. Subprograma

para calcular o maior. 3. Escrever um procedimento para leitura de um valor inteiro entre 1 e 100. Se o usuário fornecer um valor

for a desta faixa, deve-se repetir o processo até que seja fornecido um valor válido. 4. A conversão de graus Farenheit para centígrados segue a fórmula C = 5/9 ( F � 32 ). Fazer um

programa para gerar uma tabela mostrando temperaturas em F e em C, variando F de 1 em 1 grau de 40 até 160 F. Use uma função para fazer a conversão.

5. Leia 50 valores do tipo (nome, Notap1, Notap2, Nota_trabalhos, Percentual_de_presença), e determine quantos alunos foram aprovados e quantos foram reprovados. Para aprovação é preciso ter média maior ou igual a 6 e 75% de presença. A média é calculada pela expressão: Media = (P1 + P2) * 70% + Nota1Trabalhos * 30%. Use uma função para calcular a média.

6. Programa que le dois vetores A e B e apresenta o vetor Soma. Use subprogramas para ler os vetores e para somar os vetores.

7. Fazer programa para ler duas matrizes e apresentar a soma. Subprogramas para ler, somar e escrever as matrizes.

8. Fazer procedimento para multiplicar 2 matrizes A (MxN) e B (NxK) e retornar a matriz resultado (MxK). Obs: A (M x N) * B (N x K) = Mult (M x K) For I := 1 to M do For J := 1 to K do Mult (I, j) := ∑ A ( I, x) * B(x,j) { x variando de 1 a N }

Page 40: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

40

Módulo 5: Arquivos Texto base para este módulo • Farrer e outros, "Algoritmos Estruturados", seção 2.4. • Farrer e outros, "Pascal Estruturado", seção 2.4. Tópicos 1. conceito de arquivo 2. arquivos com tiipo - operações básicas 3. visão geral de arquivos sequenciais 4. visão geral de arquivo texto 5. exercícios 6. comandos adicionais 1- Conceito de Arquivo Nos programas que fizemos até o moment, se desligarmos o computador, todos os dados armazenados são perdidos. Arquivo: depósito de dados em memória permanente (disco rígido, disquete, etc.) Tipos • Arquivo com tipo: armazena dados de um único tipo (inteiros, vetores, registros, etc.), sequencialmente • Arquivo texto : armazena textos (como em um editor de texto) Exemplos

Objetivos de aprendizado neste módulo...

• apresentar ao estudante o conceito e as operações básicoas sobre arquivos

• praticar o desenvolvimento de algoritmos com a utilização de tais conceitos e comandos.

Page 41: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

41

Esquema de um arquivo de inteiros Esquema de um arquivo do tipo Aluno (registro)

0 5 Nome Nro P1 P2 media 1 4 0 José 34344 10 5 7 2 54 1 Xico 23 9 5 8 3 10 2 Tiago 2324 8 6 9 4 6 3 Mané 234 9 7 8 5 0 4 Maria 232 8 8 7 6 12 5 Julia 23123 0 6 8

2- Arquivos com tipo Operações sobre arquivos • Declarar • Associar com um nome físico • Criar • Abrir • Fechar • Escrever • Ler Declarar Var identificador : file of tipo; Exemplo Var F : File of integer; Associar com um nome físico� Assign( identificador, nome físico); Exemplos Assign( F, ´a:dados.dat´); Assign( F, ´c:\progs\ic\quinto.xxx´); Criarum arquivo vazio (exemplo) Rewrite( F ); Abrir um arquivo já existente (exemplo) Reset( F ); Fechar um arquivo (exemplo) Close( F ); Ler um registro de um arquivo (exemplo) Read( F, I ); { sendo F um arquivo de inteiros e I variável tipo inteiro } Escrever um registro em um arquivo (exemplo) Write( F, I ); { sendo F um arquivo de inteiros e I variável tipo inteiro } Exemplo de programa: ler e armazenar uma tabela de Alunos, notas e médias Program Alunos; Type Tabela = array[1..41] of record Nome : tring[10];

Page 42: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

42

Numero: string[5]; P1:real; P2:real; Media: real; End; Var T : Tabela; Var Arquivo : File of Tabela; Var I : integer; Begin For I := 1 to 41 do Readln( T.nome, T.numero, T.p1, T.p2 ); Assign( arquivo, ´c:\progs\myfile.dat´ ); Rewrite( arquivo ); Write( arquivo, T ); Close( arquivo ); End.

1 Nome Nro P1 P2 media 2 José 34344 10 5 3 Xico 23 9 5 4 Tiago 2324 8 6

� Mané 234 9 7 40 Maria 232 8 8 41 Julia 23123 0 6

3- Visão geral de arquivos seqüenciais Arquivo do tipo Aluno = registro (nome, numero, p1, p2, media) Nome Nro P1 P2 media

0 José 34344 10 5 7 1 Xico 23 9 5 8 2 Tiago 2324 8 6 9 3 Mané 234 9 7 8 4 Maria 232 8 8 7 5 Julia 23123 0 6 8

Operações • EOF ( F ); { end of file? Função de resultado boolean } • Filesize( F ); { retorna o tamanho do arquivo, em número de registros } • Filepos( F ); { retorna a posição corrente para leitura ou escrita } • Seek( F, posição ); { posiciona o indicador de posição corrente na posição indicada } Exemplo1: cópia de arquivos Program Copia; Type aluno : record Nome : tring[10]; Numero : string[5]; P1, p2, media : real; End;

Page 43: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

43

Var A, B : file of Aluno; Aux : aluno; Begin Assing( a, ´origem.pas´); Assign( b, ´destino.pas´); Reset( a ); Rewrite( b ); Read( a, aux); While not eof( a ) do Begin Write( b, aux); Read( a, aux ); End; Close( a ); Close( b ); End. Outros exemplos� Altera a nota de um aluno� Reset( b ); Seek( b, 4 ); Read( b, aux ); Aux.p1 := 10; Seek( b, 4 ); Write( b, aux ); Close( b ); Inclui um novo registro no final do arquivo� Reset( b ); Readln( aux.nome, aux.numero, aux.p1, aux.p2 ); Seek( b, filesize( b ) ); Write( b, aux ); Close( b ); 4- Visão geral de arquivo texto Program Exemplo_de_arquivo_texto; Var f : text; Linha : string [ 80 ] ; Begin Assign ( F, ´texto.txt´); Rewrite( F ); Linha := ´xxx´; While linha <> ´´ do Begin Readln( linha ); If linha <> ´´

Then Writeln ( F, Linha ); End;

Close( F ); End.

Page 44: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

44

5- Exercícios 1. Listar no vídeo um arquivo existente, com registros do tipo inteiro. 2. Dado um arquivo existente, com registros com os dados: nome, sexo, endereço, idade� criar 2

arquivos, um só com os homens e outro só com as mulheres. 3. Criar um arquivo de alunos (nome, nro, p1, p2, media), armazenar elementos (quantos o usuário quiser)

. Abrir o arquivo, a seguir, a atualizá-lo com as médias dos alunos. A seguir, liste nome e média de cada aluno.

6- Comandos adicionais Comando Case (seleção múltipla) Case <variável de tipo enumerável. Of Valor1 : comando; Valor2: comando; � Valorn : comando; [ else bloco de comandos ] end; Exemplo Program Seleciona_opcao; Uses crt; Var opcao : integer; Fim : boolean; Begin Fim := false; Repeat

Clrscr; Writeln (´Opções 1=incluir, 2=excluir, 3=alterar, 4=terminar´); Readln( opcao ); Case Opcao of 1 : incluir; 2: excluir; 3: alterar; 4: fim := true; else writeln (´opção inválida´); end;

until fim; end.

Page 45: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

45

Trabalhos Os trabalhos a seguir serão considerados na avaliação do aluno, conforme o descrito no plano de ensino. Para melhor cumprirem seus objetivos os trabalhos devem ser desenvolvidos no momento certo. O calendário do curso estabelece uma data máxima para entrega de cada trabalho.

O resultado do trabalho é um relatório contendo: a (1) listagem do programa, (2) cópia da tela de execução (demonstrando que o programa funciona) e (3) algoritmo. Coloque na capa ou primeira folha do relatório, em destaque, o nome do aluno, número, nome da disciplina, turma e período (1º 2002, 2º 2002), bem como o número e o título do trabalho.

Não é necessário entregar a versão digital (em disquete, CD), mas guarde

uma versão digital de cada um de seus trabalhos até o final do curso. O professor poderá solicitar, em algum momento até o final do curso, a apresentação do trabalho em uma entrevista.

Os trabalhos devem ser compilados por uma versão qualquer do Turbo Pascal

da Borland inc. Na home page do curso existe uma versão para download. Possíveis Problemas nos Trabalhos... 1. Trabalho incompleto ou diferente do especificado. 2. Erro nos algoritmos. 3. Execução inexistente ou insuficiente,. 4. Algoritmo inexistente ou insuficiente 5. Usar nomes não significativos para variáveis, tipos ou subprogramas. 6. Ausência de identação ou comentários implicando em complexidade de leitura. 7. Não entregar no prazo. 8. Trabalhos notadamente duplicados.

Primeiro Trabalho: Imposto de Renda. Alvo de aprendizado: estrutura básica de um programa, estrutura condicional, expressões aritméticas, variáveis, tipos, comandos de entrada e saída. Fazer um programa que leia o salário bruto de um trabalhador, calcule e escreva o seu salário líquido e o valor do desconto. O desconto refere-se exclusivamente ao Imposto de Renda Retudo na Fonte (IRRF). O cálculo do IRRF ocorre da seguinte forma: salários brutos até R$900 são isentos (desconto = 0). O IRRF para salários maiores que R$900 e menores ou iguais a R$1800 é de 15% do que exceder a R$900 (o que equivale a 15% do salário

Page 46: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

46

bruto menos R$135,00). Para salários maiores que R$1800 o IRRF é de 27,5% menos 247,50 (R$135 + R$112,5). A tabela abaixo resume a forma de cálculo do IRRF.

Tabela do IRRF (até 2002)

Faixa salarial (R$) alíquota Menos (R$) 0,01 a 900,00 isento 900,01 a 1800,00 15% 135,00 1800,01 ou maior 27,5% 247,00

Segundo Trabalho: Juro Composto. Alvo de aprendizado: estruturas de repetição. Enunciado: Fazer um programa que leia uma taxa de juros mensal, um valor inicial, e o número de meses. Calcule e escreva o valor final, calculado pela aplicação da taxa de juros mês a mês. Use uma estrutura de repetição (REPEAT ou WHILE. Não use o comando FOR) para efetuar os cálculos.

Terceiro Trabalho: Matrizes. Alvo de aprendizado: vetores e matrizes. Enunciado: Fazer um programa para ler duas matrizes A e B, quadradas de ordem N, e apresentar de forma organizada (como no desenho de uma matriz) as matrizes A, B , Soma e Mult (multiplicação). • N deve ser definido como constante. Use N pequeno - 3, 4 - para facilitar a

formatação. • Preocupe-se com a formatação da entrada e saída de dados, e com a validação

dos dados fornecidos pelo usuário.

Quarto Trabalho: Controle Acadêmico. Alvo de aprendizado: registros e subprogramas. Enunciado: Fazer um programa para ler os nomes e as notas de N alunos (N como constante, como 5, 10), armazenar em um vetor, calcular as médias de cada aluno e então escrever de forma organizada (uma lista) os nomes, notas e médias de cada um. • Deve ser definido o tipo Aluno, um registro contendo nome, número, e as notas

p1, p2, sub e trabalhos, e também a média final. O vetor, no caso, será um vetor de registros do tipo aluno.

• A média deve ser calculada por uma função chamada MediaDoAluno. Essa função calcula a média de 1 (um) aluno. As informações necessárias (as notas do aluno) devem ser passadas como parâmetro.

Page 47: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

47

• Deve-se primeiramente ler todos os dados, só então efetuar o cálculo de todas as médias, e só então escrever tudo.

• Preocupe-se com a validação da entrada de dados, e com a formatação da saída.

Quinto Trabalho: Controle Acadêmico com Arquivos. Alvo de aprendizado: arquivos. Enunciado: Fazer um programa para cadastro e gerenciamento do aproveitamento de alunos em um determinado curso. • Definir um registro tipo aluno, com nome, número, notas individuais e média. • Definir um arquivo para armazenar registros do tipo aluno • Fazer um programa que forneça ao seu usuário opções para

1. incluir aluno, 2. excluir aluno, 3. alterar as notas de um aluno, 4. (re)calcular as médias. 5. mostrar a lista de nomes, notas e médias e 6. sair do programa

• Preocupe-se com a modularização do programa, definindo subprogramas quando conveniente.

• Preocupe-se com a validação da entrada de dados, e com a formatação da saída.

Page 48: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

48

Provas de Anos Anteriores

Fontes de consulta para este módulo: Provas aplicadas nos cursos de Introdução à Computação, na UFSCar, em anos

anteriores 1. O que é um compilador? 2. Faça um programa que calcule a área de uma região retangular a partir de sua

base e altura. Leia a base e a altura, calcule o valor da área e escreva o resultado. Método de cálculo: Área = base * altura.

3. Faça um programa que leia o valor do salário bruto de um trabalhador, calcule

e escreva o salário líquido. O salário líquido é calculado da forma abaixo: • liquido = bruto - descontos • desconto = 10% do bruto para salários bruto menor que R$ 800,00 • desconto = 25% do bruto para salários maiores ou iguais a R$ 800,00

4. Faça um programa que escreva os números de 100 a 500 seguidos de seu

quadrado. 5. No contexto de programação, o que é e para que serve um arquivo de dados? 6. Seja um arquivo de números inteiros de tamanho desconhecido, de nome

dados.dat. Faça um programa que encontre e escreva o maior número do arquivo. 7. Faça um programa que leia duas matrizes A e B, ambas N x N, e escreva a

matriz C onde C = A + B. Considere prontos (e use!) os seguintes subprogramas:

• procedure Le_matriz (var M : Matriz ); • procedure Escreve_Matriz( M : Matriz );

Objetivos destas informações

• dar ao estudante uma noção do tipo de questão que será utilizada para avaliação de seu aprendizado

Page 49: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

49

onde o tipo Matriz é definido da forma: • const N = <não interessa>; • type Matriz = array[1..n] of real;

8. Fazer uma função para calcular a média de um aluno a partir das notas de suas

2 provas normais e 1 substitutiva. Deve-se calcular a média aritmética das duas notas maiores. Segue a definição da função: • function Media( p1, p2, sub : real ) : real;

Page 50: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

50

REFERÊNCIAS BIBLIOGRÁFICAS

• Abib, S.; Material do curso de introdução à computação.

• Catto, A. J.; e outros; "Uma Introdução à Programação Estruturada". Texto experimental editado em data desconhecida.

• Farrer, H.; "Algoritmos Estruturados". Editora Guanabara, Rio de Janeiro, 1989.

• Farrer, H.; "Pascal Estruturado". Editora Guanabara, Rio de Janeiro, 1985.

Page 51: UTILIZADO NA UNIVERSIDADE F S CARLOS - dc.ufscar.brferrari/ic/guia.pdf · 6 Módulo 1: Algoritmos e Programas Texto base para este módulo: Farrer e outros, "Algoritmos Estruturados",

51

X

X

O

X

X O X

X

O

X

O X

X X

O

XO

X XO X XO

XX O

X X

O

getnode( P

)

info( P )

<-- X

next( P )

<-- P

L<--P