Buscar

apostila3

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 3, do total de 9 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 6, do total de 9 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

Você também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes

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ê também pode ser Premium ajudando estudantes
Você viu 9, do total de 9 páginas

Prévia do material em texto

APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.1 Segunda revisão / 2002 
 
II.. EELLEEMMEENNTTOOSS DDAASS LLIINNGGUUAAGGEENNSS CC EE CC++++ 
I.A. Série de caracteres válidos I.A 
A seguir são apresentados o conjunto de caracteres que são aceitos nas linguagens C e 
C++. Observe-se, no entanto, que nem todos estes caracteres podem ser utilizados para a criação 
de identificadores (ver seção I.F), e alguns deles têm utilização especial (ver seções I.C, I.G, e 
I.H). 
letras A ... Z 
a ... z 
dígitos 0 a 9 
caracter de sublinhado _ 
caracteres de espaço em 
branco 
são ignorados pelo compilador, a menos que sejam 
utilizados como separadores de constantes caracter 
(seção I.D.3) ou identificadores (seção I.F). Os seguintes 
caracteres são considerados espaços em branco: espaço 
em branco, tab, “carriage-return” (CR), “formfeed”, tab 
vertical e “newline”. Comentários são tratados como 
caracteres de espaço em branco (ver seção I.G)I.G. 
caracteres especiais têm significado especial em C e C++ (tabela I.1) e serão 
discutidos oportunamente. Muitos desses caracteres 
especiais têm vários usos (exemplos na tabela I.9). O 
compilador determina o uso a partir do contexto em que 
são utilizados. 
 
Tabela I.1 : Caracteres especiais 
vírgula , maior que > 
ponto . exclamação ! 
ponto e vírgula ; barra simples | 
dois pontos : barra / 
interrogação ? barra reversa \ 
apóstrofe ‘ til ~ 
aspas “ soma + 
abre parenteses ( cardinal # 
fecha parenteses ) percentagem % 
abre colchete [ e comercial & 
fecha colchete ] circunflexo ^ 
abre chave { asterisco * 
fecha chave } menos - 
menor que < igual = 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.2 Segunda revisão / 2002 
 
I.B. Tipos de Dados 
 
I.B.1. Tipos Intrínsecos I.B.1 
Os tipos de dados intrínsecos das linguagens C e C++ são os mesmos da maioria das 
linguagens algorítmicas. As palavras chave utilizadas por estas linguagens para os tipos intrínsecos 
são apresentadas na tabela a seguir. 
Tabela I.2 : Tipos de dados intrínsecos 
Inteiro int 
Real float 
real de dupla precisão double 
Caracter char 
void void 
Observação : 
Na realidade, o tipo caracter (char) é um tipo de variável inteira. 
 
Observação: 
Em C não é definido o tipo intrínseco string (conjunto de caracteres que formam uma 
palavra ou frase). Para a construção de uma palavra ou frase em C deve ser utilizado 
um vetor de caracteres com um caracter de terminação obrigatório ( \0 - consulte as 
seções I.C e I.D.4). Esse caracter é utilizado para identificar o final da string. 
 
Modificadores de tipo: São palavras reservadas que, utilizadas à frente dos tipos intrínsecos, 
alteram seus limites (tabela I.3). 
Tabela I.3 : Modificadores de tipo 
unsigned o tipo a seguir deve ser considerado sem sinal. 
exemplo: unsigned int a; 
signed o tipo a seguir deve ser considerado com sinal (comportamento padrão) 
exemplo : signed int é equivalente a int 
short indica que o inteiro deve ser de 2 bytes 
long utilizado à frente do especificador de tipo int indica que um inteiro deve ocupar 4 bytes. 
Utilizado à frente do especificador de tipo double indica que uma variável real deve ocupar 
mais de 8 bytes (depende de implementação do compilador). 
Tabela I.4 : Tipos fundamentais de inteiros 
tipo tamanho em bytes valores máximos e mínimos 
char 1 -128 a 127 
unsigned char 1 0 a 255 
short int 2 -32768 a 32767 
unsigned short int 2 0 a 65535 
int 2 ou 4 (depende de implementação) 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.3 Segunda revisão / 2002 
 
long int 4 ou 8 para 4 bytes: -2147483648 a 2147483647 
unsigned long int 4 ou 8 para 4 bytes : 0 a 4294967295 
Tabela I.5 : Tipos fundamentais de números reais 
tipo tamanho em bytes expoentes mínimos e 
máximos 
menor valor positivo 
float 4 -37 e 38 1.17549435E-38 
double 8 -307 e 308 2.2250738585072014E-308 
long double 12 ou 16 
(depende de implementação) 
para 12 bytes 
-4931 e 4932 
 
