Linguagem c

55
Linguagem C Laysson Oliveira Luz Departamento de Computação [email protected]

description

Linguagem c

Transcript of Linguagem c

Page 1: Linguagem c

Linguagem C

Laysson Oliveira LuzDepartamento de Computação

[email protected]

Page 2: Linguagem c

Conteúdo

● Introdução● Tipos de dados● Entrada e Saída de dados● Operadores e Expressões● Estruturas de controle

Page 3: Linguagem c

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

Page 4: Linguagem c

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

Page 5: Linguagem c

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

Page 6: Linguagem c

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

Page 7: Linguagem c

Compilação

Arquivo fonte (arquivo com extensão .c)

Page 8: Linguagem c

Compilação

Arquivo fonte (arquivo com extensão .c)

Pré-Processador

Programa fonte + definições de bibliotecas

Page 9: Linguagem c

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)

Page 10: Linguagem c

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)

Page 11: Linguagem c

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

Page 12: Linguagem c

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

Page 13: Linguagem c

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);

}

Page 14: Linguagem c

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 /**/

Page 15: Linguagem c

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);

}

Page 16: Linguagem c

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.

Page 17: Linguagem c

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

Page 18: Linguagem c

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);

}

Page 19: Linguagem c

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.

Page 20: Linguagem c

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.

Page 21: Linguagem c

Tipos de dados

● Caracteres– Char

● Números inteiros– Short

– Int

– Long

● Números reais– Float

– Double

● Endereços de memória

Page 22: Linguagem c

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

Page 23: Linguagem c
Page 24: Linguagem c

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.

Page 25: Linguagem c

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

Page 26: Linguagem c

Exemplo de declaração

main()

{

int i, j;

char carac, resp;

unsigned long _var;

float real;

double REAL;

... comandos ...

}

Page 27: Linguagem c

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.

Page 28: Linguagem c

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;

}

Page 29: Linguagem c

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>

Page 30: Linguagem c

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

Page 31: Linguagem c

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

Page 32: Linguagem c

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

Page 33: Linguagem c

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.

Page 34: Linguagem c

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.

Page 35: Linguagem c

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.

Page 36: Linguagem c

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.

Page 37: Linguagem c

Operadores aritméticos

● Operadores aritméticos:

/ divisão

* multiplicação

+ soma

- subtração

% resto da divisão inteira

Page 38: Linguagem c

Precedência de Operadores

I. () []

II. ! ~ ++ – &

III. * / %

IV. + -

V. >> <<

VI. < <= >= >

VII. == !=

VIII. &

IX. ^

X. |

XI. &&

XII. ||

XIII. ? :

XIV. Atribuição ( = )

Page 39: Linguagem c

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

Page 40: Linguagem c

Operadores bit a bit

● Operações lógicas bit a bit e deslocamentos:– & (and)

– ^ (xor)

– | (or)

– ~ (not)

– << (shift left)

– >> (shift right)

Page 41: Linguagem c

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’;

Page 42: Linguagem c

Operadores lógicos

● Permitem a combinação de duas expressões relacionais– && (and)

– ||(or)

– ! (not)

Page 43: Linguagem c

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

Page 44: Linguagem c

IF

● Condiciona a execução de um comando ao resultado de uma expressão.

● Sintaxes:

if (expr)

comando;

if (expr)

comando1;

else

comando2;

Page 45: Linguagem c

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”);

Page 46: Linguagem c

Operador condicional ternario

● Utilizador para substituir linhas de comando na forma:

if (expr1)

var = expr2;

else

var = expr3;● Sintaxe

expr1 ? expr2 : expr3

Page 47: Linguagem c

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;

}

Page 48: Linguagem c

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

Page 49: Linguagem c

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

Page 50: Linguagem c

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)

Page 51: Linguagem c

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

Page 52: Linguagem c

Do...While

● É utilizado para fazer um while que deve ser executado pelo menos uma vez

● Sintaxe:

do

comandos;

while (expr);

Page 53: Linguagem c

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

Page 54: Linguagem c

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

Page 55: Linguagem c

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.