Você está na página 1de 37

___________________________________________________________________________________________

ALGORITMOS EM DELPHI E C++ ___________________________________________________________________________________________

1. CONCEITOS BÁSICOS
1.1. Visão Geral de um Computador

 Hardware  Software de controle → Sistema operaciona l  Computador    Software Aplicativo Linguagem de programaçã o   
Linguagem de máquina  L.P. Linguagem de baixo nivel → Assembly Linguagens de alto nivel → Pascal, Delphi, Fortran, Visual Basic, C, C + +, Java, etc 
1.2. Termos Freqüentemente Usados
1.2.1. Algoritmo Descrição passo a passo do processo a ser utilizado na solução de um problema. Ex. 1: Calcular a área de um triângulo Comandos: Ler, Calcular, Escrever Ler o valor da base Ler o valor da altura Calcular a área Escrever o resultado Ex. 2: Robô vai comprar pão Comandos: ir, pegar e entregar Pegar o dinheiro Ir a padaria Entregar o dinheiro Pegar o pão Ir para casa Entregar o pão

1.2.2. Programa Codificação de um algoritmo em uma linguagem de programação. Linguagem de Programação Programa Executável (Aplicativo)

Problema → Algoritmo → Programa Fonte →

→ Solução

1.2.3. Sintaxe Conjunto de regras que constituem a linguagem de programação, palavras utilizadas, operadores, etc. 1.2.4. Fluxo de Informações Seqüência em que as instruções de um algoritmo são realizadas para resolver um problema. Ler as informações ↓ Entrada de dados → Processar as informações → Mostrar os resultados ↓ Saída de dados

1

1.3. Desenvolvimento de Algoritmos
É necessário conhecer o que o computador dispõe para a formulação de um algoritmo.

1.3.1. Constantes São valores específicos que não se modificam durante a execução de um algoritmo. a) Constantes inteiras: Ex.: b) Constantes reais: Ex.: 0 32 -651 SEM Expoente 100.0 0.45 -0.357

COM Expoente 1.0 E +2 4.5 E -1 -357.0 E -3

c) Constantes caracteres: Ex.: ‘J’ ‘1’ ‘?’

d) Constantes literais (strings): Utiliza-se aspas simples em Delphi e aspas dupla em C++. Ex.: ‘José’ ‘Uma frase qualquer’ ‘570’

e) Constantes lógicas: Ex.: Verdadeiro (1) Falso (0)

1.3.2. Variáveis São valores armazenados na memória do computador que podem ser alterados durante a execução do algoritmo. A memória do computador pode ser vista como um armário com diversas gavetas, onde as informações são guardadas. Cada gaveta possui um nome que identifica a informação armazenada, chamada de variável.

As variáveis armazenadas na memória podem ser dos seguintes tipos: a) Inteiro: b) Real: c) Caractere: d) String: e) Lógico: Notação: Algoritmo Delphi C++ Real Real double Inteiro Integer int Caractere Char char String String char[] Lógico Boolean Verdadeiro True 1 ( ≠ 0) Falso False 0
2

qualquer número ∈ Z.

Ex.: -3; 5; 1000; 1; 0 Ex.: 1.5; 3.2; -3.1415; 2.0 Ex.: ‘*’; ‘-’; ‘A’ ... ‘Z’; ‘a’ ... ‘z’; ‘0’ ... ‘9’ Ex.: ‘vasco’; ‘flamengo’ ; Ex.: True ( 1 ), False ( 0 )

qualquer número ∈ R. qualquer símbolo do teclado. conjunto de caracteres. verdadeiro ou falso.

1.3.3. Operadores São símbolos representando funções que podem ser realizadas com constantes e variáveis. a) Operadores Aritméticos: implementam as funções aritméticas. Delphi + − * / div mod C++ + − * / / % ++ −− Função Adição Subtração Multiplicação Divisão real Divisão inteira Resto da divisão inteira Incremento Decremento Delphi R, C, S R R R C++ I, R, C I, R, C I, R, C R I, C I, C I, R, C I, R, C

I, I, I, I, I I

Exemplos em Delphi Exemplos corretos: 2+3=5 2.3 + 3.4 = 5.7 ‘2’ + ‘3’ = ‘23’ ‘A’ + ‘2’ = ‘A2’ ‘bota’ + ‘fogo’ = ‘botafogo’ 3.0 + 2 = 5.0 ‘ABC’ + ‘D’ = ‘ABCD’ 2 - 3 = -1 5.2 - 1.2 = 4.0 3 * 4 = 12 4 / 3 = 1.333 7 mod 2 = 1 7 div 2 = 3 Erros: ‘botafogo’ - ‘fogo’ ‘12’ - ‘1’ ‘1’ * ‘3’ ‘VASCO’ * 5 ‘PELE’ / ‘XUXA’ 5.2 mod 2 10 div 3.5 ‘RIO’ + 2004 Resumo: I+I I+R R+R C+C C+S S+S I-I I-R R-R I*I I*R R*R I/I I/R R/R I mod I I div I = = = = = = = = = = = = = = = = = I R R S S S I R R I R R R R R I I

Exemplos em C++ Exemplos corretos: 2+3=5 2.3 + 3.4 = 5.7 ‘2’ + ‘3’ = 101 ‘A’ + ‘2’ = 115 3.0 + 2 = 5.0 2 - 3 = -1 5.2 - 1.2 = 4.0 3 * 4 = 12 4/3=1 7%2=1 7/2=3 8++ = 9 8-- = 7 Erros: “bota” + “fogo” = “botafogo” “botafogo” – “fogo” “12” - ‘1’ “ABC” + ‘D’ = “ÁBCD” “VASCO” * 5 “PELE” / “XUXA” 5.2 % 2 “RIO” + 2004 Resumo: I+I I+R R+R C+C I-I I-R R-R I*I I*R R*R I/I I/R R/R I%I = = = = = = = = = = = = = = I R R I I R R I R R I R R I

3

C R. C R.5 > 4 6.5 < ‘macaco’ 3 >= ‘a’ 4 = ‘abc’ c) Operadores Lógicos: implementam as funções lógicas básicas. C Obs.2 <= 8. o resultado por operadores relacionais é sempre um valor lógico Verdadeiro ou Falso.2 <= 8. R. Obs. Em C++.5 ‘a’ > ‘b’ ‘A’ < ‘a’ ‘macaco’ > ‘banana’ ‘macaco’ > ‘macaca’ ‘M’ > ‘MACACO’ ‘AB’ > ‘A’ Exemplos em C++ Exemplos corretos: 2 == 3 2 != 3 3.5 < “macaco” 4 == “abc” “macaco” > “banana” “macaco” > “macaca” ‘M’ > “MACACO” “AB” > ‘A’ F V F V F V V V F V Erros: 1 = ‘1’ 3. Delphi = <> >= <= > < C++ == != >= <= > < Função Igual Diferente Maior ou igual Menor ou igual Maior Menor Delphi Todos Todos Todos Todos Todos Todos C++ R. Delphi and or not C++ && || ! Função E (Conjunção) OU (Disjunção) NÃO (Negação) Delphi Lógico Lógico Lógico C++ I.5 > 4 6. C I.5 ‘a’ > ‘b’ ‘A’ < ‘a’ 1 == ‘1’ 3 >= ‘a’ 0 1 0 1 0 1 0 0 Erros: 3. o resultado é um valor inteiro 0 ou 1. R. I. C I. R. Em C++. C R.b) Operadores Relacionais: são usados para comparação entre tipos compatíveis de dados. I. o resultado é um valor inteiro 0 ou 1. C R. C I. C R. I. Exemplos em Delphi Exemplos corretos: 2=3 2 <> 3 3.: Em Delphi. o resultado por operadores relacionais é sempre um valor lógico Verdadeiro ou Falso. I. CONJUNÇÃO .: Em Delphi.Operador E X F F V V Y F V F V XEY F F F V 4 . I.

