O documento discute conceitos básicos da linguagem C, incluindo constantes, variáveis do tipo string, funções printf e formatos de impressão de diferentes tipos de dados.
1. LINGUAGEM C - AULA 03 1 DE 4
Linguagem C– Aula 03 – Prof. Wellington Telles
Constantes
Nem todos os valores precisam se alterar na memória ao longo do programa.
As constantes são valores fixos como taxas, fatores entre outros. É melhor colocar uma constante principalmente em
um valor que é usado várias vezes e ainda não se tem ideia do valor final, pois se colocar um número e não for esse o
definitivo/momentâneo, terá que corrigir várias vezes.
As constantes são declaradas no início do programa-fonte caso precise usar no programa todo.
Exemplo:
#define LARGURA_MAXIMA 50 // Não se coloca ponto-e-vírgula após o valor
#define NRO_DE_DIAS_DA_SEMANA 7
#define NRO_DE_HORAS_DO_DIA 24
#define VALOR_DE_PI 3.1415
void main ()
{
int TotalDeHoras;
TotalDeHoras = 10 * NRO_DE_DIAS_DA_SEMANA * NRO_DE_HORAS_DO_DIA;
printf("%d horas",TotalDeHoras);
}
String
A linguagem C não tem diretamente uma variável do tipo string então usamos um vetor de caracteres.
A atribuição de valores para uma “string” é através de aspas duplas.
Exemplo:
char nome_cliente[30] = "Fulano";
char nome_cliente[30] = {'F','u','l','a','n','o'};
Podemos inicializar uma variável sem o tamanho do vetor, que se ajusta automaticamente.
char nome_cliente[] = "Fulano";
Para armazenar “Fulano”, são necessários 6 caracteres + 1 para o finalizador 0.
char nome_cliente[7] = "Fulano";
Ocupam o mesmo espaço em memória.
Observação: Não repetir a declaração de uma variável.
Printf
A função printf exibe um ou mais dados na tela. Para tanto ele deve receber pelo menos dois parâmetros, separados
por vírgula:
• Uma string de formato que define, através de caracteres especiais, os tipos dos dados a serem impressos e suas posições
na linha de impressão;
• Um dado a ser impresso. Este dado pode ser qualquer um dos dados visto anteriormente.
Exemplo:
printf("%s","teste");
"%s" é o formato string
"teste" é o dado a ser impresso.
printf("%s %s","teste1", "outra string");
printf("A aluna %s ficou doente","Maria");
Exemplo:
#include <stdio.h>
#include <stdlib.h>
2. LINGUAGEM C - AULA 03 2 DE 4
#define CURSO "Eletronica"
int main(int argc, char *argv[])
{
printf("%s",CURSO);
return 0;
}
Impressão de Inteiros com "printf"
Para imprimir um inteiro com printf usa-se o símbolo %d
// Impressão de Variáveis Inteiras
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int Contador;
int NroDeFilhos;
system("cls"); // Limpa a tela
Contador = 10;
printf("Valor da Variável: %dn", Contador); // No momento da execução sinal %d vai
// ser substituído pelo valor da variável Contador
NroDeFilhos = 3;
printf("Maria tem %d filhosn", NroDeFilhos); // o inteiro pode ficar no meio da string
return 0;
}
Impressão de Expressões aritméticas
// Impressão de Expressões aritméticas
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int NroDeAndares;
int AlturaPorAndar;
system("cls"); // Limpa a tela
NroDeAndares = 7;
AlturaPorAndar = 3;
printf("Altura Total do Prédio: %d metros", NroDeAndares*AlturaPorAndar);
// No momento da execução sinal %d vai ser substituído
// pelo valor da multiplicação
return 0;
}
Impressão de Números reais
// Impressão de números reais
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float NotaDaP1, NotaDaP2;
float Media;
system("cls"); // Limpa a tela
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %f", Media);
// No momento da execução sinal %f vai ser substituído
// pelo valor da variável Media com SEIS casas decimais
// Média Final : 7.400000
return 0;
}
Formato de Impressão dos Números Reais
No exemplo acima o resultado da média (7.4) foi impresso com 6 casas decimais (7.400000).
Isto sempre acontece quando se manda imprimir um float da forma como foi feito no exemplo acima. Isto acontece,
pois, o padrão da função printf é completar o número com zeros à direita, até que fique com seis casas decimais.
Para formatar de maneira diferente usar-se, junto com o %f uma especificação de quantas casas decimais se deseja
que o número tenha. Especifica-se também o número total de caracteres do número a ser impresso.
Por exemplo: %6.3f especifica que se quer imprimir um float com 3 casas decimais e com um tamanho total de 6
caracteres no total.
#include <stdio.h>
#include <stdlib.h>
3. LINGUAGEM C - AULA 03 3 DE 4
void main()
{
float NotaDaP1, NotaDaP2;
float Media;
system("cls"); // Limpa a tela
NotaDaP1 = 6.6; // Atribuição do Valores das médias
NotaDaP2 = 8.2;
Media = (NotaDaP1 + NotaDaP2) / 2.0;
printf("Média Final : %6.3f", Media);
// No momento da execução sinal %6.3f vai ser substituído pelo valor da variável Media
// Média Final : 7.400
return 0;
}
Regras para impressão de um número real
• O número de casas decimais é sempre respeitado. Se for preciso, zeros serão acrescentados à direita do número
• O tamanho total significa o número de caracteres do número incluindo o ponto decimal e um eventual sinal de menos (-
), se for o caso;
• Se a soma do número de caracteres da parte inteira, mais o ponto decimal, mais a parte fracionária, mais um eventual
sinal de menos ainda for menor do que o tamanho total especificado no formato, então, espaços em branco serão
acrescentados à esquerda da parte real do número.
• Se a soma do número de caracteres da parte inteira, mais o ponto decimal, mais a parte fracionária, mais um eventual
sinal de menos for maior do que o tamanho total especificado no formato, então, apenas o número de casas decimais é
respeitado
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
float Numero;
Numero = -2.5;
system("cls"); // Limpa a tela
printf("1234567890n");
printf("%7fn", Numero);
printf("%7.0fn", Numero);
printf("%7.3fn", Numero);
printf("%8.3fn", Numero);
printf("%9.3fn", Numero);
printf("n");
printf("%8.4fn", Numero);
printf("%8.1fn", Numero);
printf("%6.12fn", Numero);
return 0;
}
Alinhamento de números à DIREITA
Nos exemplos anteriores os números ficavam sempre alinhados a partir da esquerda.
Experimente colocar um sinal de menos logo depois do sinal de % e veja o que acontece.
printf("%-7.3fn", Numero);
Variáveis do Tipo String
Uma variável capaz de arrmazenar uma string deve ser declarada informando-se qual o número máximo de caracteres
que ela poderá armazenar.
Exemplo:
char Nome[30]; // isto define que a variável poderá armazenar uma string de até 29 caracteres.
Ao trabalharmos com strings deve-se incluir o arquivo de cabeçalho string.h
Atribuição com strings
As atribuições de valores a strings devem ser feitas através da função strcpy
#include <stdio.h>
#include <stdlib.h>
#include <string.h> // arquivo de cabeçalho para trabalhar com strings
int main(int argc, char *argv[])
{
4. LINGUAGEM C - AULA 03 4 DE 4
char Nome[30]; // declara uma string que poderá armazenar até 29 caracteres !!
system("cls"); // Limpa a tela
strcpy(Nome, "Jose da Silva"); // atribui "Jose da Silva" para a variável Nome
printf("O funcionário %s foi transferido", Nome); // no lugar de %s aparecerá o
// conteúdo da variável Nome
return 0;
}
Operadores Aritméticos
- Sinal de menos (unário) Maior precedência (avaliado antes)
*, / Multiplicação e divisão
% Módulo (resto da divisão)
+, - Soma e subtração Menor precedência (avaliado depois)
Pode-se usar parênteses para alterar a precedência.
Formatação
Código Conversão/Formato do argumento
%d Número decimal inteiro (int). Também pode ser usado %i como equivalente a %d.
%u Número decimal natural (unsigned int), ou seja, sem sinal.
%o Número inteiro representado na base octal. Exemplo: 41367 (corresponde ao decimal 17143).
%x Número inteiro representado na base hexadecimal. Exemplo: 42f7 (corresponde ao decimal 17143). Se usarmos %X,
as letras serão maiúsculas: 42F7.
%X Hexadecimal com letras maiúsculas
%f Número decimal de ponto flutuante. No caso da função printf, devido às conversões implícitas da linguagem C, serve
tanto para float como para double. No caso da função scanf, %f serve para float e %lf serve para double.
%e Número em notação científica, por exemplo 5.97e-12. Podemos usar %E para exibir o E maiúsculo (5.97E-12).
%E Número em notação científica com o "e"maiúsculo
%g Escolhe automaticamente o mais apropriado entre %f e %e. Novamente, podemos usar %G para escolher entre %f e
%E.
%p Ponteiro: exibe o endereço de memória do ponteiro em notação hexadecimal.
%c Caractere: imprime o caractere que tem o código ASCII correspondente ao valor dado.
%s Sequência de caracteres (string, em inglês).
%% Imprime um %
printf ("%5d", 15); // exibe " 15"
printf ("%05d", 15); // exibe "00015"
printf ("%-5d", 15); // exibe "15 "
printf ("%-10s", "José"); // exibe "José "
printf ("%10s", "José"); // exibe " José"
printf ("%4s", "José"); // exibe "José"
printf ("%.5d", 314); // exibe "00314"
printf ("%.5f", 2.4); // exibe "2.40000"
printf ("%.5g", 23456789012345); // exibe "2.3457e+13"
printf ("%.5s", "Bom dia"); // exibe "Bom d"
Tabela com as sequências de escape suportadas pela linguagem C
Sequência Significado
n Quebra de linha (line feed ou LF)
t Tabulação horizontal
b Retrocede o cursor em um caractere (backspace)
r Retorno de carro (carriage return ou CR): volta o cursor para o começo da linha sem mudar de linha
a Emite um sinal sonoro
f Alimentação de formulário (form feed ou FF)
v Tabulação vertical (em impressoras)
" Aspa dupla
' Aspa simples
Barra invertida
0 Caractere nulo (caractere de valor zero, usado como terminador de strings)
N O caractere cuja representação octal é N (dígitos de 0 a 7)
xN O caractere cuja representação hexadecimal é N (dígitos de 0 a 9 e de A a F)