Buscar

Apostila C++

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 38 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

� �Professora ANITA LOPES
 ��
FUNDAMENTOS DA LINGUAGEM C++
	
1 A linguagem C++
1.1	Introdução
	
A linguagem C++ foi desenvolvida nos Laboratórios da BELL. Ela é baseada na linguagem C, mas acrescenta características de uma linguagem orientada a objetos.
Nosso estudo não fará menção a orientação a objetos. 
A linguagem C++ é "Case Sensitive", isto é, maiúsculas e minúsculas fazem diferença.
	1.2	Estrutura de um programa em C++
	
	Um programa em C++ é constituído de:
cabeçalhos que contém definições de pré-processamento tais como os arquivos de cabeçalho, as definições de constantes simbólicas, uso de namesapces, declaração de variáveis globais, declaração de rotinas, etc.
um bloco da função principal e outros blocos de de funções.
comentários. 
	[ <definições de pré-processamento> ]
	[ <declaração de variáveis globais> ]
	int main()
	{
	 Bloco de comandos
	}
	<tipo de retorno da função> <nome_da_função1 >( <parâmetros>) >
	{
	 Bloco de comandos da função1
	}
	...
	<tipo de retorno da função> <nome_da_funçãon >( <parâmetros>) >
	{
	 Bloco de comandos da função2
	}
Exemplo de um programa em C++
#include <iostream>
using namespace std;
int main() 
{ 
 cout<<"\nPRIMEIRO PROGRAMA EM C++";
}
	
Explicando:
	#include <iostream> instrui o compilador a usar a biblioteca padrão de entrada e
 saída
 using namesapce std; uso do namespace padrão std 
	int main() main é o nome da função principal; 
 { inicia a função
	 cout imprime na tela a msg após alimentar linha
	} finaliza a função
1.2.1 	Conjunto de caracteres
	Um programa fonte em C++ é um texto não formatado escrito em um editor de textos usando um o conjunto padrão de caracteres ASCII.	
	
Caracteres válidos:
	As letras minúsculas e maiúsculas não acentuadas
	Os algarismos de 0 - 9 
 	+ - * / \ = | & ! ? # % ( ) { } [ ] _ ‘ “ . , : < >
	
	Observação: Qualquer outro caracter é valido para as strings. 
	1.2.2	Comentários
	Os comentários em C++ podem aparecer em qualquer lugar do programa e têm como objetivo fazer um esclarecimento sobre uma linha ou trecho do programa.
	Os comentários de bloco terão um /* antes e um */ depois, ou // quando se deseja comentar uma linha.
	Exemplos:
	/* programar em 
 C++ eh facil */	
 // so uma linha
	1.2.3 	Diretivas de Compilação
	Na linguagem C++, alguns comandos são processados durante a compilação. Estes comandos são chamados de diretivas de compilação e são eles que informam quais bibliotecas e constantes simbólicas deverão ser anexadas quando for gerado o programa executável.
A diretiva #include diz ao compilador para incluir na compilação do programa outros arquivos. Geralmente estes arquivos contem bibliotecas de funções ou rotinas do usuário. 
As bibliotecas agrupam funções de acordo com as finalidades. Se não fizéssemos uso delas, nossos programas seriam muito extensos e teríamos problemas na linkedição. 
Sintaxes: 
	#include <nome_da_biblioteca >
	#include “...nome_da_biblioteca ”
onde nome_da_biblioteca é o nome da biblioteca que se deseja incluir. Estando entre os sinais < e > significa que está no diretório padrão e ficando entre “, significa que precisamos fornecer o caminho onde se encontra a biblioteca.
	Exemplos de bibliotecas:
BIBLIOTECA ctype.h
	Converte para maiúscula ou para minúscula uma letra
	toupper(letra)
	tolower(letra)
BIBLIOTECA math.h
	Calcula o valor absoluto real d
	fabs(double d)
	Funções trigonométricas do ângulo arco, em radianos
	sin(double arco)
	cos(double arco)
	tan(double arco)
	asin(double arco)
	acos(double arco)
	atan(double arco)
	Funções de arredondamento para inteiro
	ceil(double num) Ex. ceil(3.2) => 4.0 arredonda pra cima
	floor(double num) Ex. floor(3.2) => 3.0 arredonda para baixo
	Funções logarítmicas: log() é logaritmo natural (base e), log10() é logaritmo decimal (base 10)
	log(double num)
	log10(double num)
	Funções: potência e raiz quadrada
	pow(double base, double exp); Potenciacao: pow(3.2,5.6) => 3.25.6
	sqrt(double num); Raiz quadrada: sqrt(9.0) = >3.0.
BIBLIOTECA stdlib.h
		Calcula o valor absoluto do inteiro i e do real d, respectivamente
	abs(int /float)
	rand()
BIBLIOTECA string.h → Ver Anexo I
		Concatena duas strings
	strcat(str1, str2);
	Copia o conteúdo de uma variável em outra variável
	strcpy(str1, str2) /* não é permitido: str1 =str2;*/
	Fornece o número de caracteres de uma string
	strlen(str1) 
	Compara duas strings 
	 devolve número menor que 0 se str1 vier antes de str2 
strcmp(str1, str2) devolve número maior que 0 se str1 vier depois de str2
 devolve 0 se str1 for igual à str2 
2. Saída 
	O objeto cout permite que enviemos dados/mensagens para a tela.
 
	Usando: using namespace std; 
	cout<<” …”;
cout<<variavel<<endl;
	Usando: using std::cout; 
	cout<<” …”;
cout<<variavel<<endl;
	Não usando namespace
	std::cout<<” …”;
std::cout<<variavel<<endl;
		 
		Controle/Caracter
	Seqüência de escape
	nulo (null) 