b) São resolvidas primeiramente as operações entre parênteses. relacionais e lógicas são executadas obedecendo a uma certa ordem de prioridade.DISJUNÇÃO .4.1. Delphi As operações aritméticas.4. partindo do mais interno para o mais externo. Prioridade nas Operações 1. conforme a seguir: a) As operações começam a ser executadas da esquerda para a direita.Operador OU X F F V V NEGAÇÃO . c) Graus de prioridade dos operadores Operadores Aritméticos e Lógicos Negação (Lógico) Multiplicação e divisão Quociente da divisão inteira e resto da divisão inteira Conjunção (Lógico) Adição e Subtração Disjunção (Lógico) Operadores Relacionais Todos no mesmo nível ( not ) (* /) ( div ) ( mod ) ( and ) (+ -) ( or ) 5 .Operador NÃO X F V Exemplos em Delphi (3 > 2) and (‘B’ < ‘C’) (5.3 < 3) or (‘eu’ > ‘EU’) (2 <> 2) or (20 < 10) (2 > 3) or (10 < 20) True or (10 > 20) Not (10 > 20) Not (‘macaco’ > ‘banana’) Not (True) Exemplos em C++ 3 > 2 && ‘B’ < ‘C’ 2 != 2 || 20 < 10 2 > 3 || 10 < 20 1 || 10 > 20 ! (10 > 20) !1 1 0 1 1 1 0 V V F V V V F F NÃO X V F Y F V F V X OU Y F V V V 1.

Ex. Diferente Operadores Lógicos Conjunção (Lógico) Disjunção (Lógico) (!) (* /%) (+ -) (< <= > >=) (== !=) ( && ) ( || ) 1. ou seja. partindo do mais interno para o mais externo. Menor Igual. : Inteiro. C++ As operações aritméticas.6.1. há diferença entre variáveis com identificadores em maiúsculo e em minúsculo.6.2. Maior Igual Igual. que informa o tipo de valor armazenado na memória. : Lógico. relacionais e lógicas são executadas obedecendo a uma certa ordem de prioridade. as variáveis e os comandos da linguagem são sensíveis ao caso. Declaração de Variáveis No início dos algoritmos (e dos programas). Comando de Atribuição É usado para dar um valor a uma variável. Cada variável deve possuir um nome (chamado de identificador) e um tipo de dado. area nome teste i.4. é necessário informar ao computador as variáveis que serão utilizadas no decorrer do algoritmo. : String. conforme a seguir: a) As operações começam a ser executadas da esquerda para a direita. Maior.5. Comando de Atribuição Algoritmo Delphi C++ Símbolo ← := = 6 . Comandos Básicos 1. j : Real. b) São resolvidas primeiramente as operações entre parênteses. altura.1. Regras básicas para formação de nomes de variáveis: Iniciar-se por uma letra ou pelo caractere underscore ‘_’ Ter um tamanho definido e constante Conter letras ou algarismos Não conter espaços em branco Obs: Em C++. 1.: Declaração de variáveis base. c) Graus de prioridade dos operadores Operadores Aritméticos e Lógicos Negação (Lógico) Multiplicação e divisão Adição e Subtração Operadores Relacionais Menor. A operação de informar as variáveis do algoritmo é chamada de declaração de variáveis.

0. Símbolo Escreva(Variável ou Texto) Writeln(Variavel ou Texto) cout << Variavel ou Texto 1. de Y // U recebe o valor da raiz quadrada de P // S recebe a string Brasil // A recebe o espaço em branco // K recebe o valor lógico F 1.: Leia (base).7.6.2.3. : Caractere. // X recebe o valor zero inteiro // Y recebe o valor de x mais um // P recebe o valor um real // Q recebe o valor.Ex. Escreva (area). Comando de Saída de Dados É usado para mostrar na tela um texto (constante string) ou o valor de uma variável. Q. Y A P. P ← 1. K ← Falso. inteiro. U K S X ← 0. U ← raiz(P). : Lógico. Delphi Comentário de linha: // Comentário de bloco: { } C++ Comentário de linha: // Comentário de bloco: /* */ 7 .: Declaração de variáveis X. Símbolo Leia(Variavel) Readln(Variavel) cin >> Variavel 1. Q ← Y. : Real.6. A ← ‘ ‘.: Escreva (‘Eu sou eu. Y ← X + 1. Saída de Dados Algoritmo Delphi C++ Ex. Comando de Entrada de Dados É usado para ler um valor do teclado e armazenar em uma variável. : Inteiro. : String. Entrada de Dados Algoritmo Delphi C++ Ex. jacaré é um bicho’). S ← ‘Brasil’. Leia (altura). Comentários São informações acrescentadas a um algoritmo com o objetivo de identificá-lo ou de esclarecer alguns de seus trechos.

