Linguagem c
-
Upload
joao-marques -
Category
Documents
-
view
15 -
download
1
description
Transcript of Linguagem c
Conteúdo
● Introdução● Tipos de dados● Entrada e Saída de dados● Operadores e Expressões● Estruturas de controle
Introdução
● Linguagem Estruturada (Imperativa)– Obter informações a serem processadas
– Armazenar informações temporariamente
– Manipular as informações
– Exibir o resultado para o usuário
Elementos Básicos
● Funções de entrada de dados● Tipos de dados, variáveis e constantes● Manipular as informações
– Operadores e Expressões
– Desvios condicionais
– Laços
– Funções
● Saída de dados
Histórico
● Linguagem desenvolvida na década de 60● Não é propriamente uma linguagem de alto
nível● Utilizada para o desenvolvimento do Sistema
Operacional UNIX● Padronização ANSI
Programa em C
● Um programa em C é um conjunto de uma ou mais funções
● Estas funções podem estar todas em um mesmo arquivo ou dividas por vários arquivos
● Todo programa em C deve ter uma função chamada main, onde começa a execução do programa
Compilação
Arquivo fonte (arquivo com extensão .c)
Compilação
Arquivo fonte (arquivo com extensão .c)
Pré-Processador
Programa fonte + definições de bibliotecas
Compilação
Arquivo fonte (arquivo com extensão .c)
Pré-Processador
Programa fonte + definições de bibliotecas
Compilador
Programa objeto (arquivo com extensão .o)
Compilação
Arquivo fonte (arquivo com extensão .c)
Pré-Processador
Programa fonte + definições de bibliotecas
Compilador
Programa objeto (arquivo com extensão .o)
Linkeditor
Programa executável (arquivo com extensão .exe)
Compilação com vários .C
Arquivo fonte 1
Pré-Processador
Compilador
Linkeditor
Programa executável (arquivo com extensão .exe)
Arquivo fonte 2
Pré-Processador
Compilador
Arquivo fonte 3
Pré-Processador
Compilador
Bibliotecas
● Algumas funções desenvolvidas em programas podem ser agrupadas em bibliotecas para serem utilizadas por outros programas
● Algumas bibliotecas são padronizadas:– Entrada e saída
– Funções Matemáticas
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Comentários.O compilador ignora
todo texto após a sequência
de caracteres /**/
Exemplo de programa em C
Definição da funçãoprincipal. Entre chavesficam declarações de
variáveis e chamadas defunções
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Comando de captura de entrada de dados
do teclado. %f informa queespera-se números reais.Os
dados capturados serãoarmazenados em base e altura.
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Definição de 3 variáveis denúmero real. Toda variável
deve ser declarada antes deser utilizada
Exemplo de programa em C
Calcula uma expressãoaritmética e armazena o
resultado na variável área.
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Funções de saída de dados por meio do monitor. Nasegunda chamada o %f serve para indicar que
naquele lugar será impressoo valor da variável area.
Exemplo de programa em C
/* Programa de cálculo da área de um triângulo */
#include <stdio.h>
main()
{
float area, base, altura;
printf (“Entre com a base e a altura: ”);
scanf (“%f %f”, &base, &altura);
area = (base * altura) / 2;
printf (“A área do retângulo é %f\n”, area);
}
Linhas iniciadas por #, servem para importar bibliotecas. A biblioteca stdio.hDisponibiliza as funções printf e scanf.
Tipos de dados
● Caracteres– Char
● Números inteiros– Short
– Int
– Long
● Números reais– Float
– Double
● Endereços de memória
Peculiaridades
● A quantidade de memória ocupada por um dado de um tipo determina quais valores podem ser armazenados
● Não há uma definição padronizada em C para o tamanho dos tipos de dados
● Depende:– da máquina
– do compilador
– da versão do compilador
Variáveis
● Os nomes de variáveis podem começar com letras (a..z, A..Z) ou com o caracter underscore ( _ ).
● O restante do nome pode conter letras, dígitos ou underscores.
● Letras maiúsculas e minúsculas são diferentes.
Declaração de Variáveis
● Toda variável deve ser declarada antes de ser utilizada.
● Sintaxe da declaração de variável:– tipo nome;
● É possível declarar mais de uma variável do mesmo tipo separando os nomes por vírgulas.
● As declarações de variáveis devem sempre vir após o abre chaves do bloco, antes dos comandos.
● Não é possível misturar declarações e comandos
Exemplo de declaração
main()
{
int i, j;
char carac, resp;
unsigned long _var;
float real;
double REAL;
... comandos ...
}
Atribuição
● Para atribuir valor a uma variável usa-se o operador de atribuição: =
● Sintaxe:
variável = expressão;
● A atribuição pode ser feita junto com as declarações ou junto com os comandos.
● Juntos dos comandos é possível fazer atribuições múltiplas.
Exemplo de atribuição
{
/* junto com as declarações */
int i = 10, j;
char a, b = ‘k’, c;
float u, x = 1.5e10, y = 2.6;
/* junto com os comandos */
a = c = ‘M’;
/* a e c recebem ‘M’ */
j = i;
/* j recebe o valor de i */
u = x * 2 + y /4;
}
Entrada de Saída de dados
● Há diversas funções para fazer entrada e saída de dados em C.
● Estas funções pertencem a biblioteca de entrada e saída padrão.
● Sempre que uma destas funções for utilizada deve-se incluir no programa as definições do arquivo stdio.h:
#include <stdio.h>
Printf
● Imprime textos e dados dos tipos básicos da linguagem C no formato especificado pelo programador.
● Sintaxe:
printf (“controle”, arg1, arg2, ..., argn);● Onde o controle é uma cadeia de caracteres contendo:
– texto a ser exibido
– controles de impressão
– formatos de impressão
Controles de Impressão
● Caracteres especiais e caracteres sem representação gráfica.
● Mais comuns:– \n - new line
– \f - form feed
– \” - aspas
– \0 - NULL
– \t - tabulação
– \b - backspace
– \\ - contrabarra
Formatos de Impressão
%[-][0][tamanho][.precisão][l,h]{d,o,x,u,c,s,e,f,g}● %d - decimal● %o – octal● %c - caracter● %s - cadeia de caracteres● %x - hexadecimal● %u - decimal com sinal● %% - caracter porcento● %f - real (ponto flutuante)● %e - real (notação exponencial)● %g - real (menor notação)● %ld - decimal longo● %hd - decimal short● %lf - double
Scanf
● Lê qualquer dos tipos básicos de dados para uma ou mais variáveis.
● Os argumentos TÊM que ser variáveis e devem ser antecedidos pelo caracter e-comercial (&).
● Sintaxe:
int scanf (“controle”, &arg1, &arg2, ..., &argn);● onde:
– controle é uma cadeia de caracteres indicando os dados que devem ser lidos. Ela é composta por caracteres comuns e formatos de leitura.
Scanf
● Espaços, tabs e newlines são ignorados.● Formatos de leitura indicam os tipos dos dados
passados como argumentos e são semelhantes aos formatos de impressão
● Sintaxe:
%{d,o,x,u,c,s,e,f,g}● O valor de retorno da função é o número de dados lidos.● Todos os caracteres (salvo os do formato) que estiverem
no controle devem ser digitados.
Entrada e saída de caracteres
● Funções:– char getchar();
– putchar(char);
● Exemplo:– char c;
– c = getchar(); = scanf(“%c”,&c);
– putchar(c); printf(“%c”,c);
● São funções mais rápidas que o scanf e o printf.
Operadores e Expressões
● Expressões:– Combinação de operandos e operadores para obter um
resultado. Exemplo: expressão aritmética.
● Operandos podem ser variáveis, constantes, funções ou outras expressões.
● Os operandos devem ter tipos compatíveis entre si.● Assim como os operandos, o resultado da
expressão também tem um tipo definido de acordo com o tipo dos operandos.
Operadores aritméticos
● Operadores aritméticos:
/ divisão
* multiplicação
+ soma
- subtração
% resto da divisão inteira
Precedência de Operadores
I. () []
II. ! ~ ++ – &
III. * / %
IV. + -
V. >> <<
VI. < <= >= >
VII. == !=
VIII. &
IX. ^
X. |
XI. &&
XII. ||
XIII. ? :
XIV. Atribuição ( = )
Incremento e Decremento
++i = i = i + 1
– --i = i = i - 1
● Termitem gerar um código mais compacto e eficiente que as expressões equivalentes.
● Notação prefixa: ++i --i– operadores com grande precedência
● Notação posfixa:– i++
– i--
● a operação só é realizada após o cálculo do resto da expressão que a contém
Operadores bit a bit
● Operações lógicas bit a bit e deslocamentos:– & (and)
– ^ (xor)
– | (or)
– ~ (not)
– << (shift left)
– >> (shift right)
Operadores relacionais
● > maior que >= maior ou igual● == igual a < menor que● <= menor ou igual != diferente● Exemplo :
char sexo;
int eh_mulher;
eh_mulher = sexo == ‘M’;● Não confundir com:
eh_mulher = sexo = ‘M’;
Operadores lógicos
● Permitem a combinação de duas expressões relacionais– && (and)
– ||(or)
– ! (not)
Desvios condicionais
● Permitem condicionar a execução de um trecho de programa ao resultado de uma expressão.
● Em C há 3 formas de desvio condicional:– comando if
– operador condicional ternário
– comando switch
IF
● Condiciona a execução de um comando ao resultado de uma expressão.
● Sintaxes:
if (expr)
comando;
if (expr)
comando1;
else
comando2;
IF
● É costume colocar o comando ligeiramente deslocado em relação a linha do comando if
● A identação facilita a compreensão da lógica do programa
if (a == b)
printf (“só executa se a == b\n”);
printf (“sempre vai ser executado\n”);
Operador condicional ternario
● Utilizador para substituir linhas de comando na forma:
if (expr1)
var = expr2;
else
var = expr3;● Sintaxe
expr1 ? expr2 : expr3
Switch
● Serve para selecionar entre vários resultados possíveis de uma expressão● Sintaxe:
switch (expr)
{
case constante1:
comandos;
case constante2:
comandos;
default:
/* opcional */
comandos;
}
Switch
● O computador compara o resultado de expr com cada uma das constantes.
● Se o resultado for igual a alguma constante começa a executar os comandos a seguir ao caracter “:”
● A execução continua inclusive pelos comandos de outros cases
● Se houver algum comando break, o computador passa a executar o próximo comando após o switch
Laços
● São estruturas utilizadas quando é necessário repetir um trecho de programa um determinado número de vezes
● Em C há 3 formas de Laços (ou loops):– while
– for
– do ... while
While
● Sintaxe:
while (expr)
comando;● Executa o comando (ou bloco de comandos)
enquanto a expressão tiver o valor verdadeiro (ou seja, valer qualquer coisa diferente de zero)
For
● Costuma ser utilizado para repetir comandos um número fixo de vezes
● Sintaxe:
for (expr1; expr2; expr3)
comando;● onde:
– expr1 - serve para inicialização
– expr2 - condição
– expr3 - varia o valor testado na condição
Do...While
● É utilizado para fazer um while que deve ser executado pelo menos uma vez
● Sintaxe:
do
comandos;
while (expr);
Comando goto
● Desvia a execução do programa para um local identificado por um rótulo.
● Sintaxe:
goto rotulo;
...
rotulo:
comando;● Deve ser evitado ao máximo pois pode gerar programas
ininteligíveis
Comando break
● Interrompe a execução de :– switch
– while
– for
– do ... while
● Equivale a um goto para o primeiro comando após o switch ou os laços
Comando continue
● Interrompe a iteração atual de um laço (while, for, do...while) e passa para a próxima iteração.
● Nos laços while e do...while equivale a um goto para o teste da condição de parada.
● No laço for equivale a um goto para a terceira expressão.