• Nenhum resultado encontrado

Linguagem de Programação C

N/A
N/A
Protected

Academic year: 2021

Share "Linguagem de Programação C"

Copied!
43
0
0

Texto

(1)

Linguagem de Programação

C

Disciplina : Paradigmas de Programação

Prof.: Gláucya Carreiro Boechat

Universidade Federal

Rural

de Pernambuco

Departamento de Estatística e Informática

(2)

Anatomia de um Programa em C



Características da Linguagem C



Ponto de entrada (início) do programa é a

função

main()

 Todo programa em C deve ter sempre uma função main() declarada.



/* e */ identificam respectivamente o começo e

o fim de comentários

 Na linguagem C++ usa-se o símbolo // para iniciar um

comentário que se estende até o final da linha onde foi iniciado

(3)

Anatomia de um Programa em C



Características da Linguagem C



; é um terminador de declarações



Declarações iniciadas por # identificam

comandos para o pré-processador

 Declarações deste tipo não são realmente

compiladas: são pré-processadas

 Exemplos

(4)

Anatomia de um Programa em C



Características da Linguagem C



{ e } identificam o início e o fim de um bloco de

comandos

 Equivalente ao begin...end do Pascal



Distinção entre maiúsculas e minúsculas

 Padronização entre os programadores

 Minúsculas para nomes de variáveis, funções e

comandos

 Maiúsculas para nomes de constantes simbólicas e

(5)

Estrutura de um Programa em C

[<definições de pré-processamento>]

[<declaração de variáveis globais>]

main() {

[<declaração de variáveis locais>]

/* Corpo da função main() */ }