Observação: 
Valores limites de cada tipo são apresentados nos arquivos de cabeçalho denominados 
limits.h e float.h). 
 
I.B.2. Tipos derivados 
São tipos construídos pelos usuários a partir dos tipos fundamentais. São exemplos de tipos 
derivados: 
• vetores de objetos de um tipo determinado; 
• classes; 
• estruturas; 
• unions; 
• ponteiros para objetos ou funções. 
 
Tipos de dados derivados serão tratados oportunamente, durante o decorrer do curso. 
I.B.3. Modificador CONST 
A palavra chave const pode ser utilizada tanto para as declarações de variáveis e objetos 
como para declaração de funções. Veja as sintaxes a seguir 
 
Sintaxe para varáveis e objetos: 
const tipo identificador; 
 
tipo pode ser qualquer um dos tipos intrínsecos definidos no capítulo I, subseção B (I.B), ou tipos 
derivados (tais como, ponteiros, structs e classes). 
Exemplos: 
const int var = 5; 
const double PI = 3.14159265; 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.4 Segunda revisão / 2002 
 
 
 
Quando const é usado numa declaração de variáveis ou objetos, ela especifica que o objeto 
não é modificável, ou seja, o valor atribuído à variável, ou os atributos de um objeto não podem 
ser modificados (são constantes) durante a execução do programa. 
Na linguagem C++ a palavra chave const pode ser usada para definir um valor constante, 
ao invés da diretiva de pré-processamento #define (ver capitulo II). A vantagem de se usar 
variáveis declaradas constantes ao invés da constantes definidas por diretivas é que os valores 
podem ser verificados quanto ao tipo de dado durante a compilação e estes podem ser utilizados no 
lugar de expressões constantes. 
Uma das vantagens do uso de variáveis declaradas constantes é que é possível definir um 
ponteiro para essa variável, e esse ponteiro pode ser utilizado como parâmetro de uma função. 
Esse procedimento, em princípio, evita que uma função modifique, acidentalmente, o parâmetro 
passado por referência. 
O modificador pode ser utilizado também na declaração de funções membro (classes), 
seguindo a lista de parâmetros. Neste caso, essa palavra chave indica que a a função não modifica 
o objeto pela qual ela foi invocada. Maiores informações sobre este tópico serão dados na seções 
que envolvem estruturas específicas para programação orientada o objetos em C++. 
 
I.B.4. typedef 
É uma instrução do C e do C++ (palavra reservada) que permite definir um novo tipo de 
dado. Este novo tipo se comporta, no que diz respeito à programação, de forma similar a um tipo 
intrínseco da linguagem (seção I.B.1). A sintaxe é: 
typedef tipo novo_tipo;. 
Exemplo: 
typedef unsigned char byte; 
neste exemplo, byte passa a ser um sinônimo de unsigned char. Uma variável declarada como 
sendo do tipo char pode assumir os valores de –128 a 127, enquanto uma variável do tipo byte 
assume valores na faixa 0 a 255. 
 
I.C. Seqüências de “Escape” I.C 
São combinações de caracteres que representam um único caracter, incluíndo caracteres 
não gráficos. Uma seqüência de “escape” consiste de uma barra reversa ( \ ) seguida de uma letra 
ou combinação de dígitos, conforme apresentado na tabela I.6. 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.5 Segunda revisão / 2002 
 
Tabela I.6 : Seqüências de “escape” definidas pelo padrãoANSI 
\n nova linha 
\t tabulação horizontal 
\v tabulação vertical * 
\f alimentação de formulário * 
\b retrocesso 
\r carriage return 
\a sino 
\’ apóstrofe 
\” aspas 
\? ponto de interrogação 
\\ barra reversa 
\ddd caracter ASCII em notação octal ** 
\xddd caracter ASCII em notação hexadecimal ** 
\0 NULL (finalizador de string, correspondem à barra 
reversa seguida do númeral zero) 
* afetam a impressão e não o display 
** ddd indica a possibilidade de uso de até 3 caracteres 
Uma barra reversa seguida de um caracter “newline” (ou seja, tecla RETURN) é 
interpretado como um caracter de continuação, o que permite separar em duas ou mais linhas 
instruções muito longas. 
O padrão ANSI reserva as seqüências de “escape” de letras minúsculas. Se for utilizada 
uma letra que não esteja incluída na tabela I.6, a barra reversa é ignorada e o caracter é 
representado. Mudanças no padrão podem incluir novas seqüências, de forma que este tipo de 
prática não é recomendada para a impressão de caracteres simples. Para exemplos do uso de 
seqüências de “escape” consulte a seção I.D.4. 
I.D. Constantes 
Constantes são “valores” colocados explicitamente no programa. Na linguagem C existem 
4 tipos de constantes, apresentados a seguir. 
I.D.1. Constantes inteiras (decimal, octal ou hexadecimal) 
São consideradas constantes inteiras os valores do tipo short int, long int, unsigned int, etc. 
Exemplos de constantes inteiras são: 
132 0204 (octal) 0x84 (hexadecimal) 0X84 (hexa) 
32179 0766663 0x7Db3 
I.D.2. Constantes de ponto flutuante 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.6 Segunda revisão / 2002 
 