8. Area ← base * altura / 2. area).1. area:0:2). var base. begin writeln('Digite a base'). end. Escreva (‘Digite o valor da altura’).1. writeln('Area = '. Escreva (‘A area = ‘ . area : Real. altura. area : real. cin >> base. Início Escreva (‘Digite o valor da base’). } 8 .h> #include <iostream. cout << "Digite a altura \n". dados a base e a altura. getch(). cin >> altura. area = base * altura / 2. readln(altura). area := base * altura / 2. writeln('Digite a altura'). Exemplos de Algoritmos 1.h> // getch #pragma argsused double base. readln(base). Fim. {$APPTYPE CONSOLE} uses SysUtils. cout << "Area = " << area. Algoritmo 01 Declaração de variáveis base. readln. Delphi program Delphi_Alg01. altura. int main(int argc.8. altura. Algoritmo para calcular a área de um triângulo. area. Leia (base). cout #include <conio. // Três variáveis do tipo real // Lendo o valor da base // Lendo o valor da altura // Calculando a área // Mostrando o resultado C++ #pragma hdrstop #include <condefs. char **argv) { cout << "Digite a base \n". return 0. Leia (altura).h> // cin.

m = (n1 + n2) / 2. int main(int argc. n2. cout << "Digite a nota 2 \n". Escreva (‘Media = ‘.h> #include <iostream.1. // Três variáveis do tipo real // Lendo a primeira nota // Lendo a segunda nota // Calculando a média // Mostrando o resultado C++ #pragma hdrstop #include <condefs. char **argv) { cout << "Digite a nota 1 \n".h> // cin. Início Escreva (‘Digite a nota 1’). cin >> n1. cin >> n2. n2. m. Leia (n1). Delphi program Delphi_Alg02. m := (n1 + n2) / 2.2. Algoritmo 02 Declaração de variáveis n1. writeln('Digite a nota 2'). m : real. readln. m ← (n1 + n2) / 2. } 9 . getch(). readln(n1). Algoritmo para calcular a média aritmética de duas notas. return 0. m:0:2). cout << "Media = " << m. n2. end.8. Fim. var n1. cout #include <conio. Escreva (‘Digite a nota 2’). begin writeln('Digite a nota 1'). Leia (n2). readln(n2).h> // getch #pragma argsused double n1. m : Real. writeln('Media = '. {$APPTYPE CONSOLE} uses SysUtils. m).

Exercícios 1. Mostrar o resultado das operações abaixo. Dados: o número de anos que ele fuma.0 < 3)) (2 > 3) ou ( 3 > 2) 2. o nº de cigarros fumados por dia e o preço de uma carteira.3 >= 5 5 = 5.‘x’ ‘11’ . Dados: base e altura. Dados: notas dos 3 primeiros bimestres. caractere.1. Indicar se a operação pode ou não ser executada e. Dados: notas dos 4 bimestres. inteiro.9. o tipo do resultado (real. 10 .0 < 3) Não ( Não (10. c) Calcular a nota necessária para passar por média no 4º bimestre. a) b) c) d) e) f) g) h) i) j) k) l) m) n) o) p) q) r) 5*3 5 * 3. também. string ou lógico). Implementar algoritmos para a) Calcular a área e o perímetro de um retângulo. b) Calcular a média final de uma disciplina. d) Calcular a quantidade de dinheiro gasta por um fumante.0 / 2 2/2 ‘Fla’ + ‘mengo’ ‘x’ + ‘x’ ‘xx’ .0 2.1 5.0 2 > ‘2’ ‘A’ > ‘2’ ‘CEFET’ > ‘UFRN’ ‘CEFET’ <= ‘E’ (‘E’>‘F’) ou (2 < 1) Não ( 10.

Se Teste Então Início Bloco de Comandos Fim. Se X > 0 Então Escreva (‘Número maior que zero’). Delphi program Delphi_Alg03. } 11 . Fim.1. {$APPTYPE CONSOLE} uses SysUtils. var x : integer. ESTRUTURAS DE CONTROLE DE FLUXO São utilizadas para controlar o fluxo de execução dos comandos em um algoritmo ou programa. if (Teste) { Bloco de Comandos. Alternativa Simples (SE) Realiza um teste para determinar se um comando ou um bloco de comandos é executado. 2.h> #include <conio. int main(int argc. Algoritmo Se Teste Então Comando.h> int x. C++ #include <condefs. end. if Teste then begin Bloco de Comandos end. C++ if (Teste) Comando. Delphi if Teste then Comando.h> #include <iostream. readln(x).2. Leia (X). readln. if x > 0 then writeln('Numero maior que zero'). return 0. Início Escreva (‘Digite um número’). getch(). 2. cin >> x.1. if (x > 0) cout << "Numero maior que zero". } Algoritmo 03: Verifica se um valor é maior que zero. begin writeln('Digite um numero'). Declaração de variáveis X : Inteiro.1. char **argv) { cout << "Digite um numero \n". Estruturas Condicionais Permitem controlar a execução ou não de um comando ou bloco de comandos.

Fim Delphi if Teste then Comando1 else Comando2. Se X RestoDivisao 2 = 0 Então Escreva (‘Número Par‘) Senão Escreva (‘Número Ímpar‘). Fim. end else begin Bloco de Comandos 2. Delphi program Delphi_Alg04. readln(x). C++ if (Teste) Comando1. end. Leia (X). Declaração de variáveis X : Inteiro.1.2. else Comando2. getch(). if x mod 2 = 0 then writeln('Numero par') else writeln('Numero impar'). } 12 . cin >> x. {$APPTYPE CONSOLE} uses SysUtils. else cout << "Numero impar". return 0. } Algoritmo 04: Testa se um número natural é par ou impar.h> int x. int main(int argc. if (Teste) { Bloco de Comandos 1. begin writeln('Digite um numero'). Fim Senão Início Bloco de Comandos 2. var x : integer.h> #include <conio. Algoritmo Se Teste Então Comando1 Senão Comando2. if Teste then begin Bloco de Comandos 1. readln.h> #include <iostream. char **argv) { cout << "Digite um numero \n". Se Teste Então Início Bloco de Comandos 1. Início Escreva (‘Digite um número’). if (x % 2 == 0) cout << "Numero par". Alternativa Dupla (SE – SENÃO) Executa um ou outro comando (ou bloco de comandos) de acordo com um teste realizado.2. } else { Bloco de Comandos 2. C++ #include <condefs. end.

break. ALGORITMO Caso ( Variável ) Seja <valor1> : Comando1. Fim. <valor2. default : ComandoN. Senão Escreva ('Cidade não cadastrada'). 61 : Escreva ('Brasília'). break. 21 : Escreva ('Rio de Janeiro'). { 11 São Paulo 21 Rio de Janeiro 61 Brasília 84 Natal } Declaração de variáveis DDD : Inteiro. Else ComandoN. End. Fim. break. Algoritmo 05: Testa diferentes valores para o código DDD e imprime o nome da cidade correspondente de acordo com a lista abaixo. End. 13 . case <valor2> : case <valor3> : Comando2. Else Begin Bloco de Comandos N. Fim. 84 : Escreva ('Natal'). } switch ( Variável ) { case <valor1>: Bloco de Comandos 1. } Caso (Variável) Seja <valor1> : Início Bloco de Comandos 1. Delphi Case ( Variável ) Of <valor1> : Comando1. valor3> : Begin Bloco de Comandos 2. Senão Início Bloco de Comandos N. <valor2. Fim. default : Bloco de Comandos N. valor3> : Início Bloco de Comandos 2. valor3> : Comando2. Início Escreva (‘Digite o código DDD da cidade’). case <valor2>: case <valor3>: Bloco de Comandos 2. C++ switch ( Variável ) { case <valor1> : Comando1. Obs: A variável que possui o valor testado deve ser do tipo inteiro. valor3> : Comando2. Caso (DDD) Seja 11 : Escreva ('São Paulo'). Fim.1. Leia (DDD). End. <valor2. break. Senão ComandoN.2. Alternativa Múltipla (CASO) Executa um comando (ou bloco de comandos) de acordo com um valor específico de uma variável. Cas e (Variável) Of <Valor1> : Begin Bloco de Comandos 1. imprime a mensagem “Cidade não cadastrada”. End. caractere ou lógico. <Valor2.3. End. Fim. para um DDD fora da lista. Fim.

} É possível substituir uma estrutura de alternativa múltipla por estruturas de alternativa dupla. char **argv) { cout << "Digite o DDD da cidade \n". cin >> x.h> int x. case 84 : cout << "Natal". break. end. break. {$APPTYPE CONSOLE} uses SysUtils. 61 : writeln('Brasilia'). var x : integer. case 21 : cout << "Rio de Janeiro". default : cout << "Cidade nao cadastrada". break. O algoritmo DDD ficaria da seguinte maneira: 14 . readln. return 0. break. case x of 11 : writeln('Sao Paulo'). readln(x). switch (x) { case 11 : cout << "Sao Paulo". else writeln('Cidade nao cadastrada'). 21 : writeln('Rio de Janeiro').h> #include <conio. int main(int argc.Delphi program Delphi_Alg05.h> #include <iostream. begin writeln('Digite o DDD da cidade'). } getch(). C++ #include <condefs. case 61 : cout << "Brasilia". 84 : writeln('Natal'). end.

else if (x == 84) cout << "Natal".h> int x. int main(int argc. Se DDD = 11 Então Escreva ('São Paulo') Senão Se DDD = 21 Então Escreva ('Rio de Janeiro') Senão Se DDD = 61 Então Escreva ('Brasília') Senão Se DDD = 84 Então Escreva ('Natal') Senão Escreva ('Não Cadastrada'). Delphi program Delphi_Alg06. else if (x == 21) cout << "Rio de Janeiro". {$APPTYPE CONSOLE} uses SysUtils. } 15 . Inicio Escreva (‘Digite o código DDD da cidade’).h> #include <iostream. if x = 11 then writeln('Sao Paulo') else if x = 21 then writeln('Rio de Janeiro') else if x = 61 then writeln('Brasilia') else if x = 84 then writeln('Natal') else writeln('Cidade nao cadastrada'). Leia (DDD). cin >> x. var x : integer. end. return 0. readln. C++ #include <condefs.Algoritmo 06: Implementação de uma estrutura de alternativa múltipla utilizando alternativas duplas.h> #include <conio. readln(x). getch(). else if (x == 61) cout << "Brasilia". else cout << "Cidade nao cadastrada". begin writeln('Digite o DDD da cidade'). char **argv) { cout << "Digite o DDD da cidade \n". Declaração de variáveis DDD : Inteiro. Fim. if (x == 11) cout << "Sao Paulo".

Fim. h) Ler o número do mês (1 – janeiro. Enquanto N < 20 Faça Início Escreva (N). isósceles ou escaleno). c) Ler dois números inteiros do teclado. Caso afirmativo. 0 – outubro.1.. Declaração de variáveis N.. S ← S + N. . 9 – setembro. f) Ler três valores e apresentá-los em ordem crescente. 3 – março. dados a. Exercícios 3. } while (Teste) { Bloco de Comandos.2. Se o segundo for diferente de zero. e) Calcular as raízes reais da equação aX2 + bX + c = 0. while Teste do begin Bloco de Comandos end. Delphi while Teste do Comando. Repetição com Teste no Início Repete várias vezes um comando ou um bloco de comandos enquanto o teste for verdadeiro. 2 – fevereiro. b) Ler dois números reais e imprimir o maior deles.4. 12 – dezembro) e identificar em que trimestre o mês está incluído. S). d) Ler três valores e dizer se eles formam um triângulo. S : Inteiro. Algoritmo 07: Imprime os números ímpares menores que 20. imprimir a mensagem: "Divisão por zero". efetuando a soma.2. Início N ← 1. g) Ler o último número da placa de um veículo e identificar o mês de pagamento do IPVA de acordo com a lista a seguir: 1 – janeiro.. Escreva (‘Soma = ‘. N ← N + 2. b e c. Fim. 16 ... calcular e imprimir o quociente do primeiro pelo segundo. 2 – fevereiro.1. 2. S ← 0. Implementar algoritmos para: a) Ler três números reais e verificar se o primeiro é maior que a soma dos outros dois. Estruturas de Repetição Permitem controlar a repetição de um comando ou bloco de comandos. Algoritmo Enquanto Teste Faça Comando. Enquanto Teste Faça Início Bloco de Comandos Fim.2. ou a mensagem "Números iguais". se forem iguais. 4 – abril. Caso contrário. . C++ while (Teste) Comando.. 2. dizer seu tipo (equilátero.

s := 0. char **argv) { n = 1. do { Bloco de Comandos.h> #include <iostream. n = n + 2. end. while n < 20 do begin writeln(n). while (n < 20) { cout << n << "\n". return 0. until Teste. } while (Teste). n := n + 2. s = s + n. {$APPTYPE CONSOLE} uses SysUtils. int main(int argc. readln. while (Teste). Repetição com Teste no Fim Delphi: Repete várias vezes um comando ou um bloco de comandos até que o teste seja verdadeiro. Delphi repeat Comando.Delphi program Delphi_Alg07. s. repeat Bloco de Comandos until Teste. getch(). C++ #include <condefs. Até que (Teste).2. C++ do Comando.h> int n. s := s + n. var n. } 2.h> #include <conio. s : integer. writeln('Soma = '.2. begin n := 1. s). } cout << "Soma = " << s. end. Algoritmo Repita Comando. Repita Início Bloco de Comandos Fim Até que (Teste). 17 . s = 0. C++: Repete várias vezes um comando ou um bloco de comandos enquanto o teste for verdadeiro.

repeat readln(x). m = s / (n-1). n++. Delphi program Delphi_Alg08. getch(). writeln('Media = '. S ← S + X. Início N ← 0. s. s = 0. m). m : real. s.h> #include <conio. } 18 . char **argv) { n = 0. x.h> #include <iostream.Algoritmo 08: Calcula a média de N números lidos do teclado. Escreva (‘Media = ‘. do { cin >> x. var n. S ← 0. Fim. s := 0. n := n + 1. Até que X = 0. cout << "Media = " << m. M ← S / (N – 1). readln. m. end. return 0. s := s + x. N ← N + 1. x. until x = 0. int main(int argc. Repita Leia (X). s = s + x. S. m := s / (n-1). M). utilizando o zero como finalizador. Declaração de variáveis N. C++ #include <condefs. X.h> double n. M : Real. begin n := 0. } while (x). {$APPTYPE CONSOLE} uses SysUtils.

writeln('Fatorial = '.2. end.2. 19 . Bloco de Comandos Para Var de <Início> até <Fim> faça Início Bloco de Comandos. C++ for (Var = <Inicio>. Var <= <Fim>. {$APPTYPE CONSOLE} uses SysUtils. end. readln(n). N. begin f := 1. writeln('Digite um numero'). Comando Algoritmo Para Var de <Início> até <Fim> faça Comando. for Var := <Início> to <Fim> do begin Bloco de Comandos. Para I de 1 até N Faça F ← F * I. F : Inteiro. for i := 1 to n do f := f * i. Fim. Fim. f). Var <= <Fim>. Repetição com Variação Fixa Repete um comando ou um bloco de comandos um número determinado de vezes. Declaração de variáveis I. controlado por uma variável chamada de variável de controle (Var). Var++) Comando. Escreva (‘Fatorial = ‘. Delphi program Delphi_Alg09. n. Leia (N). Início F ← 1. f : integer. Var++) { Bloco de Comandos. readln. Escreva(‘Digite um número’). } Algoritmo 09: Calcula o fatorial de um número. for (Var = <Inicio>. var i.3. F). Delphi for Var := <Início> to <Fim> do Comando.

.15 + 20 . 13. i <= n... i++) f = f * i. Considerar o valor Zero como finalizador. 12. cout << "Digite um numero \n". for (i = 1.25 + .. 9. dado abaixo: S = 10 .. 9.. 1. } 2. return 0. Exercícios 4. 8. Implementar algoritmos para: a) Mostrar os números de 100 até 200 variando de 10 em 10. dado abaixo 1 3 5 7 99 S = + + + +. 15.2. . vista abaixo.4. n. g) Calcular o valor de S. int main(int argc... 99. e) Ler um conjunto de valores inteiros positivos e determinar a quantidade de números pares e ímpares entrados.h> #include <iostream. + 1 2 3 4 50 h) Imprimir os N primeiros termos da série de Fibonacci. 3. (cada termo é a soma dos dois anteriores) i) Calcular o valor de S.. b) Mostrar os múltiplos positivos de 7 menores que 100. dado N. c) Calcular e mostrar a soma dos termos da série: 6. getch(). cout << "Fatorial = " << f.h> #include <conio. 5.. f) Ler dois valores e calcular o MDC e o MMC entre eles. f. 60. 13. 11. cin >> n. 20 . 2. . d) Calcular e mostrar a soma dos termos da série: 7. ... + 100 j) Ler um número e verificar se ele é ou não um número primo.h> #pragma argsused int i. char **argv) { f = 1.C++ #pragma hdrstop #include <condefs. 1.

