View
4
Download
0
Category
Preview:
Citation preview
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Conceitos)básicos)da)linguagem)C)
• Histórico)da)linguagem)C.)
• Tipos)primi8vos)de)dados.)• Constantes)e)variáveis.)• Atribuição.)• Operadores)aritmé8cos.)
• Funções)de)exibição)e)leitura.)
51)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Breve)histórico)da)linguagem)C)
1966:)Mar8n)Richards)(MIT))propõe)a)Basic)Combined)Programming)Language)(BCPL))para)o)desenvolvimento)de)compiladores)simplificados)para)outras)linguagens)de)programação.)Todas)as)variáveis)eram)de)um)único)8po)(word),)cujo)tamanho)dependia)da)arquitetura)do)computador)onde)era)executada.)
O)primeiro)programa)“Hello,)world!”)foi)escrito)em)BCPL.)
52)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Breve)histórico)da)linguagem)C)
1969:)Ken)Thompson)(Bell)Labs))adaptou)a)Linguagem)BCPL)para)u8lização)em)mini[computadores.)Criação)de)variáveis)do)8po)caractere)(letras))e)a)inclusão)de)bibliotecas)externas)de)funções.)!)B)
1971:)Dennis)Richie)(Bell)Labs))acrescentou)8pagem)à)linguagem)B)(inteiro,)real,)caracter)etc),)e)alterou)seu)compilador)para)produzir)código)em)linguagem)de)máquina.)!)NB)(New$B).)
1972:)Com)a)inclusão)de)um)programa)pré[processador)ao)compilador)e)pequenas)alterações)na)sintaxe,)NB)passou)a)se)chamar)C,)sendo)u8lizada)para)reescrever)cerca)de)90%)do)núcleo)do)sistema)operacional)UNIX,)sendo)também)distribuída)com)este)sistema.)
53)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Principais)caracterís8cas)da)linguagem)C)
A)linguagem)C)combina)caracterís8cas)de)linguagens)de)alto[nível)com)a)funcionalidade)de)linguagens)de)montagem)(assembly$languages).)Dentre)as)principais)caracterís8cas)que)tornaram)C)uma)das)linguagens)mais)populares)estão:)
• Seu)compilador)gera)programas[executáveis)menores)e)mais)velozes)do)que)muitas)outras)linguagens;))
• Uso)extensivo)de)funções:)permite)que)tarefas)específicas)sejam)definidas)e)codificadas)separadamente)–)um)programa)em)C)é)uma)coleção)de)funções;)
• Implementação)de)ponteiros:)endereçamento)da)memória,)vetores,)estruturas)e)funções.)
54)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
O)menor)programa)em)C)
Todo)programa)escrito)na)linguagem)C)possui)um)estrutura)básica,)sobre)a)qual)são)adicionadas)as)instruções)e)comandos)que)se)deseja)que)o)programa)execute.)
55)
A)função)int main()
• É)a)função)principal)de)um)programa)em)C.)• Sempre)deverá)exis8r.)• Marca)o)início)da)execução)do)programa.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Algumas)notas)MUITO)importantes)
56)
Tudo)que)tem)um)começo)tem)um)fim)(exceto)a)história)do)filme)Matrix$) • Os)símbolos)/*)e)*/)indicam)o)começo)e)o)fim)de)um)comentário.)• Os)símbolos){)e)})indicam)o)começo)e)o)fim)de)um)bloco)de)comandos.)• Os)símbolos)")e)")indicam)o)começo)e)o)fim)de)uma)cadeia)de)caracteres.)• Todo)comando)deve)ser)encerrado)com)o)símbolo);)(ponto[e[vírgula).)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Principais)bibliotecas)da)linguagem)C)
A)linguagem)C)possui)um)conjunto)mínimo)de)instruções,)visando)a)criação)de)programas)executáveis)de)tamanho)pequeno.)A)adição)de)novas)funcionalidades)é)feita)através)da)inclusão)de)bibliotecas,)que)contêm)classes)de)funções)específicas)para)o)tratamento)de)dados)desejado.)
A)inclusão)de)bibliotecas)devem)ser)as)primeiras)instruções)de)um)programa)em)C.)
57)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Principais)bibliotecas)da)linguagem)C)
58)
Biblioteca) Principais)funcionalidades)
stdio.h entrada)e)saída)de)dados.)
stdlib.h alocação)de)memória)e)comandos)para)o)sistema)operacional.)
math.h funções)matemá8cas.)
time.h manipulação)de)dados)nos)formatos)de)data)e)hora.)
ctype.h manipulação)de)caracteres.)
string.h manipulação)de)cadeias)de)caracteres.)
conio.h manipulação)do)cursor)na)tela.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Armazenamento)de)dados)
Antes)de)serem)u8lizadas)em)um)programa,)as)informações)do)mundo)ksico)devem)ser)armazenadas)na)memória)do)computador.)Em)programação,)tais)informações)recebem)o)nome)de)dado.)Os)dados)podem)ser)valores)numéricos)ou)símbolos)gráficos)(caracteres))
Para)isso,)o)programa)reserva)endereços)de)memória,)que)passam)a)ser)iden8ficados)por)um)nome,)geralmente)relacionado)à)informação)que)ele)representa)(massa,)altura,)força,)cor)etc.))
Através)deste)nome,)a)informação)con8da)no)respec8vo)endereço)de)memória)pode)ser)modificada)ou)u8lizada)em)expressões,)comandos)e)funções)do)programa.)
59)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Constantes)e)variáveis)
Em)linguagens)de)programação)de)alto)nível,)os)dados)podem)ser)de)duas)naturezas:)constantes)ou)variáveis.)
60)
Constantes Assumem)um)único)valor,)do)início)ao)fim)da)execução)do)programa,)não)podendo)ser)alterado)por)nenhum)comando)ou)função.)
Variáveis Assumem)um)valor)inicial,)que)pode)ser)alterado)por)alguma)função)ou)comando)durante)a)execução)do)programa.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Tipos)primi8vos)da)linguagem)C)
A)linguagem)C)realiza)operações)sobre)dados)numéricos)e)não[numéricos.)
Os)dados)numéricos)podem)ser)de)3)8pos)dis8ntos:)
int :)para)representar)valores)inteiros;)float :)para)representar)valores)de)ponto)flutuante;)
double :)para)representar)valores)de)ponto)flutuante)de)precisão)dupla.)
O)8po)char)permite)manipular)elementos)não[numéricos)(dados)como)letras,)dígitos)ou)outro)símbolo)gráfico).)
61)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Declaração)
62)
A)declaração)é)um)comando)que)associa)o)nome)de)uma)constante)ou)de)uma)variável)a)um)determinado)endereço)de)memória.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Regras)0a)e)0b)sobre)constantes)e)variáveis)
63)
Declaração)prévia Toda)constante)ou)variável)deve)ser)declarada)antes)de)ser)usada.)
Declaração)única O)nome)da)constante)ou)variável)deve)ser)único.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Tipos)e)valores)
Os)valores)admissíveis)para)cada)8po)primi8vo)podem)ser)alterados)com)o)uso)dos)modificadores)unsigned,)short)e)long.)
64)
Tipo)Tamanho)(bytes))
Intervalo)
Início) Fim)
char 1) –128) 127)
unsigned char 1) 0) 255)
short int 2) –32768) 32767)
unsigned short int 2) 0) 65535)
int 4) –2147483648)) 2147483647))
unsigned int 4) 0) 4294967295)
float 4) ±3.4)E–38)) ±3.4)E+38)
double 8) ±1.7)E–308) ±1.7)E+308)
long double 10) ±3.4)E–4932) ±3.4)E+4932)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
A)tabela)ASCII)padrão)
65)Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2014)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Iden8ficadores)de)constantes)e)variáveis)
Os)nomes)dados)às)constantes)ou)variáveis)de)um)programa)denominam[se)iden8ficadores.)Para)definir)um)iden8ficador)pode[se)u8lizar)uma)combinação)de:)
• )letras)(maiúsculas)e)minúsculas,)sem)acentuação).)• )dígitos)(0)a)9),)desde)que)o)primeiro)caractere)não)seja)um)dígito.)• )caractere)'_')(sublinha).)
A)linguagem)C)diferencia)letras)maiúsculas)e)minúsculas.)
66)
int F; // uma variável inteira denominada F float f; // uma variável real denominada fdouble valor de A; // identificador inválido!char 1a_inicial; // identificador inválido!
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Palavras)reservadas)da)linguagem)C)
As)seguintes)palavras)não)podem)ser)u8lizadas)para)denominar)en8dades)(constantes,)variáveis,)estruturas,)funções)etc.))criadas)pelo)programador:)
• Armazenamento:)auto, extern, register, static.)• Tipagem:)char, const, double, enum, float, int, long, short, signed, struct, typedef, union, unsigned, void, volatile.)
• Controle)de)execução:)break, continue, goto, return.)• Comandos)de)seleção:)case, default, else, if, switch.)• Comandos)de)iteração:)do, for, while.)• Função:)sizeof().)
67)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Atribuindo)valores)à)variáveis)
A)atribuição)é)um)comando)u8lizado)para)modificar)o)valor)de)uma)variável.)
68)
Atenção • )o)símbolo)de)atribuição)=)não)significa)igualdade.)• )a)atribuição)sempre)atua)da)direita)para)a)esquerda)(←).)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Atribuindo)valores)à)variáveis)
A)atribuição)é)um)comando)destru8vo,)ou)seja,)o)valor)anteriormente)armazenado)pela)variável)à)esquerda)do)símbolo))= será)subs8tuído)pelo)valor)da)constante,)variável)ou)expressão)no)lado)direito.)
69)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Operadores)aritmé8cos)
A)precedência)das)operações)aritmé8cas)em)C)obedece)às)regras)estabelecidas)pela)Álgebra.)Os)operadores)com)mesmo)nível)de)precedência)são)avaliados)pelo)compilador)da)esquerda)para)a)direita.)
A)precedência)das)operações)pode)ser)modificada)com)o)uso)de)parênteses.)
70)
Símbolo) Operação) Resultado) Precedência)
+ adição) soma)dos)argumentos) baixa)
– subtração) diferença)dos)argumentos) baixa)
* mul8plicação) produto)dos)argumentos) média)
/ divisão) quociente)dos)argumentos) média)
% módulo) resto)da)divisão)inteira) média)
++ incremento) adiciona)1)ao)operando) alta)
–– decremento) subtrai)1)do)operando) alta)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Expressões)aritmé8cas)
Calcular)o)perímetro)e)o)volume)de)uma)esfera)de)raio)r)=)3.)
P)=)4πr2.)
71)
int main(){ const float PI = 3.14159; float r = 3; float p, v;
p = 4*PI*r*r; v = (4.0/3.0)*PI*r*r*r;
return(0);}
€
V =43πr3
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
A)função)de)exibição)printf()
A)função)printf())é)u8lizada)para)exibição)de)informações.)Sua)sintaxe)é:)
printf("expressão de controle", lista de argumentos);)
A)"expressão de controle")contém)a)mensagem)que)será)exibida)na)tela,)juntamente)com)os)caracteres)especiais)de)exibição)e)os)códigos)de)formatação)dos)argumentos.)
A)lista de argumentos)corresponde)à)constantes,)variáveis)e)expressões)que)serão)exibidas)na)tela,)de)acordo)com)os)formatos)estabelecidos)pela)"expressão de controle".)
72)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Símbolos)para)a)função)printf()
Servem)para)controle)e)formatação)da)exibição)em)tela.)
73)
Código) Exibição)
%c caractere)simples)
%s cadeia)de)caracteres)
%d valor)inteiro)
%u valor)inteiro)sem)sinal)
%f valor)de)ponto)flutuante)
%e notação)cien{fica)
%o valor)octal)
%x valor)hexadecimal)
%% caractere)%)
Caractere) Ação)
\n nova)linha)
\t tabulação)
\b retrocesso)(backspace))
\f novo)formulário)
\a alerta)(sinal)sonoro))
\r início)da)linha)
\0 caractere)nulo)
\" exibe)o)caractere)")
\\ exibe)o)caractere)\)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Uso)da)função)printf()
74)
Exibir)uma)mensagem)e)pular)duas)linhas:)
printf("Bom dia!\n\n");
Exibir)uma)mensagem:)
printf("Bom dia!");
Exibir)o)valor)de)uma)variável)inteira:)
printf("%d", j);
Exibir)o)valor)de)uma)variável)inteira)e)uma)variável)real:)
printf("%d %f", j, x);
Exibir)mensagens)e)valores)de)variáveis:)
printf("Valor de j = %d\nValor de x = %f\n", j, x);
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
A)função)printf()
Exemplo:)Exibir)um)caractere)de)diversas)formas)diferentes.)
75)
#include <stdio.h>#include <stdlib.h>
int main(){ char a = 'A';
printf("CAR: %c\nDEC: %d\nOCT: %o\nHEX: %x\n", a, a, a, a); system("PAUSE"); return(0);}
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
A)função)de)leitura)scanf()
A)função)scanf())é)u8lizada)para)leitura)de)dados)pelo)teclado.)Sua)sintaxe)é:)
scanf("expressão de controle", lista de argumentos);)
Diferentemente)da)função)printf(),)a)"expressão de controle")da)função)scanf())deverá)conter)apenas)os)códigos)de)formatação)das)variáveis)a)serem)lidas.)
A)lista de argumentos)é)composta)pelos)nomes)das)variáveis)que)serão)lidas,)precedidas)pelo)símbolo)&)(endereço),)de)acordo)com)a)ordem)estabelecida)pela)"expressão de controle".)
76)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Uso)da)função)scanf()
Na)função)scanf())é)imprescindível)o)uso)do)símbolo)de)endereço)& imediatamente)antes)do)nome)da)variável.)
77)
Ler)o)valor)de)uma)variável)inteira:)
scanf("%d", &j);
Ler)o)valor)de)duas)variáveis)inteiras:)
scanf("%d %d", &i, &j);
Ler)o)valor)de)uma)variável)real)e)uma)variável)inteira:)
scanf("%f %d", &x, &j);
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Exemplo)
Exibir)o)valor)correspondente)em)graus)fahrenheit)de)uma)temperatura)em)graus)celsius)informada)pelo)usuário.)
78)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Uso)combinado)printf())e)scanf()
A)função)scanf())não)deve)ser)u8lizada)para)exibir)mensagens.)
79)
Isto)não)funciona!!!)
scanf("Entre com o valor de i = %d", &i);
Isto)sim,)funciona!!!)
printf("Entre com o valor de i = ");scanf("%d", &i);
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Formatando)a)exibição)de)valores)
A)função)printf())permite)definir)como)os)valores)das)constantes)e)variáveis)serão)exibidos)na)tela.)
80)
Exibindo)valores)inteiros:)int i = 3;printf("i = %d", i); // i = 3printf("i = %5d", i); // i = 3printf("i = %05d", i); // i = 00003
Exibindo)valores)reais:)float pi = 3.14159265358;printf("pi = %f", pi); // pi = 3.141593printf("pi = %.4f", pi); // pi = 3.1416printf("pi = %8.2f", pi); // pi = 3.14
Atenção!!!)
Não)se)usa)formatação)de)exibição)na)função)scanf().)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
O)operador)de)subtração)
O)símbolo)–)representa)a)operação)de)subtração.)Quando)u8lizado)numa)expressão)aritmé8ca,)ele)calcula)e)diferença)entre)os)operadores)envolvidos.))
Este)símbolo)também)define)o)operador)unário)que)altera)o)sinal)da)constante,)variável)ou)expressão)que)o)sucede.))
81)
Alterar)o)sinal)de)uma)variável)ou)expressão...)
x = -x;k = -(i + j);
...)é)o)mesmo)que)mul8plicar)a)variável)ou)expressão)por)-1))
x = (-1)*x;k = (-1)*(i + j);
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
O)operador)de)divisão)
O)símbolo)/)representa)a)operação)de)divisão.)Uma)expressão)aritmé8ca)contendo)diversos)valores)no)numerador)ou)no)denominador)deve)ser)linearizada)com)o)uso)de)parênteses.)
) ) ) ) ) ) ) ) )! "x = (a + b)/(c + d);
O)resultado)da)operação)de)divisão)depende)do)8po)dos)operandos)na)expressão.)
82)
Quando)houver)apenas)operando)inteiros...)
Será)realizada)a)divisão)inteira.)
Quando)pelo)menos)um)dos)operandos)for)real...)
Será)realizada)a)divisão)real.)
€
x←a + bc + d
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
O)operador)módulo)
O)símbolo)%)representa)o)operador)módulo,)que)calcula)o)resto)da)divisão)inteira)entre)2)operandos)do)8po)inteiro.)
Ex:))
) ) ) ) ) ) ) ) ) )!) ) ) )13)=)5)*)2)+)3)
83)
13) 5)
3) 2)
dividendo)
divisor)
quociente)
resto)
int D = 13, d = 5;int Q, R;
Q = D/d;R = D%d;
printf(“Resultado da divisão inteira: %d\n”, Q) ;printf(“Resto da divisão inteira: %d\n”, R);
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Operadores)de)incremento)e)decremento)
São)u8lizados)para)adicionar)ou)subtrair)1)unidade)de)uma)variável)inteira.)
84)
i++; // equivale ao comando i = i + 1;j--; // equivale ao comando j = j – 1;
Notação)pré[fixa)
O)valor)da)variável)é)atualizado)antes)de)ser)u8lizado)na)expressão.)
Notação)pós[fixa)
O)valor)da)variável)é)atualizado)depois)de)ser)u8lizado)na)expressão.)
i = 3;j = ++i; // i assume o valor 4, j assume o valor de i
i = 3;j = i++; // j assume o valor de i, i assume o valor 4
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Conversão)de)8pos)em)atribuições)
A)linguagem)C)permite)a)atribuição)de)valores)entre)constantes)e)variáveis)de)8pos)diferentes.)Em)alguns)casos)pode)haver)perda)de)informação.)
85)
(char) = (int)
Armazena)apenas)os)bits)menos)significa8vos)da)variável)inteira.)
(int) = (float)
Armazena)apenas)a)parte)inteira)do)valor)de)ponto)flutuante.)
(float) = (char)
Armazena)o)valor)inteiro)associado)ao)caractere.)
(float) = (int)
Armazena)o)valor)inteiro)como)um)número)de)ponto)flutuante.)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
O)8po)char
Variáveis)ou)constantes)do)8po)char)são)usadas)para)amazenar)caracteres.))
Na)atribuição)de)valores)a)variáveis)do)8po)char)os)símbolos)devem)ser)escritos)entre)aspas)simples)' '.)
Usa[se)o)código)de)formatação)%c)para)ler)ou)exibir)valores)do)8po)char.)
86)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Funções)na8vas)de)entrada)e)saída)
• getchar():)lê)um)caractere)até)que)a)tecla)<ENTER>)seja)pressionada.)Se)mais)de)um)caractere)for)digitado,)apenas)o)primeiro)caractere)será)considerado)e)o)restante)será)descartado.)
87)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Funções)na8vas)de)entrada)e)saída)
• putchar():)Exibe)na)tela)o)caractere)passado)como)argumento,)a))par8r)da)posição)atual)do)cursor.)
88)
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Funções)na8vas)de)entrada)e)saída)
• getche():)Lê)um)caractere)do)teclado)sem)pressionar)<ENTER>)e)mostra)o)que)foi)digitado.)
89)
#include <stdio.h>#include <stdlib.h>
int main(){ char a;
printf("Digite um caractere: "); a = getche(); printf("\nO caractere digitado foi %c.\n", a); system("PAUSE"); return(0);}
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Funções)na8vas)de)entrada)e)saída)
• getch():)Lê)um)caractere)do)teclado)sem)pressionar)<ENTER>)e)não)mostra)o)que)foi)digitado.)
90)
#include <stdio.h>#include <stdlib.h>
int main(){ char a;
printf("Digite um caractere: "); a = getch(); printf("\nO caractere digitado foi %c.\n", a); system("PAUSE"); return(0);}
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
A)função)puts()
• É)u8lizada)apenas)para)exibir)mensagens)na)tela.)• A)mensagem)a)ser)exibida)deverá)ser)escrita)entre)aspas.)
• Após)a)exibição)da)mensagem,)a)função)puts())muda)de)linha)automa8camente.))
91)
int main(){ puts("Digite sua opcao:"); puts("[1] Consultar"); puts("[2] Incluir"); puts("[3] Atualizar"); puts("[4] Excluir"); puts("[5] Encerrar"); printf("-> "); ...}
Conceitos)básicos)da)linguagem)C)PC3I)©)MAP’2015)
Funções)de)manipulação)de)caracteres)
char a;
• isalpha(a):)testa)se)o)caractere)é)uma)letra.)• isdigit(a):)testa)se)o)caractere)é)um)algarismo.)• isespace(a):)testa)se)é)o)caractere)espaço)' '.))• islower(a):)testa)se)é)uma)letra)minúscula.))• isupper(a):)testa)se)é)uma)letra)maiúscula.)• tolower(a):)converte)o)caractere)para)minúscula.)• toupper(a):)converte)o)caractere)para)maiúscula.)
Estas)funções)estão)definidas)na)biblioteca)ctype.h.)
92)
Recommended