A sintaxe geral destas constantes é: 
[sinal][digitos].[digitos][E][sinal][digitos], 
onde os valores entre colchetes são opcionais (nem todos são opcionais ao mesmo tempo). 
Todas as constantes de ponto flutuante são tratadas como do tipo double. Exemplos: 
0.75 .75 75e-2 75E-2 .0075e2 
I.D.3. Constantes caracter I.D.3 
Todas as constantes caracter são do tipo inteiro (decimal, octal ou hexadecimal) e sua 
sintaxe é: 
‘caracter’, 
onde o caracter pode ser qualquer símbolo da tabela ASCII ou uma seqüência de “escape” (ver 
seções I.C e I.D.4). As constantes caracter devem ser colocadas entre apóstrofes. Exemplos: 
‘a’ ‘Z’ ‘\a’ ‘\”’ 
I.D.4. Constante literal (“String Literals”) I.D.4 
É uma seqüência de caracteres “permitidos” (seções I.A e I.C) delimitada por aspas. 
Exemplos: 
“Esta é uma string literal” 
“\nEsta é uma \”string literal\” com uma seqüência de \”escape\” de nova linha como primeiro 
caracter e duas de aspas envolvendo a palavra escape” 
printf(“\n o valor de x é : %d”, x); 
O padrão ANSI C define que devem ser permitidos até 509 caracteres numa “string literal” 
(Não esquecer que o último caracter deve ser um NULL, ou seja ‘\0’). 
Observação: 
Uma “string literal” deve terminar sempre (na memória) com um caracter nulo (NULL), 
representado pela seqüência de “escape” ‘\0’. Como conseqüência, uma “string literal” 
é um vetor de caracteres com dimensão igual ao número de caracteres + 1 (ou seja, o 
NULL). 
 
Observação: 
O uso de uma seqüência de “escape” em notação octal ou hexadecimal para impressão 
de um caracter no meio de uma string exige, por segurança, a utilização de 3 dígitos. 
Considere o exemplo a seguir: 
“\x07BELL” 
seria impresso como: 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.7 Segunda revisão / 2002 
 