. O índice.1. C++: X[0] = 10. Exemplo: Declaração e iniciação de um vetor com 5 elementos inteiros Delphi: var X : array[1. utilizase a sintaxe apresentada a seguir: Delphi array[1. 0 } 3. C++: int X[5] = { 0. C++: cin >> X[1]. 0.1. 0. N é uma constante inteira que indica o número de elementos do vetor. 0. Conforme se observa nos exemplos. indica a posição de um valor dentro do vetor.5] of integer. Referenciando os Elementos do Vetor Cada elemento do vetor é referenciado individualmente por meio do seu índice indicado entre colchetes [].N] of Tipo onde: C++ Tipo[N] Tipo é um tipo de variável que indica o tipo de cada elemento do vetor.1. VETORES . 0 ). Desta forma. 0. Declaração de Vetores Na declaração de um vetor é necessário informar a quantidade de elementos que o compõe.3. em geral um número inteiro. a indexação na linguagem Delphi inicial normalmente em 1 e em C++. Exemplo: Escrita do último elemento do vetor na tela: Delphi: Writeln( X[5] ). 3. em 0. Para isso.. Exemplo: Atribuição do valor 10 ao primeiro elemento do vetor X: Delphi: X[1] := 10. Obs. 0.1. MATRIZES E STRINGS 3. Vetores Vetor é um tipo de dado utilizado para representar uma coleção de valores de um mesmo tipo. Exemplo: Leitura de segundo valor do vetor pelo teclado: Delphi: Readln( X[2] ). 21 . Exemplo: Declaração de um vetor com 5 elementos inteiros: Delphi: var X : array[1. 0. as operações de escrita e leitura podem ser realizadas de forma análoga à utilizada para as variáveis de tipos primitivos.5] of integer = ( 0. o último elemento em um vetor C++ possui sempre o índice dado pela quantidade de elementos menos um. C++: int X[5].2. Uma variável do tipo vetor armazena diversos valores que são referenciados por um número denominado de índice.. C++: cout << X[4]. Quando um elemento é referenciado.

end. cin >> notas[i]. } 22 . for (i = 0. writeln('Notas abaixo da media'). notas : array[1.. char **argv) { media = 0. media).h> int i.20] of real.h> #include <iostream.Algoritmo 10: Calcula a média das notas de 20 alunos e mostra as notas acima e abaixo da média. end. media = media + notas[i]. Delphi program Delphi_Alg10. i < 20. C++ #include <condefs. media : real. writeln('Notas acima da media'). i < 20. i++) { cout << "Digite a nota do aluno " << i+1 << " : ". double media. media := media / 20.h> #include <conio. writeln('Media = '. i < 20. readln. cout << "Media = " << media << "\n". i++) if (notas[i] > media) cout << notas[i] << "\n". cout << "Notas acima da media \n". var i : integer. for i := 1 to 20 do if notas[i] < media then writeln(notas[i]). getch(). media := media + notas[i]. readln (notas[i]). i. for i := 1 to 20 do if notas[i] > media then writeln(notas[i]). for (i = 0. notas[20]. } media = media / 20. int main(int argc. ' :'). begin media := 0. {$APPTYPE CONSOLE} uses SysUtils. i++) if (notas[i] < media) cout << notas[i] << "\n". cout << “Notas abaixo da media \n”. for (i = 0. return 0. for i := 1 to 20 do begin writeln('Digite a nota do aluno '.

