As origens de C
-
Implementada por Dennis Ritchie em 1970 e utilizava o sistema operacional UNIX;
-
As linguagens precursoras foram BCPL (Martin Richards) e B (Ken Thompsom);
-
Um grande número de implementações de C foram criadas. Para criar um padrão entre todas, foi criado o C padrão ANSI.
C é uma linguagem de médio nível
-
C é assim classificada pois combina elementos de linguagens de alto nível (Pascal, BASIC) com a funcionalidade e recursos de linguagens de baixo nível (Assembly).
-
Esta característica torna os programas escritos em C portaveis, ou seja, embora desenvolvidos para um tipo de computador podem ser adaptados para outro.
C é uma linguagem estruturada
-
Compartimentalização do código e dos dados : dividir e esconder do resto do programa informações necessárias para se realizar uma tarefa;
-
Esta característica é atingida pelo uso de funções (isoladas) e variáveis locais. Assim os eventos que ocorrem dentro de cada função não atingem o resto do programa.
-
Linguagens modernas apresentam o modelo estruturado.
Compiladores X Interpretadores
-
São programas sofisticados que operam sobre o código-fonte do programa;
-
Código fonte: O texto de um programa que o usuário pode ler (programa). É a entrada para o compilador;
-
Interpretador: Lê o código-fonte linha por linha, e executa a instrução específica contida na linha. Deve estar presente em toda execução;
-
Compilador: Lê o programa inteiro e converte-o em um código-objeto, que é a tradução do código-fonte em código de máquina, sendo então passível de execução direta pelo computador (apenas digitando seu nome). Entrada para o linkeditor;
-
Tempo de Compilação: Eventos que ocorrem enquanto o programa é compilado (erro de sintaxe – escrita);
-
Tempo de Execução: Eventos que ocorrem quando o programa é executado (erro de semântica – significado, lógica);
Forma de um programa em C
-
A linguagem C padrão é formada por 32 palavras-chave, cujo número pode variar de acordo com o compilador utilizado;
-
Todas as palavras chave são MINÚSCULAS;
-
Em C minúsculas e maiúsculas são diferentes, ou seja, else ELSE;
-
Todo programa C consiste em uma ou mais funções com funções definidas;
-
A única função obrigatória é a main(), que a primeira a ser chamada quando o programa é executado;
A lista de palavras chave é :
|
auto |
double |
int |
switch |
|
break |
enum |
long |
typedef |
|
case |
extern |
register |
union |
|
char |
float |
return |
unsigned |
|
const |
for |
short |
void |
|
continue |
goto |
signed |
volatile |
|
Do |
if |
sizeof |
while |
|
default |
else |
static |
struct |
A forma geral de um programa é:
declarações globais (variáveis, funções e bibliotecas);
tipo main (lista de parâmetros)
{
seqüência de comandos;
}
tipo função1 (lista de parâmetros)
{
seqüência de comandos;
}
.
.
.
tipo funçãon (lista de parâmetros)
{
seqüência de comandos;
}
A biblioteca e a Linkedição
-
Todo compilador C vem com uma biblioteca padrão de funções que realizam as tarefas necessárias e mais comuns;
-
Portanto uma biblioteca, nada mais é que um arquivo contendo as funções que um programa C pode usar (funções de E/S e outras rotinas úteis);
-
O padrão ANSI especifica o conjunto mínimo de funções que pode variar de compilador para compilador;
-
As bibliotecas básicas mais utilizadas para problemas simples são: <stdio.h>=e/s;<math.h>=recursos matemáticos, etc….
-
Para executar as mesmas em programas, temos a sintaxe:
#include <bibliot>
-
O linkeditor combina o código-objeto do programa escrito com o código objeto das funções da biblioteca C padrão e gera um programa executável.
Compilação de um programa
Criação do programa
Compilação do programa
Linkedição do programa com as funções
Obs.: A maioria dos compiladores já vem com editores que texto para feitura dos programas. Em outros onde não estes não estão inclusos deve-se usar editores padrão para criar o programa.
Expressões em C
Tipos básicos de Dados
Informa ao compilador a forma de tratamento de dados;
-
O tamanho e faixa de valores variam com o tipo de processador e compilador. São eles:
-
inteiro (int)= ocupa geralmente 1 byte;
-
caracter(char)= ocupa geralmente 2 bytes representados por valores definidos pelo conjunto de caracteres ASCII
-
ponto flutuante(float)= depende da representação
-
ponto flutuante de precisão dupla (double)= idem anterior;
-
sem valor (void)= define funções sem retorno.
Modificadores de tipo básicos
-
São usados para alterar o significado de um tipo básico para adapta-lo mais precisamente às necessidades de diversas situações;
-
Devem preceder os tipos quando da declaração de variáveis;
-
São: signed (com sinal), unsigned(sem sinal), short(curto), long (longo)
Todos os tipos de dados definidos no padrão ANSI
Tipo |
Tamanho aproximado em bits |
Faixa |
|
Char |
8 |
-127 a 127 |
|
Unsigned char |
8 |
0 a 255 |
|
Signed char |
8 |
-127 a 127 |
|
Int |
16 |
-32767 a 32767 |
|
Unsigned int |
16 |
0 a 65535 |
|
Signed int |
16 |
O mesmo que int |
|
Short int |
16 |
O mesmo que int |
|
Unsigned short int |
16 |
0 a 65535 |
|
Signed short int |
16 |
O mesmo que short int |
|
Long int |
32 |
-2.147.483.647 a 2.147.483.647 |
|
Signed long int |
32 |
O mesmo que long int |
|
Unsigned long int |
32 |
0 a 4.294.967.295 |
|
Float |
32 |
Seis digitos de precisão |
|
Double |
64 |
Dez dígitos de precisão |
|
Long double |
80 |
Dez dígitos de precisão |
Variáveis
-
Uma variável é uma posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa;
-
Todas as variáveis a serem utilizadas em um programa devem ser declaradas antes de serem usadas;
-
A forma geral (sintaxe) é:
tipo lista de variáveis;
onde tipo é qualquer tipo de dados válido em C padrão e lista de variáveis pode consistir em um ou mais nomes de identificadores separados por vírgulas;
Identificadores
-
São nomes dados a funções, variáveis e outros objetos definidos pelo usuário;
-
Pode ter de um a diversos caracteres (6 quando estiver envolvido em linkedição e 31 quando não estiver). O número é definido pelo compilador;
-
Deve começar com uma letra ou um sublinhado “_” e os caracteres subseqüentes devem ser letra, números ou sublinhados.
-
Não pode ser igual a uma palavra chave;
-
Letras maiúsculas e minúsculas são tratadas diferentes então = cont, Cont e CONT são identificadores distintos.
Exemplos:
-
Correto
Incorreto
Count
1count
teste23
hi!there
nome_alu
nome…aluno
Onde as variáveis são declaradas
-
Variáveis Globais: Declaradas fora de todas as funções. É conhecida, utilizada, alocada, e mantém seu valor enquanto o programa estiver em execução.
-
Variáveis Locais: Declaradas internamente as funções ou blocos “{ }”. São conhecidas e utilizadas somente no bloco de comandos onde foram criadas. Existem apenas enquanto o bloco em que foram declaradas está sendo executado.
-
Parâmetros Formais: Se uma função usa argumentos, estas variáveis devem ser declaradas. Sua validade na função é idêntica a das variáveis locais.
Exemplos:
Global
#include <stdio.h>
int x;
void main (void)
{
}
Local
#include <stdio.h>
void main (void)
{
int x;
}
ou
void main (void)
{
int I;
I=10;
{
int j;
j=10
}
Parametro formal
#include <stdio.h>
void main (void)
{
…
}
void f1 (int i)
{
I=2+5;
}
Inicialização de variáveis
-
Valores podem ser dados as variáveis no momento da declaração;
-
Sintaxe: tipo nome_da_variável = constante;
-
Exemplos:
char ch = ’a’;
int first = 0;
float balance = 123.23;
Constantes
São valores fixos que o programa não pode alterar;
-
Pode ser dos cinco valores básicos de C;
-
Constantes caracter: envolvidas por aspas simples (ex.:‘Cascavel’),
-
Constantes inteiras: especificadas com números sem componentes fracionários (ex.:10,-100),
-
Constante ponto flutuante: requerem o ponto decimal seguido da parte fracionária no número (ex.: 11.23)
-
Constantes string: Conjunto de caracteres colocados entre aspas duplas. Exemplo: “Curitiba é a capital do Paraná” é uma string.
-
Constantes caracter de barra inversa: A grande maioria das constantes caracter podem ser impressas. Porem outros caracteres como “retorno do carro” ou “pular uma linha” são impossíveis inserir pelo teclado por uma representação gráfica. Assim, estas constantes definem caracteres não impressos pelos comandos de saída.
Alguns exemplos:
-
código
Significado
\n
Nova linha
\a
Alerta (beep)
\b
Retrocesso
\r
Retorno de carro
Operadores
-
Operador de atribuição: Representado pelo caracter “=” e estabelece a sintaxe : nome_da_variável = valor
exemplo: i =10;
Também pode definir atribuições múltiplas: i = j = x = 10;
-
Operadores Aritméticos: Realizar operações elementares da matemática entre dados numéricos. A tabela abaixo aponta os principais operadores e a ordem de prioridade de execução dos mesmos.
maior
-
Operador
Ação
++ –
Incremento e Decremento
-
Menos
* / %
Multiplicação, divisão e resto divisão inteira
+ -
Soma e subtração
menor
Obs.1: O operador de incremento soma um a seu operando e o de decremento subtrai um de seu operando. Assim: x = x+1 é o mesmo que x++ e que ++x. E x = x-1 é o mesmo que x– ou –x. Quando são usados em expressões a posição determina a ordem se execução, ou seja:
x =10; y = ++x; o y recebeu 11 e
x=10; y=x++; o y recebeu 10 e x recebeu 11
Obs2.: Existe uma variante do comando de atribuição chamado de C reduzido, que simplifica a codificação de um certo tipo de operações de atribuição. Por exemplo: x = x +10; pode ser reescrito como x += 10; Assim, podemos reduzir o código para quaisquer operadores aritméticos através da sintaxe: var operador=expressão
Operadores Relacionais e Lógicos
-
Operadores Relacionais servem para comparar números: >, >=, <,<=, = =, !=.
-
Operadores Lógicos resultam valores verdadeiro e falso para expressões e regem os resultados a partir destas combinações lógicas: &&, !!, ! (e, ou e não).
-
As expressões podem combinar os dois tipos de operadores e o resultado sempre será verdadeiro (em C qualquer valor diferente de 0) ou falso (em C é 0)
-
A tabela verdade para os operadores lógicos podem descritas como:
|
P |
Q |
P &&Q |
P !!Q |
!P |
|
V |
V |
V |
V |
F |
|
V |
F |
F |
V |
F |
|
F |
V |
F |
V |
V |
|
F |
F |
F |
F |
V |
Precedência
maior
-
!
> >= < <=
= = !=
&&
!!
menor
Operadores Parênteses “( )”: Alteram a ordem de execução das expressões. Os primeiros cálculos a serem resolvidos pelo compilador são os escritos nos parênteses mais internos. Ex.: x = 1* (2+3)
Resumo das Precedências
Maior
-
( )
++ – –
- / %
+ -
< <= > >=
= = !=
!
&&
!!
= += – = *= /=
Menor
Download
Para fazer o download do DEV-CPP clique no link abaixo