[

[<tipo>] funcao1([<lista de parâmetros>])

[<declaração dos parâmetros>] {

(6)

Exemplo de um Programa em C

#include <stdio.h>

main() {

int inicio, fim, passo; float fahr;

float celsius(float fahr);

inicio = 0; /* limite inferior */ fim = 300; /* limite superior */ passo = 20; /* passo incremental */ printf("Fahrenheit Celsius\n");

fahr = inicio;

while (fahr <= fim) {

printf("%10.0f %7.1f\n", fahr, celsius(fahr)); fahr = fahr + passo;

(7)

Exemplo de um Programa em C



Versão C original da função celsius()

float celsius(fahr)

float fahr; {

return ((5.0/9.0)*(fahr - 32.0)); }



Versão C ANSI da função celsius()

(8)

Tipos de Dados em C

 Obs: A palavra chave unsigned pode declarar inteiros que

Tipo

Declaração Bytes Faixa

Caracter

char

1

0 a 255

Inteiro

int

2

-32768 a +32767

Inteiro Curto

short

1 ou 2 -128 a +127 ou igual ao int

Inteiro Longo

long

4

-2147483648 a +2147483647

Ponto flutuante

float

4

±3.4E±38

Ponto flutuante

precisão dupla

double

8

±1.7E±308

Ponto flutuante

(9)

Identificadores em um Programa C



Uso de identificadores

 Nomes de Variáveis, constantes e funções



Formação de nomes de identificadores

 Todo identificador deve começar por uma letra ou sublinhado

(underscore) ‘_’

 Os caracteres seguintes devem ser letras, dígitos ou ‘_’  Palavras chaves não são permitidas

auto

break

case

char

continue

default

do

double else

extern

float

for

goto

if

int

(10)

Identificadores em um Programa C



Declaração de Variáveis

<tipo> var1[, var2, ..., varN];

<tipo> var1 = <valor>;



Exemplos

 int x = 10;  float z;

 char ch = ‘a’;

(11)

Identificadores em um Programa C



Locais de Declaração e Regras de Escopo



Há 3 locais principais de um programa em C

onde variáveis são declaradas:

 Dentro das funções

 Declaração dos parâmetros  Fora das funções

(12)

Declaração de Variáveis em C



Variáveis Locais

 As variáveis locais são declaradas dentro do bloco de uma

função

 São visualizadas apenas dentro da função onde foram

declaradas

 Sobrepõem a definição de uma variável global de mesmo

nome dentro da função

 São criadas em tempo de execução quando a função é

chamada e destruídas após o final da execução da mesma

 São também chamadas de variáveis dinâmicas ou

(13)

Declaração de Variáveis em C



Exemplos de Variáveis Locais

func1()

func2()

{

{

int x;

int x =

-100;

(14)

Declaração de Variáveis em C



Parâmetros formais

 São resultados da declaração dos parâmetros passados

para as rotinas

 Comportam-se como qualquer outra variável local dentro

da função

Padrão ANSI: No protótipo

func1(int arg1, char *str) {

...

}

C original: Entre o nome da função e a chave de abertura

func1(arg1, str) int arg1; char *str; { ... }

(15)

Declaração de Variáveis em C



Variáveis globais



Declaração fora do corpo de qualquer função



Possuem como escopo todas as rotinas da

aplicação



São alocadas em tempo de compilação e

ocupam memória durante toda a execução do

programa

(16)

Declaração de Variáveis em C



Variáveis globais



Observações

 Caso se tente declarar uma variável global de mesmo

nome mais de uma vez, o compilador indicará um erro de identificador duplicado

 Caso se esteja trabalhando em uma aplicação com

mais de um módulo (arquivos fontes) é preciso fazer uma indicação ao compilador que as variáveis globais já estão declaradas em outro módulo

(17)

Declaração de Variáveis em C



Exemplo com Variável Global

int global; main() { global = 10; func1(); printf("%d\n", global); func2(); printf("%d\n", global); }

void func1() void func2()

(18)

Modificadores de declaração

/* Arquivo Main.c */ int global; main() { global = 10; func1(); printf("%d\n", global); /* Arquivo Arq1.c */

extern int global;

void func1() {

global = 20; }



Modificador de declaração extern



Indica ao compilador que os nomes e tipos que se

seguem já foram declarados em um outro módulo da

aplicação

(19)

Modificadores de declaração



Modificador de declaração static



Principais usos:

 Declaração de variáveis estáticas locais  Declaração de variáveis estáticas globais



Variáveis estáticas locais

 São variáveis que são visíveis apenas na função onde

foram declaradas, como as variáveis locais, mas que mantêm seus valores entre chamadas de função, como as variáveis globais.

(20)

Modificadores de declaração

 Exemplo com modificador static local

#include <stdio.h> main() { int i; for (i = 0; i < 10; ++i) func1(); } void func1() {

static int num_cham = 0;

printf("Chamada = %d\n", num_cham); num_cham = num_cham + 1;

(21)

Modificadores de declaração



Variáveis estáticas globais



São variáveis globais que são enxergadas

apenas no módulo (arquivo fonte) onde foram

declaradas.

 Exemplo /* Arquivo Arq1.c */

static int global; void func1() { global = 20; } void func2() /* Arquivo Main.c */ int global; main() { global = 10;

(22)

Constantes na Linguagem C



Declaração de Constantes

 O Padrão ANSI para a linguagem C prevê a declaração de

constantes

const <tipo> c1 = <valor1>[, c2 = <valor2> ...];

 Exemplos

const int x = 10, y = 30;

const float pi = 3.14159265359;

 Observações

 Constantes não podem ter seus valores alterados em nenhum

ponto do programa, apenas podem ser iniciadas

 Compiladores que não seguem o padrão ANSI não compilam

este tipo de declaração

(23)

Valores Constantes



Caracteres (entre apóstrofes)



‘a’, ‘A’, ‘&’, ‘4’, ...



‘\0’, ‘\b’ , ‘\a’, ‘\t’, ‘\f’, ‘\n’, ‘\r’ , ‘\\’, ‘\’’



‘\x43’ = ‘C’, ‘\112’ = ‘J’



Cadeia de Caracteres (entre aspas)



“Cadeia de Caracteres”



“hello world”

(24)

Valores Constantes



Inteiros: Valores inteiros precedidos ou não

de sinal



10, +5 , +32767



-15, -32768



Longos: Como os inteiros, mas seguidos do

sufixo L, para diferenciar dos inteiros



10L, +15L, 40000L,



-5L, -100000L

(25)

Valores Constantes



Octais: Valores numéricos iniciados com 0



010,



040,



0763



Hexadecimais: Valores numéricos iniciados

com 0x

(26)

Valores Constantes



Ponto Flutuante



Valores inteiros ou fracionários com ponto

decimal, precedidos ou não por sinal. Pode-se

usar também a notação com expoente



Exemplos

 10.0  -5.2

(27)

Operadores e Expressões



Operador de Atribuição

 Coloca na área de memória da variável localizada à

esquerda do operador (lvalue) o resultado da expressão

localizada à direita do operador (rvalue)

 Sintaxe

<variavel> = <expressao>

 Exemplos

 x = 10;

 y = 10*(20 - x);

(28)

Operadores e Expressões



Operadores Aritméticos

- (sinalização negativa) + (sinalização positiva) * (multiplicação) / (divisão) % (resto da divisão) + (adição) - (subtração) ++ (incremento) -- (decremento)

(29)

Operadores e Expressões



Operador de divisão

(

/ )



Pode realizar uma divisão inteira ou de ponto

flutuante



Se operadores são ambos inteiros divisão é inteira

 x = 5/2; /* resulta em x = 2 */

(30)

Operadores e Expressões



O operador resto da divisão (

%)



devolve resto da divisão inteira entre os dois

operandos

(31)

Operadores e Expressões



Operador de incremento (++) e decremento (--)

 são operadores unários que devolvem, respectivamente, o

incremento e o decremento de uma variável numérica

 Antes da variável (pré-incremento ou pré-decremento)

 Incrementa (ou decrementa) a variável antes de realizar a

avaliação da expressão onde a mesma está localizada.

x = 10; y = 20; x = ++y + 2; Seria equivalente a x = 10; y = 20;

(32)

Operadores e Expressões



Após a variável (pós-incremento ou pós-decremento)



Incrementa (ou decrementa) a variável após realizar a

avaliação da expressão onde a mesma está localizada.



x = 10;



y = 20;



x = y-- + 2;

 Resulta em x = 22 e y = 19

 Caso sejam únicos na expressão, é irrelevante aparecer antes

(33)

Operadores e Expressões



Operadores Relacionais

> (maior que) < (menor que) >= (maior ou igual a) <= (menor ou igual a) == (igual a) != (diferente de)

 são utilizados para comparar dois valores permitindo

tomadas de decisões.

 devolvem

 o valor zero (0) caso a expressão seja avaliada como FALSA  o valor um (1) caso a expressão seja VERDADEIRA

(34)

Operadores e Expressões



Exemplo

x = 10; if (x = 5) { puts(“Passei no if”); } completamente diferente de x = 10; if (x == 5) { puts(“Passei no if”);

(35)

Operadores e Expressões



Operadores Lógicos

&&

(E Lógico)

||

(OU Lógico)

!

(NÃO Lógico)



são utilizados na junção de expressões relacionais,

permitindo a criação de expressões lógicas mais

poderosas



em C qualquer valor numérico diferente de zero (0) é

(36)

Operadores e Expressões



Operadores Lógicos

(

&& , || , ! )



expressões contendo os operadores

&&

e

||

são

avaliadas sempre da esquerda para a direita

 avaliação é interrompida assim que a veracidade ou

falsidade da expressão já puder ser conhecida

 Este recurso permite a escrita de códigos limpos (enxutos),

(37)

Operadores e Expressões

 Exemplo

#include <stdio.h>

char *getlinha(char *s, int n) {

int ch;

int i = 0;

while (--n > 0 && (ch = getchar()) != EOF && ch != ‘\n’)

(38)

Operadores e Expressões



Operadores de atribuição composta

*= /= %= += -=

<<= >>= &= ^= |=



processam uma operação numa variável e

armazenam nela própria o resultado obtido.



São formados pela concatenação dos operadores

binários com o símbolo



Não são permitidos espaços (brancos) entre os

(39)

Operadores e Expressões



Operadores de atribuição composta

*= /= %= += -=

<<= >>= &= ^= |=



Exemplos

x += 2; /* equivale a x = x + 2 */

(40)

Operadores e Expressões



Operador condicional (

?:

)

 O operador condicional serve para substituir comandos da

forma

if (x > y) z = x; else

z = y;

 A sua sintaxe geral é a seguinte:

<expressão-lógica>? <expressão-1>: <expressão-2>

 O resultado da operação será <expressão-1> quando a

<expressão-lógica> for avaliada como VERDADEIRA e <expressão-2> caso aquela seja avaliada como FALSA

(41)

Operadores e Expressões



Operador tamanho de variável ou tipo (

sizeof

)

 Devolve o tamanho em bytes ocupados por uma variável

ou um tipo. Suas sintaxes de uso são as seguintes:

 sizeof(<variável>)  sizeof(<tipo>)

 Exemplos

/* tamanho em bytes da variável x */ tam = sizeof(x);

/* tamanho em bytes ocupados por um double */ tam = sizeof(double);

(42)

Operadores e Expressões



Operador vírgula (

,

)

 Um par de expressões separadas por vírgula é avaliado da

esquerda para a direita e o valor da expressão à esquerda é descartado.

 O tipo e o valor resultante é o tipo e o valor da segunda

expressão.  Sintaxe <expressão>, <expressão-2>  Exemplo for (i = 0, j = 0; i < n; ++i, ++j) { ... }

(43)

Operadores e Expressões



Operador de conversão de tipo (Cast)

 Converte o valor de uma expressão para o tipo especificado  Sintaxe (<tipo>) <expressão>  Exemplo 1 float pi = 3.141592; float valor; valor = (float)((long)(pi*100.0 + 0.5))/100.0;  Exemplo 2

Referências

Documentos relacionados

Farnsworth elaborou um método para avaliar a pontuação dos erros, atribuindo um ponto a cada peça de cor, que é a soma da diferença absoluta entre o número de uma peça

Ø Utilize sempre o aspirador com os filtros instalados para evitar reduçao do poder de aspiraçao do aparelho.. Ø Desligue o aparelho da corrente antes de mudar o saco ou

Estes juízos não cabem para fenômenos tão diversos como as concepções de visões de mundo que estamos tratando aqui.. A velocidade deste mundo

Permite através de sua interface, a pesquisa por palavras, títulos, assuntos, autores e afiliações, acesso aos links para texto completo, análise de citações,

VIOLONCELO: ANTONIO MENESES FILARMÔNICA DE CÂMARA DA BAVÁRIA REGENTE: WERNER ANDREAS ALBERT.. PIANO: ANTONIO

O mesmo pode ser relatado por Luz &amp; Portela (2002), que testaram nauplio de Artemia salina nos 15 pri- meiros dias de alimentação exógena para trairão alcançando

Acessórios como ar, direção, vidros elétricos, kit gás etc., ao serem informados pelo Leiloeiro como existentes nos veículos, poderão não estar completos ou em perfeito

Trata-se de um relato de pesquisa e experiência prática, de natureza descritiva, sobre a vivência em um projeto de extensão universitário multidisciplinar realizado na