3. Declaração de Matrizes Na declaração de uma matriz é necessário informar a quantidade linha e colunas que a compõe. 8}. o índice de sua coluna. 2. sendo o primeiro o índice da linha do elemento e o seguindo. respectivamente..4] ). Isto porque a utilização de índices maiores que os declarados acarretam no uso de locais de memória não reservados para o programa e podem ocasionar problemas de execução como o travamento do computador. 11 . 2. C++: int M[3][4] = { {1. 1.C] Tipo é um tipo de variável que indica o tipo de cada elemento da matriz.1] ). 6. 10.4] of integer.3. Também é fundamental não extrapolar os limites declarados para as variáveis dos tipos vetores e matrizes. Uma variável do tipo matriz armazena diversos valores que são referenciados por dois índices. {9. 7.C] of Tipo onde: matriz. 4). L e C são constantes inteiras que indicam o número de linhas e de colunas. 1. C++ Tipo[L. C++: cout << X[2][3]. Exemplo: Declaração e iniciação de uma matriz de inteiros com três linhas e quatro colunas: Delphi: var M : array[1.. Obs. 3. Quando um elemento é referenciado. C++: M[0][1] = 10. Matrizes Matriz é um tipo de dado utilizado para representar uma coleção de valores de duas dimensões composta por elementos de um mesmo tipo. da 23 . utiliza-se a sintaxe apresentada a seguir: Delphi array[1.2. Para isso.. C++: cin >> X[1][0].2.L. (9. {5.3. as operações de escrita e leitura podem ser realizadas de forma análoga à utilizada para as variáveis de tipos primitivos.2] := 10.4] of integer = ( (1.2. tanto para as linhas quanto para as colunas das matrizes.. Novamente é importante perceber que a indexação na linguagem C++ inicia em 0.12} }.1. 3.. 1. Exemplo: Declaração de uma matriz de inteiros com três linhas e quatro colunas: Delphi: var M : array[1. 7. Exemplo: Escrita do elemento da terceira linha e quarta coluna da matriz: Delphi: Writeln( X[3. 4}. 8). 11 . 3. Exemplo: Leitura do valor da segunda linha e primeira coluna da matriz: Delphi: Readln( M[2.2. 10. 3. Referenciando os Elementos da Matriz Cada elemento da matriz é referenciado individualmente por meio dos seus índices indicado entre colchetes [].12) ).. C++: int M[3][4]. (5. Exemplo: Atribuição do valor 10 ao elemento da primeira linha e segunda coluna da matriz M: Delphi: M[1. 6.

j++) cout << m[j][i] << " ". {$APPTYPE CONSOLE} uses SysUtils. } cout << "Matriz original \n".. writeln('Matriz transposta'). i < 4. j. } 24 . for i := 1 to 3 do begin for j := 1 to 4 do write(M[i. cin >> m[i][j]. end. readln (M[i. 1. begin for i := 1 to 3 do for j := 1 to 4 do begin writeln('Digite o elemento [' .. end. Delphi program Delphi_Alg11. int main(int argc. j++) cout << m[i][j] << " ". writeln. } getch(). j < 4. j < 3. end. readln. var i. end. ' '). '. M : array[1. i++) { for (j = 0. cout << "\n". j < 4." << j+1 << "]: ". mostra a matriz lida e sua transposta. i. j. ' ').' . i < 3.i]. for i := 1 to 4 do begin for j := 1 to 3 do write(M[j.j]. return 0. writeln.4] of integer. for (i = 0. writeln('Matriz original'). C++ int i.j]). i < 3. } cout << "Matriz transposta \n". i++) for (j = 0. m[3][4].Algoritmo 11: Lê uma matriz 3 x 4. j++) { cout << "Digite o elemento [" << i+1 << ". for (i = 0. ']: '). j : integer. i++) { for (j = 0. cout << "\n". char **argv) { for (i = 0.3.

Em geral. cada caractere da string é referenciado por um índice que indica sua posição dentro do vetor. 3. a string é lida inteira e não caractere por caractere.3. Exemplo: Escrita da string completa: Delphi: Writeln( s ).1. C++: gets ( s ). Delphi: Readln( s ). é necessário informar a quantidade máxima de elementos que a compõe. Referenciando os Caracteres da String Cada caractere da matriz pode ser referenciado individualmente por meio do seu índice indicado entre colchetes []. Exemplo: Leitura de uma string. C++: char s[30] = "Algoritmos". dispensando com isso a determinação prévia da quantidade de elementos. C++: char s[30]. Para declarar strings em C++ e Delphi. C++: cout << s. denominado de finalizador.3. Declaração de Strings Na declaração de uma string em C++. que indica o último caractere válido da string. C++ char[N] Exemplo: Declaração de uma string: Delphi: var s : string. 3. Exemplo: Escrita do segundo caractere da string: Delphi: Writeln( s[2] ).2.3.3. C++: cout << s[1]. C++: s[0] = 'a'. Strings String é um tipo de dado utilizado para representar um vetor de caracteres. reservando inclusive um caractere para o finalizador. a quantidade de caracteres é controlada pela linguagem. Exemplo: Atribuição do caractere 'a' ao primeiro caractere de s: Delphi: s[1] := 'a'. Em Delphi. As strings são utilizadas para armazenar textos e são sempre finalizadas por um caractere com código ASCII zero. 25 . utiliza-se a sintaxe apresentada a seguir: Delphi string onde: N é o número máximo de caracteres da string. Exemplo: Declaração e iniciação de uma string: Delphi: var s : string = 'Algoritmos'. De forma análoga aos vetores numéricos.

i < 10. char **argv) { cout << "Digite seu nome\n".h> #include <iostream. char s[30] = "Algoritmos". s). s : string. isto é. var i : integer. } 3. o número de caracteres válidos pertencentes a ela.h> #include <conio. Delphi program Delphi_Alg12. // Atribui 10 a variável i C++: int i. int main(int argc. s := 'Algoritmos'. C++ #include <condefs. i = strlen(s). for i := 1 to 10 do writeln('Bom dia. gets(s). for (i = 0. readln. '. s : string. {$APPTYPE CONSOLE} uses SysUtils. return 0.3.Algoritmo 12: Lê o seu nome e mostra 10 vezes a mensagem "Bom dia. begin writeln('Digite seu nome'). Tamanho de uma String Para o obter o tamanho de uma string.h> int i. " << s << "\n". <nome>". Delphi: var i : integer. char s[100]. utiliza-se as funções abaixo: Delphi Length C++ strlen Exemplo: Atribuir a uma variável inteira o número de caracteres de uma string.3. i++) cout << "Bom dia. // Atribui 10 a variável i 26 . readln(s). getch(). end. i := Length(s).

n : integer.3. C++ #include <condefs. n. char **argv) { cout << "Digite seu nome\n". cout << "Seu nome posssui " << n << " letra(s) A". n. é realizada no Delphi com o operador "+" e no C++ com a função strcat. y). getch(). begin writeln('Digite seu nome'). char y[10] = "Fogo". n := 0. strcat(x. return 0.h> int i. int main(int argc. } 3.Algoritmo 13: Lê o seu nome e calcula o número de letras 'a' que ele possui. i < strlen(s). que significa unir duas ou mais strings em uma. // Atribui 'BotaFogo' a x C++: char x[10] = "Bota".4. readln. // Atribui 'BotaFogo' a x C++ strcat 27 . x := x + y. n = 0. Delphi + Exemplo: Concatenar as strings "Bota" e "Fogo": Delphi: var x : string = 'Bota'. end. Concatenação de String A concatenação de strings. s : string. i++) if (s[i] == 'a' || s[i] == 'A') n++. gets(s). for i := 1 to Length(s) do if (s[i] = 'A') or (s[i] = 'a') then n := n + 1.h> #include <iostream.h> #include <conio. Delphi: program Delphi_Alg13. ' letra(s) A'). char s[100]. readln(s). var i. {$APPTYPE CONSOLE} uses SysUtils. writeln('Seu nome posssui '. for (i = 0. var y : string = 'Fogo'.

utilizamos em Delphi o operador "=".: ‘Programar eh moleza’ → ‘azelom he ramargorP’. Atribuição ou Cópia de String Para atribuir valor a uma string ou copiar o valor de uma string para outra. "Bota"). // Atribui 'BotaFogo' a x C++: char x[10]. Delphi: var x : string = 'Bota'. Implementar algoritmos para: a) Ler um vetor com 10 inteiros e mostrar os números na ordem direta e inversa a que foram lidos. Delphi: var x. x := 'Bota'. c) Ler uma matriz 4 x 4 e calcular a soma do maior com o menor elemento da matriz. estas operações são realizadas com a função strcpy. y[10]. if x = y then writeln('As strings são iguais'). g) Ler uma string e contar quantas palavras tem nela. b) Ler um vetor com 10 inteiros e calcular o maior e o menor elemento do vetor. retornando zero se elas são iguais. C++: char x[10] = "Bota". No C++. y : string. No C++. um número maior que zero se primeira string vem depois da segunda em ordem alfabética ou um número menor que zero se a primeira string vem antes da segunda. f) Ler duas matrizes 4 x 4 e calcular o produto entre as matrizes. Exercícios 5.4. >. Delphi = C++ strcpy Exemplo: Atribuir os valores "Bota" e "Fogo" a duas strings e em seguida concatena-las. char y[10] = "Fogo". y). "Fogo"). Delphi Operadores Relacionais Exemplo: Comparar os valores "Bota" e "Fogo". <=.5. = e <>). // Atribui 'BotaFogo' a x 3. Ex. var y : string = 'Fogo'.: ‘Programar eh moleza’ → 3 palavras. strcpy(x. if (strcmp(x.3. 28 .3. >=. a comparação entre strings é realizada com a função strcmp.3. y) == 0) cout << "As strings são iguais".6. Esta função compara duas strings. C++ strcmp 3. h) Ler uma string e mostrar de trás para frente. Comparação de Strings Para comparar duas strings em Delphi utilizamos os operadores relacionais (<. y := 'Fogo'. d) Ler uma matriz 4 x 4 e calcular a soma dos elementos da diagonal principal. e) Ler duas matrizes 4 x 4 e calcular a soma das matrizes. Ex. strcat(x. strcpy(y. x := x + y.

Ex.. STRINGS EM C++ BUILDER 4.: ‘Programar eh moleza’ → ‘Pem’ j) Ler uma string com vários espaços entre as palavras e mostrar com somente um espaço entre as palavras. 29 . Nota: o C++ Builder é sensível ao caso.1.: ‘ Programar eh moleza ’ → ‘Programar eh moleza’. a quantidade de caracteres é controlada pelo C++ Builder. .: ‘Programar eh moleza’ → ‘ramargorP he azelom’. String x. Declaração de AnsiString Para declarar variáveis do tipo AnsiString. 4. k) Ler uma string e modificar todas as letras da seguinte forma: Letra Modificar por a z b y c x d w e v f u g t h s . Ex. Referenciando os Caracteres da AnsiString Cada caractere da string pode ser referenciado por meio do seu índice indicado entre colchetes []. 4.1.1.. dispensando com isso a determinação prévia da quantidade de elementos.. 4. Ex. String x = "C++ Builder". Para esses tipos de string não é necessário informar a quantidade máxima de elementos que compõe o vetor de caracteres. Exemplo: Atribuição do caractere 'a' ao primeiro caractere de s: s[1] = 'a'. As principais características do tipo AnsiString são apresentadas a seguir. A vantagem de utilizar o tipo AnsiString está na maior facilidade em realizar tarefas que são normalmente necessárias quando se trabalha com tais tipos de dados. utiliza-se os tipos AnsiString ou String definidos no C++ Builder.i) Ler uma string e mostrar as iniciais de cada palavra. Exemplo: Declaração de uma variável AnsiString: AnsiString s. v e w d x c y b z a l) Ler uma string e escrever cada palavra desta de trás para frente. Para variáveis do tipo AnsiString.2. AnsiString AnsiString ou String é um tipo do C++ Builder comumente utilizado para representar strings em aplicativos desenvolvidos para o ambiente Windows. logo existe diferença entre letras minúsculas e maiúsculas. Exemplo: Declaração e iniciação de uma variável AnsiString: AnsiString s = "Algoritmos". portanto os tipos AnsiString e String devem ser escritos como apresentado anteriormente.1. o primeiro caractere tem índice igual a um.. De forma análoga às variáveis strings do Delphi.