campainha (bell) 
retrocesso (backspace) 
tabulacao horizontal 
nova linha (new line) 
tabulacao vertical 
alimentacao de folha (form feed) 
retorno de carro (carriage return)
aspas (") 
apostrofo (') 
interrogacao (?) 
barra invertida (\) 
	\0
\a
\b
\t
\n
\v
\f
\r
\"
\'
\?
\\
	
	#include <iostream>
using namespace std;
int main() {
 cout << "Aprendendo a usar \"cout\"\n"; // o caracter \" imprime aspas na tela
 cout << "O operador de insercao << separa os elementos que se desja colocar na tela\n";
 cout << "O caracter de controle \'\\n\' equivale a endl, alimenta linha" << endl;
 cout << "Usando \'\\t\' \timprime-se na proxima zona\n";
 // o caracter \’ imprime apostrofo na tela e o carcater \\ imprime \ na tela
 system("pause");
}
	
3. Constantes e variáveis
	
3.1 Constantes
	O C++ possui quatro tipos básicos de constantes: inteiras, de ponto flutuante, caracteres e strings. Constantes inteiras e de ponto flutuante representam números de um modo geral.
	3.1.1	Constantes inteiras
	As constantes inteiras na linguagem C++ podem ser escritas no formato decimal (base 10), hexadecimal (base 16) ou octal (base 8). 
	Exemplos:
 	Decimal: 12 
	Octal : 033 ( em decimal vale 27. O zero antes do número caracteriza a constante octal)
	Hexadecimal: 0xff ( em decimal vale 255. O zero e o x antes do número caracterizam a constante hexadecimal)
	
	3.1.2	Constantes de ponto flutuante
	
	São números reais com um ponto decimal e (opcionalmente) um expoente.	
	Exemplos: 
	1.876 476.65 1.23e-9 -1.e2 10.6e18 -.853E+67
	3.1.3	Constantes caracteres
	Uma constante caracter é uma letra ou símbolo colocado entre plicas.
	Exemplo:
	’A’	’N’	’I’	’T’ ’A’	
	As constantes caracter são armazenadas como números inteiros. Estes números correspondem aos valores de cada caracter dentro do código ASCII.
	
	3.1.4	Constantes strings
	Uma constante string consiste de um conjunto de caracteres do código ASCII padrão ou estendido, colocados entre aspas duplas.
	Exemplo: 
	”UAU!”
	”Matemática”
	”APRENDENDO A PROGRAMAR EM C++ ”
Na linguagem, C++ uma string é um vetor de caracteres terminado com um caracter nulo. O caracter nulo é um caracter com valor inteiro igual a zero (código ASCII igual a 0). O terminador nulo também pode ser escrito usando a convenção de barra invertida do C como sendo '\0'.
	char nome_da_string[tamanho];
Como precisamos reservar uma posição para o terminador, sempre iremos declarar o tamanho necessáriomais um.
Vamos supor que declaremos uma variável de nome palavra de 11 posições(char palavra[11]; ) e armazenemos a palavra PROGRAMAS nela. 
É bom ressaltar que a linguagem C++ não inicializa as variáveis e toda célula não usada têm valor indeterminado. 
Não se esqueça de inicializar as variáveis de seus programas, pois coisas incríveis podem acontecer!
As strings são consideradas vetores de caracteres( matriz linha). Como na Matemática, para se acessar um determinado caracter de uma string, basta "indexarmos". 
	
	str[1] = 'o'
str[2] = 'a'
	No exemplo acima, percebemos que o primeiro caracter se encontra na posição 0( em algumas linguagens, seria a posição 1). Desta forma, se indexarmos com 1, na verdade estaremos nos referindo ao segundo caracter da string; se indexarmos com 2, na verdade estaremos nos referindo ao terceiro caracter da string e assim sucessivamente. 
3.1.5 Constantes Simbólicas
	A Matemática define pi como tendo o valor 3.14159265. Muitas vezes precisaremos definir algumas constantes em nossos programas.
3.1.5.1 Constantes definidas pelo programador 
	
	O programador pode definir constantes simbólicas em qualquer programa.
	Sintaxe: 
	#define <nome> < valor >
	Onde #define é uma diretiva de compilação que diz ao compilador para trocar as ocorrências do texto nome por valor. Observe que não há ; no final da instrução pois trata-se de um comando para o compilador e não para o processador. A instrução #define deve ser escrita antes da instrução de declaração da rotina principal. 
	
	O uso da diretiva #define não se restringe apenas para declarar constante(#define pi 3.14159265 ) mas também podemos usá-la para definir macro instruções(#define conv(x) (x*pi/180) ou #define quadrado(x) (x*x) ). 
3.2 Variáveis
A variável é um lugar(endereço) na memória principal que armazena um dado e tem um nome associado para facilitar a programação .
	Em C++, as variáveis podem ser declaradas no inicio do programa, mas poderemos também declarar dentro de algumas estruturas, diferentemente de outras linguagens. Estas variáveis podem ser de vários tipos: int (inteiro), float (real de simples precisão) , char (caracter único), double (real de dupla precisão).
	A classe String será vista em outro momneto.
	Tipo
	Tamanho
	Intervalo
	Uso
	char
int 
float 
double
	1 byte 
4 bytes 
4 bytes 
8 bytes 
	-128 a 127
-2147483648 a 2147483647
3.4e-38 a 3.4e38 
1.7e-308 a 1.7e308 
	número muito pequeno e caracter ASCII
contador, controle de laço
real (precisão de 6dígitos)
científico (precisão de 10 dígitos)
	Quando se define um tipo de variável, informamos ao computador quanto de memória será necessária para armazenar este dado e que tipos de operações poderão ser realizadas com este dado.
	Para se declarar uma variável, usamos a seguinte sintaxe:
	< tipo> nome_da_variável ;
	
	O nome de uma variável deve obedecer algumas regras:
O primeiro caracter pode ser uma letra ( maiúscula ou minúscula) ou o caracter sublinha. Aconselha-se a não usar o caracter sublinha no inicio para não confundir com algumas funções. 
Os demais caracteres, letras algarismos ou o caracter sublinha.
Exemplos:
	int a; float peso; char sexo; int idade1, idade2;
3.2.1	Palavras reservadas
	Existem certos nomes que não poderão ser usados como identificadores. São chamadas as palavras reservadas e são de uso restrito da linguagem C++. 
 
3.2.2	Tipos modificados
	Além dos tipos de dados mencionados, existem os modificadores: long, short, signed e unsigned. Tipicamente o modificador long aumenta o número de bytes usados para o registro do número. O modificador unsigned, usado somente em inteiros, permite que um bit usado para guardar o sinal do número seja usado para guardar o valor do número. 
	Tipo
	Tamanho (bytes)
	Intervalo
	unsigned char 
	1
	0 a 255 
	unsigned int 
	2
	0 a 65 535
	unsigned long int 
	4
	0 a 4 294 967 295
	long int (int) 
	4
	-2 147 483 648 a 2 147 483 647
	short int
	2
	-32768 a 32767
	long double 
	10
	3.4e-4932 a 1.1e4932
 Observação: Alguns outros tipos são possíveis em ISO C90
3.2.3 Conversão de tipo (Casting)
	Algumas vezes queremos, momentaneamente, modificar o tipo de dado representado por uma variável, isto é, queremos que o dado seja apresentado em um tipo diferente do qual a variável foi inicialmente declarada. Por exemplo: ao fazermos uma divisão entre dois inteiros, a linguagem C++ trunca a parte fracionária e podemos desejar que isto não aconteça. Este procedimento é chamado de conversão de tipo ou casting . 
Sintaxe: 
	(tipo) variável
onde tipo é o nome do tipo ao qual queremos converter o dado armazenado em variável. 
Exemplo: 
	#include <iostream>
using namespace std;
int main() { 
 cout << "\nNumero 7 DIVIDIDO por 3" ; 
 cout << "\n\nsem conversao: "<<7/3<<"\tcom conversao: " << float)7/3<<"\n\n";
 system("pause");
}
	
3.2.4 Variável ponteiro
Nós já sabemos que uma variável é um endereço na MP que armazena um dado. É bom deixar claro que não é um único endereço, pois, dependendo do tipo, poderemos estar alocando 1, 2, 4, 8 ou mais posições para cada variável como vimos na última tabela. 
Uma variável ponteiro armazena o endereço de outra variável. Mais adiante estudaremos este tipo de variável uma vez que se não trabalharmos bem com este tipo de variável, não conseguiremos programar bem na linguagem C++.
4. Atribuição
Consiste em atribuir um valor a uma variável. Em C++, o comando de atribuição tem a seguinte sintaxe:
	< nome_da_variável > = <conteúdo> ;
	
Exemplos:
a = 12 ; peso = 65.2; sexo ='f'; idade1 = 21; idade2 = 34;
Observação 1: Em C++, é possível declarar e inicializar uma variável: int a = 12; 
Observação 2: Em C++, é possível inicializar várias variáveis: x =t =s = 0;
Na atribuição múltipla as operações ocorrem da direita para a esquerda, isto é, inicialmente o valor 0 é atribuído a s, depois o valor de s é atribuído a t e, por último, o valor de t é atribuído a x.
4.1 Atribuição múltipla.
 A linguagem C++ permite que se atribua um valor a muitas variáveis. em uma única instrução. 
Sintaxe: 
	var_1 = [var_2 = ... ] valor;
Exemplo:
a = b = 0;
5. Entrada de dados 
	scanf
5.1 cin
	cin>>nomedavariável;
	cin>>nomedavariável1>> nomedavariável2;
  	 O objeto cin permite que o usuário digite dados através do dispositivo padrão de entrada: teclado. O operador >> é chamado de extração.
	#include <iostream>
using namespace std;
int main()
{ int idade; float altura; 
 cout<<"\nDigite idade: " ; cin>>idade;
 cout<<"\nDigite altura: " ; cin>>altura; 
 cout<<"\n\n\nIdade: "<<idade;
 cout<<"\nAltura: "<<altura<<endl; 
 system("pause");
}
	
	#include <iostream>
using namespace std;
int main()
{ char sexo; char nome[30];
 cout<<"\nDigite nome: " ; cin>>nome;
 cout<<"\nDigite sexo(m/f): " ; cin>>sexo; 
 system("pause"); 
 system("cls");
 cout<<"\nNome; "<<nome;
 cout<<"\nSexo; "<<sexo<<endl;;
 system("pause");
}
	
	
	O objeto cin quando lê um vetor de char(string) termina a leitura no primeiro espaço, deixando RENATO no buffer.
Quando um outro cin para ler o sexo é executado, o teclado não é liberado e a letra R é “apanhada” e armazenada na variável sexo.
Por estas razões, precisamos conhecer outros métodos.
5.2 cin.getline
	Este método permite a leitura de um vetor de char inclusive com espaços e não deixando nada no buffer.
Sintaxe:
	cin.getline( <nome do vetor de caracteres>, <tamanho> );
 
	#include <iostream>
using namespace std;
int main()
{ char sexo; char nome[30];
 cout<<"\nDigite nome: " ; cin.getline(nome,30);
 cout<<"\nDigite sexo(m/f): " ; cin>>sexo; 
 cout<<"\n\n\nNome: "<<nome;
 cout<<"\nSexo: "<<sexo<<endl;;
 system("pause");
}
	
5.3 cin.get
	Este métodopermite a leitura de um char.
Sintaxes:
	cin.get(<nome da variável char);
	cin.get();
	A primeira sintaxe serve para ler uma variável do tipo char, mas deixa enter no buffer enquqnto que o objeto cin sempre libera o teclado para o usuário digitar.
	#include <iostream>
using namespace std;
int main()
{ char sexo1,sexo2; 
 cout<<"\nDigite sexo(m/f) " ; 
 cin.get(sexo1);
 cout<<"\nDigite sexo(m/f): " ;
 cin.get(sexo2);
 cout<<"\n\n\nSexo: "<<sexo1;
 cout<<"\nSexo: "<<sexo2<<endl;;
 system("pause");
}
	#include <iostream>
using namespace std;
int main()
{ char sexo1,sexo2; 
 cout<<"\nDigite sexo(m/f) " ;
 cin>>sexo1;
 cout<<"\nDigite sexo(m/f): " ;
 cin>>sexo2;
 cout<<"\n\n\nSexo: "<<sexo1;
 cout<<"\nSexo: "<<sexo2<<endl;;
 system("pause");
}
	
	
	
	Não se surpreenda se econtrar alguns bugs quando usar cin, cin.get() ou cin.getline() em alguns compiladores. 
	Não gosta de usar system(“pause”); ? Veja o exemplo abaixo: 
	#include <iostream>
using namespace std;
int main()
{ char sexo1,sexo2; 
 cout<<"\nDigite sexo(m/f) " ; cin>>sexo1;
 cout<<"\nDigite sexo(m/f): " ; cin>>sexo2;
 cout<<"\n\n\nSexo: "<<sexo1;
 cout<<"\nSexo: "<<sexo2<<endl;;
 cin.get();cin.get(); 
 // o primeiro limpa o buffer e o segundo aguarda o pressionamento de uma tecla
}
	
6. Operadores Aritméticos
	
Existem cinco operadores aritméticos em C++. Cada operador aritmético está relacionado a uma operação aritmética elementar: adição, subtração, multiplicação e divisão. Existe ainda um operador (%) chamado operador de módulo cujo significado é o resto da divisão inteira. 
	
	Operador
	Operação
	+
-
*
/
%
	adição
subtração
multiplicação
divisão
módulo (resto da divisão inteira)
	
	Sintaxe: 
	operando1 operador operando2
	onde operador é um dos símbolos mostrados acima e operando é uma constante ou um identificador de variável. 
	Exemplos:
	12 + 5 -> 17
	12 * 5 -> 60
	12 / 5 -> 2 quando se divide dois inteiros, o resultado é um inteiro
	12 % 5 -> 2 resto da divisão inteira	
	Observação: Se você precisar dividir dois números inteiros e quiser a resposta em real, existe duas saídas:
Coloque um ponto em um dos operandos caso, pelo menos um, seja uma constante: 12 / 5. .
Caso os dois operandos sejam variáveis, faça: (float) a/b . 
		Não existe em C++, como existe em outras linguagens, um operador específico para a operação de potenciação (ab). Existe, porém, uma função de biblioteca (pow(...,...)) que realiza esta operação, ou você poderá criar quando aprender a usar as funções log e exp.. 
	6.1	Hierarquia das operações
	Categoria
	Operadores
	Prioridade
	parênteses
	( ) 
	interno ( externo
	função
	nome() 
	E ( D
	incremental, lógico
	++ -- ! 
	E ( D
	aritmético
	* / %
	E ( D
	aritmético
	+ -
	E ( D
	relacional
	< > <= >=
	 E ( D
	relacional
	== !=
	E ( D
	lógico
	&&
	E ( D
	lógico
	||
	E ( D
	condicional
	?:
	E ( D
	atribuição
	= += -= *= /= %= 
	E ( D
6.2 	Operadores de Atribuição Aritmética
	Muitas vezes queremos alterar o valor de uma variável realizando alguma operação aritmética com ela.
A linguagem C++ apresenta instruções otimizadas com o uso de operadores ditos operadores de atribuição aritmética. Os símbolos usado são (+=, -=, *=, /= , %=). 
Sintaxes: 
	var += exp;
var -= exp; 
var *= exp; 
var /= exp; 
var %= exp;
	var = var + exp;
var = var - exp; 
var = var * exp; 
var = var / exp; 
var = var % exp;
onde var é o identificador da variável e exp é uma expressão válida. Estas instruções são equivalentes as seguintes:
�
Exemplos: 
	Atribuição Aritmética
	Instrução Equivalente
	cont += 1; 
j -= i ; 
num *= 1 + k;
divide /= 5; 
resto %= 2; 
	cont = cont + 1;
j = j – i ;
num = num * (1 + k);
divide = divide / 5;
resto = resto % 2;
O operador de atribuição aritmética tem precedência menor que os outros operadores até aqui discutidos.
6.3 	Operadores Incrementais
	Em programação existem instruções muito comuns chamadas de incremento e decremento. Uma instrução de incremento adiciona uma unidade ao conteúdo de uma variável. Uma instrução de decremento subtrai uma unidade do conteúdo de uma variável. 
Existem, em C++, operadores específicos para realizar as operações de incremento (++) e decremento (--). Eles são genericamente chamados de operadores incrementais.
Sintaxe: 
	
	Instrução Equivalente
	++ var;
var ++ ; 
-- var ; 
var -- ; 
	var = var + 1;	
var = var + 1;
var = var – 1;
var = var – 1;
onde var é o nome da variável da qual se quer incrementar ou decrementar um unidade. 
Observe que existe duas sintaxes possíveis para os operadores: pode-se colocar o operador como prefixo ou como sufixo. Nos dois casos o valor da variável será incrementado (ou decrementado) de uma unidade. Porém se o operador for colocado como sufixo, o valor da variável será incrementado (ou decrementado) antes que a variável seja usada em alguma outra operação. Caso o operador seja colocado como sufixo, o valor da variável será incrementado (ou decrementado) depois que a variável for usada em alguma outra operação. 
	#include <iostream>
using namespace std;
int main()
{ int n,n1,n2,pre,suf; 
 cout<<"\nnumero:";
 cin>>n;
 n1=n; //para nao perder o valor de n
 n2=n; //para nao perder o valor de n
 pre=++n1;
 cout<<"\n\nprefixo= "<<pre<<"\t n= "<<n1<<endl;
 suf=n2++;
 cout<<"\n\nsufixo= "<<suf<<"\t n= "<<n2<<endl;
 cin.get();cin.get();
}
	
 
6.4 	Operadores Relacionais e Lógicos
	
	As expressões lógicas usadas nas estruturas de teste são formadas pelos operadores relacionais e lógicos. 
6.4.1	Operadores relacionais
Operadores relacionais verificam a relação de magnitude e igualdade entre dois valores. São seis os operadores relacionais em C:
	Operador
	Significado
	>
<
>=
<=
==
!=
	maior que
 menor que
maior ou igual a 
menor ou igual a 
igual a
diferente de
 Sintaxe: 
	expressão_1 operador expressão_2
onde expressão_1 e expressão_2 são duas expressões numéricas quaisquer, e operador é um dos operadores relacionais.
	Ao contrário de outras linguagens, em C++ não existem tipos lógicos, portanto o resultado de uma expressão lógica é um valor numérico: uma expressão avaliada verdadeira recebe o valor 1, uma expressão lógica avaliada falsa recebe o valor 0.
Os operadores relacionais de igualdade (== e !=) tem precedência menor que os de magnitude (>, <, >= e <=). Estes, por sua vez, tem precedência menor que os operadores aritméticos. 
�
6.4.2	Operadores lógicos
São três os operadores lógicos de C: &&, || e !. Estes operadores têm os mesmos significados dos operadores lógicos Booleanos AND, OR e NOT. 
Sintaxes: 
	expr_1 && expr_2
expr_1 || expr_2
!expr
 onde expr_1 , expr_2 e expr são expressões quaisquer. 
Observe que os operadores lógicos atuam sobre expressões de quaisquer valores. Para estes operadores todo valor numérico diferente de 0 é considerado 1.
	Operador
	Matemática
	C
	conjunção
disjunção
negação
	 e ^
 ou v 
 não |
	&& 
|| 
!
TABELA VERDADE DO OPERADOR &&
Suponha duas perguntas feitas a quatro pessoas. Se a resposta do candidato for negativa, deverá falar 0, caso contrário, falará 1.
Suponha também que só será chamado para entrevista o candidato que dominar as duas linguagens.
	 Você conhece C++?
	Você conhece PASCAL?
	SAÍDA
	0
	0
	0
	0
	1
	0
	1
	0
	0
	1
	1
	1
Neste exemplo, somente o quarto candidato seria chamado para a entrevista, pois o operador && (e), só considera a expressão como verdadeira se todas as expressões testadas forem verdadeiras.
 
TABELA VERDADE DO OPERADOR ||
Suponha duas perguntas feitas a quatro pessoas. Se a resposta do candidato for negativa, deverá falar 0, caso contrário, falará 1.
Suponha também que será chamado para entrevista o candidato que dominar pelo menos uma linguagem.
	 Você conhece C++?
	Você conhece JAVA?
	SAÍDA
	0
	0
	0
	0
	11
	1
	0
	1
	1
	1
	1
Neste exemplo, somente o primeiro candidato não seria chamado para a entrevista , pois o operador || (ou), considera a expressão como verdadeira se, pelo menos uma expressão testada for verdadeira.
 Observação:O Operador && tem precedência sobre o operador ||. Estes dois têm precedência menor que os operadores relacionais. 
TABELA VERDADE DO OPERADOR !
Suponha uma pergunta feita a duas pessoas. Se a resposta do candidato for negativa, deverá falar 0, caso contrário, falará 1.
	Você Não conhece C++?
	SAÍDA
	1
	0
	0
	1
Observação:
O operador ! tem a mesma precedência que os operadores incrementais. 
7. Estruturas de seleção - if / switch
Nossos programas até agora seguiram um mesmo padrão: entrava-se com dados, estes eram processados e alguma informação era mostrada na tela.
Agindo desta forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos conceitos como a da estrutura de seleção nos dará uma visão maior da complexidade de tarefas que ele poderá executar. 
7.1	Estrutura de decisão - if...else
	
A estrutura if...else é uma estrutura de controle do C++ muito fácil de ser usada Após o teste, o fluxo poderá seguir dois caminhos, isto é, se o teste resultar em uma verdade, será executado o comando ou bloco de comandos que se encontra após o fecha parênteses do teste, caso contrário, se existir, será executado o comando ou bloco de comandos que se encontra após o comando else. 
�
7.1.1 	Estrutura de decisão com um bloco
Sintaxe: 
	 if(condição)
 {
 bloco
 }
onde:	condição é uma expressão lógica ou relacional.
	bloco é um conjunto de instruções, separadas por ponto-e-vírgula. 
 { e } só serão obrigatórias se tiver mais de uma ação para ser executada.
Se a condição for verdadeira, o bloco é executado. Caso contrário, o bloco não é executado.
7.1.2 	Estrutura de decisão com dois blocos
Sintaxe:
	 if(condição)
 {
 bloco
 }
 else
 {
 bloco
 }
 onde:	condição é uma expressão lógica ou relacional.
 bloco 1 e bloco 2 são conjuntos de instruções.
Se a condição for verdadeira o bloco 1 é executado. Caso contrário, o bloco 2 é executado.
7.1.3	Decisão de múltiplos blocos (if...else if...)
Muitas vezes, nossos programas poderão envolver várias condições excludentes. Programas que envolvem faixas salariais ou faixas de idades são exemplos clássicos do uso da instrução if ... else if ... .
Sintaxe: Decisão de múltiplos blocos:
	if(condição 1)
{
 bloco 1
}
...
else if(condição N)
{
 bloco N
}
else
{
 bloco P
 }
 onde:condição 1, condição 2, ... são expressões lógicas ou relacionais.
 bloco 1 , bloco 2,... são conjuntos de instruções.
Se a condição 1 for verdadeira o bloco 1 é executado. Caso contrario, as condições serão avaliadas, sucessivamente até que seja verdadeira ou chegue ao último else, onde o bloco P seria executado. Observe que apenas um dos blocos é executado.
7.2 	Estrutura switch...case
A estrutura switch...case, também conhecida como alternativa de múltiplas escolhas, é uma estrutura que simplifica nossos programas no uso de decisão de múltiplos blocos quando a expressão de controle( a condição) envolver tipos int ou char(de um caracter que também é considerada inteira). O resultado desta expressão é comparado ao valor de cada um dos rótulos, e os comandos são executadas a partir desde rótulo. 
Sintaxe:
	switch(expressão)
{
 case rótulo_1:
 bloco1;
 break;
 case rótulo_2:
 bloco2 
 break;
 ...
 case rótulo_n:
 bloco n
 break;
<default:
 bloco d>
 }
 onde: expressão é uma expressão inteira ou char de um caracter.
 rótulo_1,rótulo_2,...rótulo_n e rótulo_d são constantes inteiras ou char
 de um caracter.
	 bloco 1, bloco 2, ..., bloco n e bloco d são conjuntos de instruções.
Execução:
 A expressão é avaliada e o fluxo desviado para o conjunto cujo rótulo é igual ao resultado da expressão. O bloco abaixo do rótulo é executado. Se o valor da expressão não for igual a nenhum rótulo, o bloco do defualt é executado. Você não é obrigado a colocar o rótulo do default e por esta razão ele se encontra entre os sinais de menor e maior. 
Por que usar break?
 Normalmente, em outras linguagens de programação, após a avaliação da expressão e a execução do bloco correspondente, o fluxo do programa passa para a pro'xima instrução, ignorando todos os outros rótulos. Na linguagem C++ isto não acontece e poderá trazer sérias conseqüências em seus programas. O uso do break forçará a saída do comando switch e a execução do próximo comando. 
Existirá alguma situação que não será necessário usar break?
Sim. Lembre-se do exercício dos triênios. 
8. Estruturas de repetição 
Três são as estruturas de repetição disponíveis na linguagem C++: for, while e do ... while. Em todas as estruturas estará presente pelo menos uma expressão para controlar a repetição.
8.1 Estrutura de repetição: for
A estrutura do for é a mais simples estrutura de repetição e é usada para repetir um ou vários comandos tantas vezes quanto desejarmos. É a estrutura mais indicada quando o número de repetições for conhecido embora, as outras duas estruturas também possam ser usadas. O controle do número de repetições, na maioria das vezes, é feito por uma variável chamada de variável contadora.
A estrutura do for na linguagem C++ é um pouco diferente das demais linguagens, pois a condição pode não se prender somente a uma variável contadora.
	
�
 Sintaxes:
	for (inicialização;condição;incremento) declaração;
	for (inicialização ;condição ;incremento)
{
 bloco de comandos
}
onde:	inicialização é uma expressão de inicialização da variável contadora e só é 
 executada uma vez..
condição é uma expressão lógica de controle de repetição.
	incremento é uma expressão de incremento da variável contadora.
bloco de comandos é um conjunto de instruções a ser executado.
 
8.2 Estrutura de repetição: while
A estrutura while é uma estrutura "poderosa" da programação. Muitos programadores fazem uso somente desta estrutura. Ela testa primeiro a condição e poderá nem executar o bloco caso a condição seja falsa. Logo, a estrutura do while repete enquanto a condição for verdadeira.
Ë importante que a variável presente na condição tenha seu valor alterado dentro da repetição, pois, caso contrário, entrará em loop.
Normalmente, todos os autores mostram simplesmente a sintaxe da estrutura, mas esquecem de informar como na prática ela deverá ser escrita.
Abaixo, apresentarei a sintaxe geral e a sintaxe usada na prática:
	Sintaxe 
	
	Sintaxe na prática
	while(condição)
{
 bloco de comandos
}
	
	atribuição ou leitura da variável presente na condição
while(condição)
{
 bloco de comandos
 atribuição ou leitura da variável presente na condição
}
onde:	condição é uma expressão lógica ou numérica.
bloco de comandos é um conjunto de instruções.
�
8.3	Estrutura de repetição: do...while
Esta estrutura é parecida com while. Sua diferença é que o bloco é executado pelo menos uma vez, pois testa ao final. Esta estrutura repete enquanto a condição for verdadeira.
Sintaxe:
	do
{
 bloco de comandos
}
while(condição);
onde:	condição é uma expressão lógica ou numérica.
bloco de comandos é um conjunto de instruções.
8.4 Comandos associados
As estruturas de repetição podem, mas não devem, sofrer desvios e interrupções em sua seqüência normal.
8.4.1 break
Assim como o foi usado para interromper o comando switch, poderá ser usado com qualquer um dos três comandos de repetição.
9 Estruturas
As estruturas em C++ podem ser homogêneas e heterogêneas. Inicialmente, vamos abordar as homogêneas, pois são mais familiares uma vez que conhecemos seu conceito da matemática quando estudamos matrizes.
9.1 Estruturashomogêneas
Em C++, o uso de matrizes é de fundamental importância e existe uma relacionamento estreito entre matrizes e ponteiros que estudaremos mais adiante.
A grande novidade que estudaremos será o uso de matrizes com estruturas heterogêneas.
As matrizes são tabelas na MP e podem ter uma ou mais dimensão. Quando tem somente uma dimensão, também chamamos de vetor.
Na linguagem C++, como já vimos, uma variável char ,que precisa armazenar mais de um caracter, faz uso de matriz, pois podemos acessar cada um de seus caracteres em separado, usando o nome da variável e sua posição entre colchetes.
	
Por que será que na linguagem C++ a posição do primeiro caracter é 0 ?
O endereço guardado é o do primeiro caracter que chamamos de base, logo qualquer outro caracter será acessado pelo endereço base mais sua posição. Se o endereço é o da primeira posição, somente o 0 poderia ser acrescido para permanecer na mesma posição.
Se declararmos pal com tamanho 5, lembre-se de que só podemos usar 4 posições, pois uma reservada para o finalizador \0 que indica o fim do vetor.
É bom você já ir se acostumando com este conceito de apontamento, pois para se programar bem em C, precisaremos dominar o conceito de ponteiros.
9.1.1 Declarando uma matriz:
 tipo nome do conjunto [ ... ] [ ...] ... ; 
Exemplos:
/* declara uma matriz unidimensional de 5 elementos inteiros */
 int num[ 5 ]; 
/* declara uma matriz bidimensional com 100 linhas e 4 colunas do tipo float */
 float notas [ 100 ][ 4 ]; 
/* declara uma matriz bidimensional com 100 linhas e 30 colunas do tipo char */
 char nomes [ 100 ][ 30 ]; 
 Toda matriz para guardar nomes, na linguagem C++, é bidimensional, pois o primeiro índice indica a quantidade de nomes e o segundo o número de caracteres –1 que serão armazenados em cada nome.
9.1.2 Armazenamento
O armazenamento na matriz poderá ser feito através de um comando de leitura ou de atribuição.
�
9.1.2.1 Leitura
	/*um dimensao */
 ...
 for(a=0;a<tamanho;a++)
 { 
 cout<<"\n…: "<<a+1; 
 cin>>nomeVetor[a];
 }
 ...
	/*duas dimensoes */
 ...
 for(L=0;L<tamanhoLinha;L++)
 for(c=0;c<tamanhoColuna;c++)
 { 
 cout<<”\nNumero da linha “<<L+1<<” coluna "<<c+1<<”: “;
 cin>>nomeMatriz[L][c];
 }
 ...
 
9.1.2.2 Atribuição
Podemos também inicializar as matrizes através de atribuições:
Exemplos:
int vet[4]={6,7,8,9};
float nota[3]={8.5,6.2,9.8};
char nome[12]="João Renato";
char nomes[4][30]={"JOÃO", "MARIA", "PEDRO","FILIPE"};
int mat[][3]={1,2,3,4,5,6,7,8,9};
/* na declaração/atribuição acima, é assumido 3 como número de linhas */
	#include <iostream>
using namespace std;
int main()
{int L,c; 
 int ias_meses[][12]={31,28,31,30,31,30,31,31,30,31,30,31,31,29,31,30,
 31,30,31,31,30,31,30,31};
 cout<<"\n\nPara anos nao bissextos, primeira linha e para bissextos, segunda linha\n\n"; 
 for(L=0;L<2;L++)
 { for(c=0;c<12;c++)
 cout<<dias_meses[L][c]<<" ";
 cout<<"\n\n"; 
 }
 system("pause"); 
}
	
9.1.3 Saída 
	/*um dimensao – MATRIZ COLUNA*/
 ...
 system(“cls”);
 cout<<”\nTitulo\n”;
 for(a=0;a<tamanho;a++)
 cout<<"\n…: "<<nomeVetor; 
 ...
	/*um dimensao – MATRIZ LINHA*/
 ...
 system(“cls”);
 cout<<”\nTitulo\n”;
 for(a=0;a<tamanho;a++)
 cout<<nomeVetor <<"\t"; 
 ...
	/*duas dimensoes TODOS OS ELEMENTOS*/
 ...
 system(“cls”);
 cout<<”\nTitulo\n”;
 for(L=0;L<tamanhoLinha;L++)
 { for(c=0;c<tamanhoColuna;c++)
 cout<<nomeMatriz[L][c]<<"\t";
 cout<<”\n“;
 }
 ...
	/*duas dimensoes ALGUNS ELEMENTOS*/
 ...
 system(“cls”);
 cout<<”\nTitulo\n”;
 for(L=0;L<tamanhoLinha;L++)
 { for(c=0;c<tamanhoColuna;c++)
 if( condição ) 
 cout<<nomeMatriz[L][c]<<"\t";
 else
 cout<<"\t"; 
 cout<<”\n“;
 }
 ...
	Condição
(L==c)
só diagonal Principal
(L!=c)
todos menos a diagonal Principal
(L<c) elementos acima da diagonal principal
(L>c) elementos abaixo da diagonal principal
�
9.1.4 Matrizes somaLinha e somaColuna
 9.1.4.1 Matriz somaLinha
 
 É uma matriz unidimensional(vetor ou matriz coluna) que terá tantas linhas quantas forem as linhas da matriz original e cada elemento será a soma de todos os elementos da linha correspondente na matriz original. Em outras palavras, cada elemento soma de todos os elementos das colunas de uma linha.
9.1.4.1.1 Inicializando a matriz somaLinha
 
 Como é uma matriz de acumuladores precisa ser inicializada.
	for(L=0; L<tamanhoLinha; L++) 
 somaLinha[L]=0;
9.1.4.1.2 Gerando a matriz somaLinha
 
	for(L=0;L< tamanhoLinha;L++)
 for(C=0;C< tamanhoColuna;C++)
 somaLinha[L]+=mat[L][C];
9.1.4.1.3 Imprimindo a matriz somaLinha sozinha
 
	for(L=0;L< tamanhoLinha;L++)
 cout<<somaLinha[L]<<”\n”;
cout<<endl;
9.1.4.1.4 Imprimindo a matriz somaLinha com a matriz original
 
	system("cls");
cout<<"\nMatriz Original com matriz SomaLinha\n\n";
for(L=0;L< tamanhoLinha;L++)
{ for(C=0;C< tamanhoColuna;C++)
 cout<<matOriginal[L][c]<<"\t";
 cout<<somaLinha[x]<<"\n";
} 
9.1.4.2 Matriz somaColuna
 
 É uma matriz unidimensional(vetor ou matriz linha) que terá tantas colunas quantas forem as colunas da matriz original e cada elemento será a soma de todos os elementos da coluna correspondente na matriz original. Em outras palavras, cada elemento é a soma de todos os elementos das linhas de uma coluna.
9.1.4.2.1 Inicializando a matriz somaColuna
 
 Como é uma matriz de acumuladores precisa ser inicializada.
	for(c=0; c<tamanhoColuna; c++) 
 somaLinha[c]=0;
9.1.4.2.2 Gerando a matriz somaColuna
 
	for(L=0;L< tamanhoLinha;L++)
 for(c=0;c< tamanhoColuna;c++)
 somaColuna[c]+=mat[L][c];
9.1.4.2.3 Imprimindo a matriz somaColuna sozinha
 
	for(c=0;L< tamanhoColuna;c++)
 cout<<somaColuna[c]<<”\t”;
cout<<endl;
9.1.4.2.4 Imprimindo a matriz somaColuna com a matriz original
 
	system("cls");
cout<<"\nMatriz Original com matriz SomaColuna\n\n";
for(L=0;L< tamanhoLinha;L++)
{ for(c=0;c< tamanhoColuna;c++)
 cout<<matOriginal[L][c]<<"\t";
 cout<<"\n";
}
for(c=0;c< tamanhoColuna;c++)
 cout<<somaColuna[c]<<"\t"; 
cout<<"\n"; 
9.1.3 Operações
Em relação às matrizes numéricas, podemos realizar todas as operações que já conhecemos com matrizes: produto escalar, soma, subtração, multiplicação por escalar, multiplicação de matrizes, cálculo do determinante, etc.
10 Funções
 
 10.1 Conceito
Função é um trecho de programa com atribuições específicas, simplificando o entendimento do programa, proporcionando ao programa menores chances de erro e de complexidade. 
A linguagem C++ é formada de várias funções.
10.2 Vantagens
As funções através da passagem de parâmetros e através do seu nome permitem que sejam retornados valores à rotina chamadora e desta forma, esses valores poderão ser impressos, atribuídos a uma variável ou podem servir em operações aritméticas entre outras. 
 Os principais objetivos de uma função são:	
Dividir e estruturar um algoritmo em partes logicamente coerentes;
Facilidade em testar os trechos em separados;
O programador poderá criar sua própria biblioteca de funções, tornando sua programação mais eficiente uma vez que poderá fazer uso de funções por ele escritas em vários outros programas com a vantagem de já terem sido testadas;
Maior aumentar a legibilidade de um programa;
Evitar que uma certa seqüência de comandos necessária em vários locais de um programa tenha que ser escrita repetidamente nestes locais, diminuindo também, o código fonte, ;
Tudo isto justifica o uso de funções em nossos programas
10.3. Funções Pré-definidas
O conjunto de funções pré-definidas é muito extenso e aqui vamos estudar algumas funções das bibliotecas: cmath, cstring.
Quando estudamos uma função, temos vários parâmetros a observar. Veja, por exemplo a seguinte função pré-definida da biblioteca cmath:
double sqrt(double x)
Este é o protótipoda função, isto é, informações sobre o tipo de retorno da função e tipos dos parâmetros.
Esta função retorna um valor double, seu nome é sqrt e o tipo da variável que recebe o valor passado é double.
Quando você criar suas funções, elas precisarão ter uma declaração semelhante a esta.
As funções poderão ser localizadas antes da função principal(main) ou depois. Se uma função for declarada antes, o protótipo da função não precisará ser declarado na função main, mas se declarada depois, o protótipo precisará ser declarado na função main. 
Declaração de uma função:
	tipo
	identificador
	(lista de parâmetros)
	int, float, char, void
	Nome da função 
	( tipo1 nome1, tipo2 nome2 )
Exemplos:
int quadrado(int l)
char maiuscula(char n[] )
10.3.1 Funções Numéricas 
Biblioteca: cmath
	#include <iostream>
#include <cmath>
#define PI 3.14159265
using namespace std;
int main()
{ float f;
 cout<<"\nFUNCOES NUMERICAS\n";
 cout<<"\nDigite numero real: ";
 cin>>f;
 cout<<"\nNumero: "<<f;
 cout<<"\nABSOLUTO: "<<fabs(f);
 cout<<"\nCEIL: "<<ceil(f);
 cout<<"\nFLOOR: "<<floor(f);
 cout<<"\nTRUNC: "<<trunc(f);
 cout<<"\nROUND: "<<lround(f);
 cout<<"\nFMOD: "<<fmod(f,3);
 cout<<"\nSQRT: "<<sqrt(f+0.5);
 cout<<"\nSeno de 30: "<<sin(30*PI/180);
 cout<<"\nCo-seno de 30: "<<cos(30*PI/180);
 cout<<"\nTangente de 30: "<<tan(30*PI/180);
 cout<<"\nPotencia de 2 elevado a 3: "<<pow(2.0,3);
 cout<<"\nLogaritmo de 8 na base neperiana: "<<log(8.0);
 cout<<"\nLogaritmo de 8 na base 10: "<<log10(8.0);
 cout<<"\nLogaritmo 8 na base 2: "<<log(8.0)/log(2.0);
 cout<<"\nRaiz cubica de 8: "<< pow(8,1.0/3);
 cout<<"\n\n";
 system("pause");
}
	
10.3.2 Funções Strings 
Biblioteca: cstring, cctype
	#include <iostream>
#include <cstring>
#include <cctype>
using namespace std;
int main()
{char c,s1[40],s2[30];
 cout<<"\nBIBLIOTECA cctype\n";
 cout<<"\nLetra: ";
 cin>>c;cin.get();
 c=toupper(c);
 cout<<"Convertida para maiuscula: "<<c;
 c=tolower(c);
 cout<<"\nConvertida para minuscula: "<<c;
 cout<<"\n\nBIBLIOTECA cstring\n";
 cout<<"\nDigite palavra: "; cin.getline(s1,30); 
 strcat(s1,"FIM");
 cout<<"\nConcatenacao com FIM: "<<s1;
 cout<<"\nDigite palavra: "; cin.getline(s2,30); 
 strcpy(s1,s2);
 cout<<"\nApos copia de toda palavra2: "<<s1;
 cout<<"\nTamanho de s2: "<<strlen(s2);
 cout<<"\n\nComparando strings\n";
 cout<<"Digite PAZ: "; cin.getline(s1,30);
 cout<<"Digite PAZ: "; cin.getline(s2,30);
 if(strcmp(s1,s2)==0)
 cout<<"\nIGUAIS";
 else
 cout<<"\nDiferentes";
 cout<<"\nDigite PAZ: "; cin.getline(s1,30);
 cout<<"Digite AMOR: "; cin.getline(s2,30);
 if(strcmp(s1,s2)!=0)
 cout<<"\nDIFERENTES";
 else
 cout<<"\nIguais";
 cout<<"\n";system("pause");
}
	
10.4. Diretiva #define
Define um identificador e um conteúdo que irá ser substituído toda vez que o identificador aparecer em um programa.
Esta diretiva pode ser associada a uma string ou a uma macro semelhante a uma função.
Se o tamanho da macro for pequena, substitui com vantagens o uso de funções.
Exemplo 1:
	#include <iostream>
#define quadrado(x) ((x)*(x))
#define pi (3.14159265)
#define NP (2.71828182846)
#define conv(x) ((x)*(pi)/(180))
...
Exemplo 2:
	#include <iostream>
#define AREA(b,h) (b*h)
…
Exemplo 3:
	#include <iostream>
#define HIPO(c1,c2) (sqrt(c1*c1+c2*c2))
…
10.5 Chamada da função
	
Quando uma função é chamada, o fluxo de controle é desviado para a função, no momento em que ela é ativada no algoritmo principal. Ao terminar a execução dos comandos da função, o fluxo de controle retorna ao ponto que foi ativada.
	main()
	
	funcao1( ...)
{ ...
 retorna(...);
}
	{...
	
	
	...
	
	
	< chamada da função 1 >
	
	...
	...
	}
	
	
Bibliografia:
LOPES, Anita, GARCIA, Guto. Introudção à Programação- 500 Algoritmos. 6 ed.Rio de Janeiro: Campus, 2002.
LOPO,Erik de Castro, JONES Bradlely, AIKTEN Peter. C for Linux Programming .SAMS
EVARISTO, Jayme. Aprendendo a Programar em C. Rio de Janeiro: Book Express, 2001.
Kernighan, Brian W. Ritchie, Dennis M. C- A linguagem de Programação padrão ANSI . Rio de Janeiro , Campus , 2002
MIZRAHI, V.V. Treinamento dem liguagem C – Curso completo.Módulos 1 e 2. São Paulo: Mc Graw Hill, 1990
MRALES,Celso R. Estruturas de daos e Algoritmos. São Paulo: Berkley,2001.
SCHILDT, Herbert. C completo e total. Makron Book 
UFMG. Apostila de C.
UNIVERSIDADE DE CAXIAS DO SUL. Apostila de C.
PROF. SILVIO – Anotações. ni.faj.br/nourau/document/get.php/2934/aula8.pdf
Anexo I
VARIÁVEL CARACTER
COMPARAÇÃO / ATRIBUIÇÃO e CONCATENAÇÃO
 Quando se compara duas variáveis caracter, estamos comparando, na verdade, caracter a caracter baseado no valor do código ASCII de cada caracter. Desta forma, não é difícil entender o uso do sinal de > , < ou de = .
Usar o sinal de > significa perguntar se a variável caracter vem depois na ordem alfabética (< vem antes) , uma vez que o código ASCII está em ordem alfabética, isto é, a letra A tem um código menor do que a letra B e assim, sucessivamente.
ALGUMAS QUESTÕES
 1) COMPARAÇÃO 
 Algumas linguagens permitem que se monte uma expressão relacional com os
 nomes das variáveis: 
 se (NOME1 > NOME2) então ...
 outras linguagens não permitem e oferecem funções que viabilizam esta operação:
 if (strcmp( NOME1, NOME2) = 0) ( nomes iguais) ...
 if (strcmp ( NOME1, NOME2) > 0) ( primeiro vem depois) ...
 if (strcmp ( NOME1, NOME2) < 0) ( primeiro vem antes) ... 
ATRIBUIÇÃO 
 Algumas linguagens permitem que se atribua uma variável caracter à outra variável caracter: 
 AUX = NOME1;
 outras linguagens não permitem e oferecem funções que viabilizam esta operação:
 strcpy(AUX, NOME1);
CONCATENAÇÃO 
Algumas linguagens têm o operador + ( coloca o conteúdo de uma após o da outra): 
 NOME1 = NOME1 + NOME2;
 outras linguagens não permitem e oferecem funções que viabilizam esta operação:
 strcat(NOME1, NOME2);
 
FUNÇÃO Conta caracter
É uma função retorna a quantidade de caracteres de uma string(vetor de char, veja mais adiante).
Variável nome
	A
	N
	I
	T
	A
	
	L
	O
	P
	E
	S
Total de caracteres: 11
tam= strlen(nome); /*biblioteca string.h */
FUNÇÃO MAIUSCULA
É uma função que converte uma letra minúscula em maiúscula.
Todos os caracteres cujos códigos estão compreendidos entre 97 - 122, serão subtraídos de 32 e se tornarão códigos compreendidos entre 65 - 90, códigos das letras maiúsculas no código ASCII.
Seu argumento não pode ser uma parte de uma cadeia, logo, sub não pode ser usada como argumento desta função.
nome[posicao] = toupper(nome[posicao]);
Exemplo do trecho que converte todo o conteúdo de uma variável caracter para letras maiúsculas, sem considerar letras acentuadas:
	Linguagem C
	for( x= 0; x< strlen(nome);x++)
 nome[x]=toupper(nome[x]);
VARIÁVEL CARACTER - UMA NOVA VISÃO
 A variável simples caracter é armazenada na memória como se fosse um vetor conforme esquema abaixo:
Linguagem C variável caracter
	
	
	
	
	
	
	
	
	
	
	\0
	
	byte 0
	byte1
	byte 2
	byte 3
	byte 4
	byte 5
	byte 6
	byte 7
	byte 8
	byte 9
	
	........
O byte 0 é usado para o primeiro caracter e o vetor é finalizado com \0
Conclusão:
Analisando sobre este prisma, podemos dizer que a variável simples caracter é um conjunto de n variáveis caracter de um único caracter e todas com o mesmo nome.
A representação de cada caracter da variável se fará da seguinte maneira:
	nome da variável [ posicao ]
� PAGE �32�

Outros materiais