Linguagem C
Conteúdos já desenvolvidos
Estrutura de um programa em C
Identificadores, variáveis, constantes, operadores e expressões
Linguagem C, A. Barão, 2002
1
Linguagem C Estrutura de um programa em C
#include <bibliotecas>
#define <funções de macros>
#define <constantes>
declaração de funções ou protótipos de funções;
definição de novos tipos de dados;
declaração de variáveis globais;
tipo de dado da função main (argumentos)
{
definição e declaração de variáveis locais;
código de execução da função;
}
tipo de dado da função identificador (argumentos)
{
definição e declaração de variáveis locais;
código de execução da função;
}
Linguagem C, A. Barão, 2002
2
Linguagem C Estrutura de um programa em C
Exemplos:
#include <stdio.h>
void main(void)
{
printf(“Linguagem C”);
}
#include <stdio.h>
void main(void)
{
int numeroAluno = 12;
printf(“O número do aluno é %d”, numeroAluno);
}
Linguagem C, A. Barão, 2002
3
Linguagem C Estrutura de um programa em C
Caracteres especiais no código fonte:
;
,
/*
//
“
=
{
}
(após cada instrução)
(para separar identificadores)
*/ (para incluir comentários numa ou mais linhas
(incluir comentários numa linha)
(delimitar grupos de caracteres)
(atribuição)
(início de um bloco de instruções)
(fim de um bloco de instruções)
Palavras reservadas:
auto
double
if
static
break
else
int
struct
case
entry
long
switch
char
extern
register
typedef
continue
float
return
union
default
for
sizeof
unsigned
do
goto
short
while
Linguagem C, A. Barão, 2002
4
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Identificador
Deve começar por uma letra ou underscore (a..z, A..Z ou _ );
Não pode conter espaços;
Não é possível utilizar acentuação;
É case-sensitive
Exemplos
mediaAluno
totalVendas
MAXIMO
ctd
_enderecoSistema
...
Linguagem C, A. Barão, 2002
5
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Variável
Entidade que pode assumir vários valores durante a execução do programa
Declaração de variáveis (exemplos)
int numeroAluno;
char sexo;
Tipo de dado
Identificador da variável
Linguagem C, A. Barão, 2002
6
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Declaração de variáveis, continuação
int numeroAluno;
As declarações terminam com ponto e vírgula
char sexo;
Outro exemplo:
int numeroAluno;
int numeroContribuinte;
é o mesmo que:
int numeroAluno, numeroContribuinte;
quando os tipos de atributo são iguais.
Linguagem C, A. Barão, 2002
7
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Declaração de variáveis, conclusão.
As variáveis podem ser inicializadas no momento da declaração
Exemplos:
int numeroAluno = 12;
char sexo = ‘M’;
Tipos de dados básicos
char – carácter
int – inteiro
float – vírgula flutuante
fouble – vírgula flutuante de precisão dupla
void – vazio ou sem valor definido
Linguagem C, A. Barão, 2002
8
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Capacidade dos tipos de dados
char (-128 .. 127, 8 bits)
Importante:
int (-32768 .. 32767, 16 bits)
O operador sizeof devolve o espaço de memória
unsigned int ( 0 .. 65535, 16 bits)
Que um determinado tipo de dado ocupa
signed int (-32768 .. 32767, 16 bits)
short int (-32768 .. 32767, 16 bits)
unsigned short int ( 0 .. 65535, 16 bits)
signed short int (-32768 .. 32767, 16 bits)
long int (-2 147 483 648 .. 2 147 483 647, 32 bits)
unsigned long int (0 .. 4 294 967 295, 32 bits)
float (3,4x10E-38..3,4x10E38, 32 bits)
double (1,7x10E-308 .. 1,7x10E308, 64 bits)
long double (3,4x10E-4932 .. 3,4x10E4932)
Linguagem C, A. Barão, 2002
9
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Conversão de tipos de dados
Em expressões com diferentes tipos de dados podem existir promoções
Exemplos:
•Todos os char e short int são convertidos para int
•Todos os float são convertidos para double
Caso concreto numa expressão:
char c;
int i;
float f;
double d;
resultado = ( c / i ) + ( f * d ) + ( f – i )
int
double
Int
float
double
float
double
Linguagem C, A. Barão, 2002
10
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Conversão de tipos de dados
Casts
• É possível forçar a conversão de tipos através da técnica de cast
Exemplo:
float f = 17.5;
float g;
g = (int) f;
g fica com 17
Linguagem C, A. Barão, 2002
11
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Variáveis globais e locais
• Uma variável global é conhecida por todas as funções do programa
• Uma variável local só é conhecida dentro da função que a declara
Como optar?
Depende do problema a resolver... Mas deve-se optar por variáveis locais sempre
que possível.
• Quando um nome de uma variável local é o mesmo que uma variável global,
o sistema dá preferência à variável local. Ou seja, variáveis locais têm
precedência sobre variáveis globais
Linguagem C, A. Barão, 2002
12
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Variáveis globais e locais
#include <stdio.h>
Int numeroAlunos = 30;
void main(void)
{
int numeroProfessores = 8;
}
void X()
{
int numeroMonitores = 16;
}
Só a função main conhece esta variável
A função X() pode usar a variável numeroAlunos (global)
mas não conhece a variável numeroProfessores (local noutra função)
Esta variável só é conhecida pela função X()
Linguagem C, A. Barão, 2002
13
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Constantes
• O valor de uma constante permanece por definição inalterado durante
a execução do programa.
Exemplos:
#define ALUNOS_DA_TURMA
30
Outro tipo de constante:
const alunosDaTurma = 30;
Palavra reservada para declarar uma constante
Linguagem C, A. Barão, 2002
14
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Constantes
Exemplos:
#define mensagem = “Seja bem vindo ao sistema”
ou
const mensagem = “Seja bem vindo ao sistema”;
Atenção: aspas e plicas são diferentes!
Constante do tipo caractere (plicas)
Constante do tipo string (aspas)
letra = ‘b’;
frase = “Seja bem vindo...”;
Linguagem C, A. Barão, 2002
15
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Constantes de barra
Código
Significado
/?
Ponto de interrogação
//
Barra invertida
/’
Plica ou apóstrofo
/”
Aspas
\b
backspace
\f
Form feed
\n
New line
\r
Carriage return
\t
Tabulação horizontal
\v
Tabulação vertical
\xValor
Código Valor ASCII em
hexadecimal
Linguagem C, A. Barão, 2002
16
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Constantes e variáveis
Exemplo 1:
#include <stdio.h>
#include <conio.h>
#define mensagemEntrada "Seja bem vindo ao sistema"
#define mensagemSaida "Obrigado por ter escolhido o nosso Banco"
#define TAXA_JURO 15.5
void main(void)
{
clrscr();
printf("\nBanco X\n");
printf("%s\n", mensagemEntrada);
printf("A nossa taxa de juro é muito boa: %.2f", TAXA_JURO);
printf("\n%s", mensagemSaida);
}
Linguagem C, A. Barão, 2002
17
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Constantes e variáveis
Exemplo 2:
#include <stdio.h> // necessário para printf
#include <conio.h> // necessário para clrscr() e getch()
void x(); // protótipo da função X()
int numeroAluno = 10; // variável global
void main(void)
{
int numeroAluno; // variável local com mesmo nome da global para ver a diferença..
char turma;
clrscr(); // limpar ecrã
turma = 'A';
printf("\nTurma %c", turma);
numeroAluno = 20;
printf("\nO numero do aluno da variável local é: %d", numeroAluno);
numeroAluno = 21;
printf("\nAgora o numero do aluno da variável local é‚: %d", numeroAluno);
x();
getch(); // aguardar uma tecla para terminar programa
}
/* Função X() que usa a variável global e tem uma variável local */
void x()
{
int numeroProfessor = 8; // esta variável só é conhecida nesta função
printf("\nO valor da variável numeroAluno global é: %d", numeroAluno );
printf("\nO valor da variável numeroProfessor é: %d", numeroProfessor );
}
Linguagem C, A. Barão, 2002
18
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Operadores
Aritméticos
Relacionais
Lógicos
+
Adição
==
Igual
&&
Conjunção (E)
-
Subtracção
>
Maior
||
Disjunção (OU)
*
Multiplicação
<
Menor
!
Negação
/
Divisão
>=
Maior ou igual
%
Resto da divisão inteira
<=
Menor ou igual
++
Incremento
!=
Diferente
--
Decremento
=
Atribuição
Manipulação de bits
Em C existem formas abreviadas de codificar, exemplos:
k = k + 1; é o mesmo que ++k;
k = k – 1; é o mesmo que --k;
Ou
k = k + 10; é o mesmo que k+=10;
a = b = c = 25; // atribuição múltipla do mesmo valor
etc...
&
Conjunção (E)
|
Disjunção (OU)
^
Disjunção Exclusiva (XOR)
~
Complemento
>>
Deslocamento para a direita
<<
Deslocamento para a esquerda
Linguagem C, A. Barão, 2002
19
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Operadores Aritméticos (exemplo)
#include <stdio.h>
#include <conio.h>
void main(void)
{
float valor1, valor2, resultado;
int resto;
clrscr();
printf("\nDigite um valor: ");
scanf("%f", &valor1);
printf("\nDigite outro valor: ");
scanf("%f", &valor2);
resultado = valor1 + valor2;
printf("\nSoma: %f", resultado);
resultado = valor1 - valor2;
printf("\nSubtraccao: %f", resultado);
resultado = valor1 * valor2;
printf("\nMultiplicacao: %f", resultado);
resultado = valor1 / valor2;
printf("\nDivisao: %f", resultado);
O resto da divisão inteira não pode
ser efectuado com floats daí a necessidade
de efectuar o cast para int
Linguagem C, A. Barão, 2002
resto = (int) valor1 % (int) valor2;
printf("\nResto da divisao inteira: %d", resto);
getch();
}
20
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Operadores Relacionais (exemplo)
#include <stdio.h>
#include <conio.h>
void main(void)
{
int valor1, valor2;
clrscr();
printf("\nDigite um valor: ");
scanf("%d", &valor1);
O resultado da expressão lógica (0/1)
será impresso por printf
printf("\nDigite outro valor: ");
scanf("%d", &valor2);
printf("\n0 - Falso, 1 - Verdade");
printf("\nvalor1 igual a valor2? %d", (valor1 == valor2) );
printf("\nvalor1 maior que valor2? %d", (valor1 > valor2) );
printf("\nvalor1 menor que valor2? %d", (valor1 < valor2) );
printf("\nvalor1 maior ou igual que valor2? %d", (valor1 >= valor2) );
printf("\nvalor1 menor ou igual que valor2? %d", (valor1 <= valor2) );
printf("\nvalor1 diferente que valor2? %d", (valor1 != valor2) );
getch();
}
Linguagem C, A. Barão, 2002
21
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Operadores de manipulação de bits (exemplo #1)
#include <stdio.h>
#include <conio.h>
void main(void)
{
int valor;
clrscr();
printf("\nDigite um valor: ");
scanf("%d", &valor);
printf("\nValor digitado: %d", valor);
printf("\nValor depois de deslocar todos os bits uma posicao para a esquerda: %d", ( valor << 1 ) );
printf("\nValor depois de deslocar todos os bits duas posicoes para a esquerda: %d", ( valor << 2 ) );
printf("\nValor depois de deslocar todos os bits tres posicoes para a esquerda: %d", ( valor << 3 ) );
getch();
}
Linguagem C, A. Barão, 2002
22
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Operadores de manipulação de bits (exemplo #2)
#include <stdio.h>
#include <conio.h>
Nota:
As técnicas de manipulação de
bits são muito importantes
Para acesso e configuração de
hardware...
void main(void)
{
int a = 45; // em binario 101110
int b = 28; // em binario 011100
clrscr();
printf("\na E b = %d", ( a & b ) ); // resultado 12 (1100)
printf("\na OU b = %d", ( a | b ) ); // resultado 61
getch();
}
Linguagem C, A. Barão, 2002
23
Linguagem C Identificadores, variáveis, constantes, operadores e expressões
Prioridade dos operadores
( ) [ ] ->
Maior prioridade
! - ++ -- & (cast) sizeof
*/%
+<< >>
< <= > >=
== !=
&
^
|
&&
||
?:
= += -= /= %= &= ^= != <<= >>=
Menor prioridade
,
Linguagem C, A. Barão, 2002
24
Download

Linguagem C - Alexandre Barão - Recursos On