Uma AnsiString é menor que outra quando vem "antes" considerando a ordem alfabética. é realizada com o operador "+".5. Atribuição ou Cópia de AnsiStrings: Operador = Para atribuir um valor a uma AnsiString.1. // Atribui "BotaFogo" a x. y = "Fogo". Tamanho de uma AnsiString: Método Length Para o obter o tamanho de uma AnsiString. x = "Bota". // Atribui "BotaFogo" a x. AnsiString s = "Algoritmos". utilizase o método Length.1. AnsiString y. if (x == y) Edit1->Text = "As strings são iguais".4. AnsiString x. int i. Comparação de AnsiStrings: Operadores Relacionais Para comparar duas AnsiStrings utilizamos os operadores relacionais (<. que significa unir duas ou mais strings.1. Exemplo: Comparar os valores "Bota" e "Fogo". 4. AnsiString y = "Fogo".Length( ). == e !=). Concatenação de AnsiString: Operador + A concatenação de AnsiStrings.1.3.4. x = x + y. >=. y = "Fogo". i = s. isto é. utiliza-se o operador "=".6. 30 . AnsiString y. AnsiString x. x = x + y. Exemplo: Atribuir a uma variável inteira o número de caracteres de uma AnsiString. ou copiar o valor de uma string para outra. Exemplo: Concatenar as strings "Bota" e "Fogo": AnsiString x = "Bota". >. 4. o número de caracteres válidos pertencentes a ela. x = "Bota". 4. <=. Exemplo: Atribuir os valores "Bota" e "Fogo" a duas AnsiStrings e em seguida concatena-as.