{ELL, 
uma vez que 07B é o código hexadecimal do caracter ASCII {. Para que o sinal sonoro 
seja acionado, com a impressão da palabra BELL, deve-se escrever: 
“\x007BELL”, 
garantindo que após \x os três próximos caracteres sejam utilizados corretamente na 
seqüência. 
 
I.E. Palavras reservadas 
As palavras apresentadas nas tabelas I.7 (para o C e o C++) e I.8 (somente para o C++) são 
reservadas para uso como palavras-chave e não podem ser utilizadas com outra finalidade. 
Tabela I.7 : Palavras reservadas do C 
auto double int struct 
break else long switch 
case enum register typedef 
char extern return union 
const float short unsigned 
continue for signed void 
default goto sizeof volatile 
do if static while 
Tabela I.8 : Palavras reservadas adicionais do C++: 
asm friend private this 
catch inline protected throw 
class new public try 
delete operator template virtual 
 
I.F. Identificadores I.F 
Um identificador é uma seqüência de caracteres válidos, iniciados por uma letra (maiúscula 
ou minúscula) ou um caracter de sublinhado, delimitado por espaços em branco. Não são 
permitidos identificadores iniciados por dígitos. Os identificadores correspondem aos nomes de 
objetos, variáveis, classes, tipos, funções e rótulos (labels). 
Observações: 
1. padrão ANSI C permite até 31 caracteres válidos para a definição de um 
identificador. No entanto, cada fabricante pode implementar um número diferente 
de caracteres permitidos (sempre maior que o definido pelo padrão). A 
documentação fornecida pelo fabricante do produto de desenvolvimento deve ser 
consultada, mas o usuário deve evitar o uso de identificadores com número maior 
de caracteres para garantir portabilidade dos fontes. 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.8 Segunda revisão / 2002 
 
2. Os desenvolvedores (ou usuários) devem evitar a definição de identificadores que 
iniciam com um único sublinhado, uma vez que as implementações de C reservam 
esses identificadores para seu próprio uso. 
3. O padrão C++ não impõem restrições quanto ao número de caracteres utilizados na 
definição de um identificador, no entanto, os compiladores, em geral, o fazem. 
Nestes casos deve-se verificar a documentação fornecida pelo fabricante de seu 
produto de desenvolvimento. 
4. Os desenvolvedores devem evitar a definição de identificadores que iniciam com 
um duplo sublinhado ( __ ), pois estes são reservados para uso por 
implementações de C++ e bibliotecas padrão. 
5. Palavras reservadas pela linguagem não podem ser utilizados como identificadores 
dos usuários (desenvolvedores). 
 
I.G. Comentários I.G 
Comentários são considerados espaços em branco pelo compilador (seção I.A). Eles são 
utilizados para documentar os programas no próprio código fonte ou para a eliminação de trechos 
de códigos sem que seja necessário apagá-los, visando a realização de testes de implementação. 
Em C, um trecho de código comentado é delimitado pelas seguintes seqüências de 
símbolos /* e */, colocados no início e no fim do trecho, respectivamente. Todo o conteúdo 
localizado entre esses símbolos, incluindo caracteres de “newline” e instruções da linguagem, é 
considerado espaço em branco. 
Em C++ estas seqüências de caracteres são também aceitas para definir comentários, ou 
seja, o estilo de comentários do C é reconhecido. Contudo, esta linguagem define uma nova 
seqüência de caracteres para comentários, a dupla barra normal (//). O funcionamento deste 
comentário também é diferente. Todo o conteúdo que segue a seqüência de dupla barra normal, até 
o final da linha, é considerado um comentário. Desta forma, se o desenvolvedor pretende comentar 
todo um conjunto de linhas em seqüência, todas elas devem ser iniciadas com a seqüência de duas 
barras. 
Exemplos de estilos de comentários: 
/* Este é um comentário no estilo C, 
 que contem mais de uma linha. Note que foi utilizado somente o delimitador de inicio 
 de comentario na primeira linha e de final de comentário ao final desta linha. */ 
// Este é um comentário no estilo C++, 
// com mais de umalinha. Note que aqui é necessário colocar a dupla barra normal 
// no inicio de cada linha 
I.H. Pontuadores I.H 
Pontuadores são alguns dos caracteres especiais (tabela I.1, seção I.A) que têm um 
significado especial em C e C++. Os pontuadores são apresentados na tabela I.9. 
Tabela I.9 : Pontuadores 
Símbolos usos exemplos 
APOSTILA: LINGUAGENS DE PROGRAMAÇÃO C E C++ 
Angelo Passaro Página I.9 Segunda revisão / 2002 
 
[ ] dimensionamento de vetores de 
qualquer tipo; 
pode ser utilizado em operadores em 
C++; 
// declara string de 20 caracteres 
char uma_string [20]; 
// declara um vetor de doubles com 50 componentes 
double um_vetor[50]; 
{ } delimita blocos (ou seja, funções, 
instruções em laços, instruções em 
estruturas condicionais, definição de 
classes, etc) (seção II.B). 
// função 
int function (void) 
{ // aqui inicia o bloco de instruções da função 
 ... conjunto de instruções ... 
} // fim do bloco da função 
 
// laço do tipo do.....while 
do 
{ // aqui inicia o bloco de instruções do laço do 
 ... conjunto de instruções ... 
} while (i <1000); // fim do bloco de instruções do 
 // laço 
( ) delimita parâmetros para estruturas 
condicionais, laços; 
pode ser utilizado em operadores em 
C++; 
// parâmetros e estruturas condicionais 
if ( a > b) maior = a; 
switch ( retorno ) ... 
//parâmetros de laços 
for ( i = 0; i < 1000; i ++); 
while (i < 1000) 
{ ...conjunto de instruções ...} 
; utilizado como delimitador de 
instrução após cada instrução em C e 
C++; 
não precisa ser utilizado para delimitar 
blocos, com exceção da definição de 
classes; 
// delimitação de instruções 
int a = 10, b = 20, c; 
c = a + b; 
 
 
 
# utilizado somente em diretivas de pré-
compilação; 
# define A 1000 
# include <iostream> 
# if defined A 
 ... instruções ... 
# endif

Outros materiais