Quando o botão Algoritmo for clicado. m. case 12 : m = "Dezembro". 2). AnsiString y. case 7 : m = "Julho". a data no formato "dd de mês de aaaa" deve ser apresentada na caixa de texto Edit2. + " de " + a. case 5 : m = "Maio". 2). utilizamos o método SubString. a = Data. O aplicativo que implementa o algoritmo é apresentado a seguir. Exemplo: Obter os 4 últimos caracteres da string "BotaFogo". tomados a partir da posição 5 com comprimento de 4 caracteres. AnsiString x. case 2 : m = "Fevereiro". a. mes = StrToInt(m).SubString(7. break. 4). uma parte de uma string. y = x. m = Data.SubString(4. Na caixa de texto Edit1. Algoritmo 14: Lê uma data no formato "dd/mm/aaaa" e apresentar no formato "dd de mês de aaaa". d = Data. case 9 : m = "Setembro". case 4 : m = "Abril". break. AnsiString d. // Atribui "Fogo" a y. break. case 6 : m = "Junho". break.SubString(1. break. O algoritmo é apresentado abaixo: void __fastcall TForm1::Button1Click(TObject *Sender) { AnsiString Data. isto é. break. A AnsiString y recebe a string formada pelos caracteres de x.SubString(5. case 11 : m = "Novembro". Substrings de uma AnsiStrings: Método SubString Para obter uma substring. break. break. Data = Edit1->Text. case 8 : m = "Agosto". 4). switch (mes) { case 1 : m = "Janeiro".1.4. int mes.7. break. o usuário deve digitar a data no formato "dd/mm/aaaa". } Edit2->Text = d + " de " + m } 31 break. . break. break. case 3 : m = "Março". x = "BotaFogo". case 10 : m = "Outubro".

os comandos para ler uma matriz podem se tornar uma função em um programa para calcular a soma de duas matrizes. Por exemplo. 5. pois quando um grande número de funções está disponível é provável que várias delas sejam aproveitadas no novo programa em desenvolvimento. desta forma.1. Exercícios 6. A escrita de funções independentes pode tornar mais rápido o desenvolvimento de novos programas.2. respectivamente. função é o nome dado a um conjunto de comandos que é executado quando o nome da função é chamado dentro de um programa. Seqüências de comandos que aparecem repetidas vezes dentro de um mesmo programa são fortes candidatas a virarem funções. Uma função para ler matrizes.Resultado da execução do algoritmo: 4. b) Ler um nome e mostrar na forma de bibliografia: último sobrenome. As funções devem ter propósitos específicos e independentes do programa em que são utilizadas. 32 . Ou seja. vírgula. cada inicial maiúscula seguida de ponto. por exemplo. esta seqüência de instruções é escrita uma única vez no programa. O objetivo das funções é dividir um problema em problemas menores. simplificando e organizando a escrita de um programa como um todo. de forma que possam ser mais facilmente aproveitadas em programas diferentes. deve poder ser utilizada tanto em um programa para calcular a soma de duas matrizes quanto em outro para calcular a inversa de uma matriz. Funções Uma função é um conjunto de instruções escrito para cumprir uma tarefa específica e referenciado por um identificador. FUNÇÕES EM C++ 5. caracterizando sua independência em relação ao programa em que é utilizada. Implementar algoritmos para: a) Ler uma string e trocar todas as letras r e R por l e L.

o cabeçalho ou protótipo da função AreaTriangulo que será utilizada para calcular a área de um triângulo. cout << x << "\n". double altura) { double area. define o nome da função que deve ser utilizado para invocá-la. y. Finalmente. em seguida. Toda variável declarada dentro de uma função é chamada de variável local. O exemplo abaixo mostra o cálculo da área de dois triângulos: o primeiro com base 10 e altura 20. char **argv) { double x. por exemplo. Implementação de Funções A implementação de uma função inicia pelo seu protótipo. y = AreaTriangulo(5. o valor da área é calculado com base nos parâmetros base e altura que devem obrigatoriamente ser fornecidos a função.4.5. area = base * altura / 2. Algoritmo 15: Exemplo de Função double AreaTriangulo(double base. double AreaTriangulo(double base. o segundo com base 5 e altura 8. x = AreaTriangulo(10. } int main(int argc. chamados de parâmetros. Em seguida. 5. return area. a variável area é declarada. } Inicialmente. De fato. os identificadores entre parênteses. para calcular a área de um triângulo é necessário saber a base e a altura dele. são utilizados para passar informações necessárias a função. Finalmente. sem ponto e vírgula no final. o valor da área é retornado para o local onde a função foi invocada. return 0. a área de um triângulo. Declaração de Funções A declaração de uma função inicia por um tipo de dado seguido do nome da função e de uma lista de parâmetros. } 33 . 8). O identificador AreaTriangulo. double altura). seguido da seqüência de comandos necessários para realizar a tarefa atribuída à função. no caso. 5. cout << y << "\n". double altura) { double area. utilizando o comando return. area = base * altura / 2. Chamando Funções Para chamar ou invocar uma função basta utilizar seu nome (identificador) e fornecer os parâmetros necessários a ela. getch(). O tipo double no início da declaração indica que esta função retorna ao programa que a chamar um número real. return area. A implementação da função AreaTriangulo é apresentada abaixo. double AreaTriangulo(double base. 20). A declaração abaixo mostra.2.3.

cout << z << "\n".cpp #include "C_Alg16b. return 0. Uma biblioteca é formada por dois arquivos: o primeiro arquivo com extensão ".5. } double AreaRetangulo(double base. return area. O segundo arquivo com extensão ".h" double AreaCirculo(double raio) { double area. return area. area = 3. double altura) { double area.14 * raio * raio. double AreaTriangulo(double base. double AreaRetangulo(double base. return area. double altura). z. O exemplo abaixo mostra uma biblioteca de funções relacionadas ao cálculo de áreas de figuras geométricas. area = base * altura / 2. cout << y << "\n". Arquivo 2: C_Alg16b. x = AreaCirculo(3). area = base * altura. y. um triângulo com base 5 e altura 8. double altura). double altura) { double area. y = AreaRetangulo(10. cout << x << "\n".h" int main(int argc. 20). char **argv) { double x. Bibliotecas de Funções Conjuntos de funções com propósitos semelhantes são normalmente agrupados em arquivos distintos do programa principal chamados de bibliotecas.h double AreaCirculo (double raio). } O programa abaixo mostra o cálculo da área de um círculo de raio 3.h" é chamado de cabeçalho e contém o protótipo de todas as funções da biblioteca. } double AreaTriangulo(double base. 8).5.cpp" deve conter a implementação das funções pertencentes à biblioteca. Algoritmo 16: Exemplo de Biblioteca Arquivo 1: C_Alg16b. #include "C_Alg16b. } 34 . getch(). z = AreaTriangulo(5. um retângulo com base 10 e altura 20.

os parâmetros das funções foram passados por valor. A função cria duas novas variáveis para receber tais valores. a função tem acesso ao local de memória onde a variável está armazenada e acessa esta variável através do nome do parâmetro. b. b = 20. nenhuma alteração realizada em seus valores é refletida para o programa onde a função foi invocada. getch(). x = y. int& y) { int z. a função não cria uma variável local para armazenar o valor passado como parâmetro. os valores de a e b são passados para a função Inverter. Nestes casos. 5. Inverter(a. return 0.6. a = 10. x = y. Quando a passagem de um parâmetro é por referência. int y) { int z. Passagem de Parâmetros por Valor e por Referência Nos exemplos apresentados até o momento. y = z. char **argv) { int a. Quando a passagem de parâmetros é por valor. cout << a << "\n". Algoritmo 17: Passagem de Parâmetros por Valor void Inverter(int x. Nestes tipos de parâmetros. } Neste exemplo. os valores de x e y são trocados mas a alteração não se reflete nas variáveis a e b. y = z. Dentro da função. z = x. qualquer alteração realizada no parâmetro dentro da função é refletida para a variável do programa. Por isso. a função cria uma variável local para receber a informação passada como parâmetro. os valores impressos na tela são os valores originais das variáveis. cout << b << "\n". } 35 . Desta forma. // Escreve 10 // Escreve 20 Algoritmo 18: Passagem de Parâmetros por Referência void Inverter(int& x. b). z = x.Note que a diretiva include com o nome d biblioteca entre aspas deve listado no início do programa que a utiliza a biblioteca. } int main(int argc.

z = x. i++) cout << x[i] << "\n".7. j++) for (k = j + 1. Isto significa que uma alteração no parâmetro realizada dentro da função é refletida na variável original. mesmo sem a utilização do operador "&". } 36 . for (i = 0. a passagem de parâmetros é realizada por referência. } Ordenar(x). x = y. não é possível passar uma constante como parâmetro. utilizamos o operador de referência "&" na declaração dos parâmetros. char **argv) { int a. } int main(int argc. b = 20. return 0. k. char **argv) { int i. k++) if (v[j] > v[k]) Inverter(v[j]. x[10]. b. i <= 9. } void Ordenar(int v[10]) { int j. cin >> x[i].int main(int argc. } Para passar um parâmetro por referência. getch(). return 0. int& y) { int z. a = 10. v[k]). j <= 8. k <= 9. y = z. Inverter(a. Nestes casos. // Escreve 20 // Escreve 10 5. Algoritmo 19: Passagem de Parâmetros do Tipo Matriz void Inverter(int& x. i <= 9. Passagem de Parâmetros do Tipo Matriz Quando o parâmetro de uma função é uma matriz. cout << a << "\n". getch(). for (j = 0. i++) { cout << "Digite o elemento x[" << i + 1 << "]: ". for (i = 0. b). cout << b << "\n".

8. Exercícios 7. As funções Somar e Subtrair calculam a soma e a diferença entre as matrizes a e b. respectivamente. As duas primeiras funções calculam e retornam o perímetro de um quadrado e de um retângulo. Implementar a biblioteca "Matrizes" com as funções abaixo. lado. double& a. Implementar a biblioteca "Figuras" com as funções abaixo. double& p). int b[3][3]. double& p). base. double altura. int b[3][3]. Makron Books. W. V. double altura). colocando tais valores nos parâmetros a e p.5. int Determinante (int a[3][3]). void Subtrair (int a[3][3]. double PerimetroQuadrado (double double PerimetroRetangulo (double void AreaPerimetroQuadrado (double void AreaPerimetroRetangulo(double lado). Treinamento em Linguagem C++ Modulo 2 – Mizrahi. Editora Érica. Makron Books. respectivamente. void Somar (int a[3][3]. A função Determinante calcula e retorna o determinante da matriz a. Bibliografia: Treinamento em Linguagem C++ Modulo 1 – Mizrahi. 37 . Introdução ao desenvolvimento de algoritmos e estrutura de dados – Pinto. colocando o resultado em c. Implementar um programa que use a biblioteca. c[3][3]). double& a. respectivamente. V. V. S. V. c[3][3]). As duas últimas calculam áreas e perímetros de quadrados e retângulos. base.8. Implementar um programa que use a biblioteca.