centro integrado de tecnologia da informação curso de c/c++ aula 1 allan lima

48
Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima http://allanlima.wordpress.com/

Upload: internet

Post on 17-Apr-2015

107 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Centro Integrado de Tecnologia da Informação

Curso de C/C++Aula 1

Allan Limahttp://allanlima.wordpress.com/

Page 2: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

• Você pode:– copiar, distribuir, exibir e executar a obra – criar obras derivadas – fazer uso comercial da obra

• Sob as seguintes condições:– Atribuição. Você deve dar crédito ao autor original, da forma

especificada pelo autor ou licenciante. – Compartilhamento pela mesma Licença. Se você alterar,

transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta.

– Para cada novo uso ou distribuição, você deve deixar claro para outros os termos da licença desta obra.

– Qualquer uma destas condições podem ser renunciadas, desde que Você obtenha permissão do autor.

• Veja aqui a licença completa

Page 3: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Roteiro

• O objetivo do curso

• História da linguagem C

• Características da linguagem C

• Sistemas de tipos

• Variáveis e operadores

• Estruturas de controle

• Funções

• Entrada e Saída

Page 4: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

O objetivo do curso

• Aprender a programar em C e C++!

• Será que só isso basta?

• Não seria melhor também aprender a aprender C e C++???– Entender bem o funcionamento do programa

na memória do computador– E principalmente, aprender onde e como

encontrar ajuda

Page 5: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

História da Linguagem C

• Surgiu no início dos anos 70

• Criada inicialmente para o UNIX

• Criadores:– Dennis Ritchie (direita)– Kenneth Thompson (esquerda)

• Baseada na Linguagem B

• Versão inicial bastante simples

www.viphostsystem.com

Page 6: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

História da Linguagem C

• Ampla popularização nos anos 80

• Muitas arquiteturas e compiladores

• Problemas com a incompatibilidade

• Padronização de 82 a 89 (C ANSI)

• Até hoje existem problemas entre os diversos compiladores e sistemas operacionais

Page 7: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Características

• Paradigma Procedural

• Flexível

• Alta performance

• Poucas restrições

• Ótima iteração com:– Sistemas Operacionais– Dispositivos de Hardware– Outras Linguagens

Page 8: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Palavras Reservadas

auto, break, case, char, const, continue,

default, do, double, else, enum, extern, float,

for, goto, if, int, long, register, return,

short, signed, sizeof, static, struct, switch,

typedef, union, unsigned, void, volatile, while

Obs.: C é case sensitive

Page 9: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tipos

• São as formas que utilizamos para representar dados

• C possui 5 tipos básicos:– char, int, float, double e void

• E 4 modificadores básicos:– signed, unsigned, long e short– Os 4 podem ser aplicados ao int– long pode ser aplicado ao double– signed e unsigned aplicados ao char

Page 10: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tipos

• Modificadores de acesso:– const: a variável não pode ter o seu valor alterado– volatile: a variável pode ter o seu valor modificado

fora do controle do programa

• Classes de Armazenamento:– auto: indica que uma variável é local (opcional),

também é usada na declaração de nested functions– extern: variável declarada em outro arquivo– register: armazena, se possível, a variável em um

registrador na própria CPU.

Page 11: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tipos

• Classes de Armazenamento (Cont.):– static: não permite que um módulo externo

possa alterar nem ver uma variável global, também é usado para manter o valor de uma variável local em uma função de uma chamada para outra.

Page 12: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tipos

• O tamanho do inteiro depende da arquitetura do sistema:– Sistemas de 32 bits inteiro de 32 bits– Sistemas de 64 bits inteiro de 64 bits

• Restrições:– short int e int devem ter pelo menos 16

bits– long int com no mínimo 32 bits– short int <= int <= long int

Page 13: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Variáveis

• Declaração:– tipo nome = inicialização;

• Escopo da variáveis:– globais: podem ser usadas em qualquer lugar

do programa– locais: podem ser usadas apenas na função

onde foi declarada

Page 14: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplo

int a, b = 10; // Variáveis globais

void f(char c) { double d = 10.0; // Variável local int i = a; // Variável local // ...}

int main() { int i = b; // Variável local return 0;}

Page 15: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplos

• exemploRegister.c

• exemploStatic.c

• exemploAuto.c

Page 16: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Variáveis

• Restrições– O nome das variáveis deve começar com

uma letra ou um sublinhado “_”– Os demais caracteres podem ser letras,

números ou sublinhado– O nome da variável não pode ser igual a uma

palavra reservada e aos nomes das funções– Tamanho máximo para o nome de uma

variável:• 32 caracteres

Page 17: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Constantes

• São valores que são mantidos fixos pelo compilador

• Também podem ser:– Octais - 0NUMERO_OCTAL– Hexadecimais - 0xNUMERO_HEXADECIMAL

• Exemplos:– ‘\n’ (caractere), “C++” (string), 10 (inteiro), 15.0 (float), 0xEF (239 em decimal), 03212 (1674 em decimal)

Page 18: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Constantes de Barra Invertida

Código Significado

\b Retrocesso (backspace)

\f Alimentação de Formulário (form feed)

\t Tabulação Horizontal (tab)

\n Nova Linha

\” Aspas

\’ Apostrofo

\0 Nulo

\\ Barra Invertida

\a Sinal Sonoro (Beep)

\N Constante Octal (N é o valor da constante)

\xN Constante Hexadecimal (N é o valor da constante)

Page 19: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Operadores Aritméticos

Operador Ação

+ Soma

- Subtração ou troca de sinal

* Multiplicação

/ Divisão

% Resto da divisão inteira

++ Incremento

-- Decremento

Page 20: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exercícios

1) Qual o valor das variáveis x, y e z após o seguinte trecho de código:

int x, y, z;x = y = 10;z = ++x;x = -x;y++;x = x + y - (z--);

2) Utilize o DEVCPP para compilar e rodar código do exercício anterior.

Page 21: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Operadores Relacionais

Operador Relação

> Maior que

>= Maior que ou igual a

< Menor que

<= Menor que ou igual a

== Igual a

!= Diferente de

Page 22: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Operadores Lógicos

Operador Função

&& AND

|| OR

! NOT

Page 23: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Operadores Lógicos Bit a Bit

Operador Ação

& AND Lógico

| OR Lógico

^ XOR (OR exclusivo)

~ NOT

>> Shift Rigth

<< Shift Left

Page 24: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exercícios

3) Qual o valor das variáveis a, b, c, d, e, f após a execução do seguinte trecho de código:

int x = 2, y = 4;int a, b, c, d, e, f;a = x & y;b = x | y;c = x ^ y;d = ~x;e = x << 3;f = x >> 1;

Page 25: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tabela de Precedências

, =+=-=*=/=

? || && | ^ & ==!=

<<=>>=

<<>>

+-

*/%

!~++--.- *&

( )[ ]->

Precedência- +

Page 26: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Casts

• Sintaxe:– (tipo) expressão

• Exemplo: long a = 10, b = 4;

// f = 2.5

double f = (double) a/b;

Page 27: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Controladores de Fluxo

• C possui 7 controladores de fluxo básicos:– if– ?:– switch– for– while– do-while– goto

Page 28: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

if

if (condição) { declaração }

if (condição) { declaração1 }else { declaração2 }

if (condição1) { declaração1 } else if (condição2) { declaração2 }

else { declaração3 }

Page 29: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplo

int a = 2;

if (2) {a = 4;

} else if (0) {a = 0;

}

if (a) {a = -a;

}

Page 30: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

?:

• condição ? expressão1 : exepressão2;

• Equivalente a:if (condição) { expressão1 }

else { expressão2 }

• O operador ? é restrito, mas pode simplificar expressões grandes

• Uma expressão é diferente de uma declaração

Page 31: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplo

int a = 9, b = -4, c;

b = (a > b) ? a : b;

c = (a > b) ? b : a;

Page 32: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

switch

switch (variável) { case (constante1): declaração1; break; // O break é opcional // ... case (constanteN): declaraçãoN; break; // O break é opcional default: declaraçãoDefault;

Page 33: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplo

switch (a) { case (1): // ...

break; case (2): // ... break; default: // ...}

Page 34: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

for

for (comando; condição; comando) { declaração;}

• Exemplo: // o i não pode ser declarado no for int i; int a = 0; for (i = 0; i < 100; i++) { a = a + 14; }

Page 35: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

while

while (condição) {declaração;

}

• Executa a declaração zero ou mais vezes• Exemplo:

int i = 0; int a = 0; while (i < 100) { a = a + 14; i++; }

Page 36: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

do-while

do {

declaração;

} while (condição);

• Executa a declaração pelo menos uma vez, já que a verificação da condição é feita apenas no final de cada iteração do loop

Page 37: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplo

int i = 0;

int a = 0;

do {

a = a + 14;

i++;

} while (i < 0);

Page 38: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

break e continue e goto

• O break é usado para interromper o switch ou um loop

• Exemplo:

while (1) { a = a + 14; i++; if (i > 99) { break; } }

Page 39: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

continue

• O continue é usado para fazer um loop pular para a próxima iteração

• Exemplo:

while (1) { i++; if (i % 2 == 0) { continue; } a = a + 14;}

Page 40: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

goto

• O goto pode ser usado para dar um salto incondicional no fluxo do programa

• Exemplo:

int a = 0; inicio: a++; if (a < 10) { goto inicio; }

Page 41: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Funções

• Sintaxe:tipoDeRetorno nomeDaFunção(declaraçãoDosParâmetros) { corpoDaFunção;}

declaraçãoDosParâmetros = tipo1 nome1,..., tipoN nomeN

• Funções que não possuem retorno são void• O retorno de uma função é feito através do

comando return

Page 42: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplos

int dobro(int a) {return 2 * a;

}

int main(int a) {int c;

c = 8;c = dobro(c);return 0;

}

Page 43: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Entrada e Saída de Dados

• A função scanf é utilizada para a leitura dados do dispositivo de entrada padrão

• A função printf é utilizada para a escrita de dados do dispositivo de saída padrão

Page 44: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exemplos

int a;scanf(“%d”, &a); // lê aprintf(“%d”, a); // escreve a

char ch;scanf(“%c”, &ch); // lê cprintf(“%c”, ch); // escreve c

float num;scanf(“%f”, &num); // lê fprintf(“%f”, num); // escreve fObs.: Cuidado para

não esquecer do & no uso da função scanf

Page 45: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Tabela de Formato para E/S

Tipo Formato para escrita e leitura

[signed | unsigned] char %c

[signed] int %i ou %d

unsigned int %u

[signed] short int %hi

unsigned short int %hu

[signed] long int %li

unsigned long int %lu

float %f

double %lf

long double %Lf

Page 46: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Exercícios

4) Escreva um programa que lê um inteiro do teclado responde ‘sim’ se ele é um múltiplo de 3 e ‘não’ caso contrário

Tome como base a seguinte estrutura de programa:

#include <stdio.h>

int main() { return 0;}

5) Implemente um programa que lê 10 inteiros do teclado ou para quando dois inteiros consecutivos sejam digitados. Após a leitura o programa deverá imprimir o maior, o menor, a média e a soma dos números digitados.

6) Modifique a sua resposta para o exercício anterior trocando os loops (for, while, do-while) para goto

Page 47: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Referências

• Matos, P. A. & Carvalho, G. H. P. - A Linguagem de Programação C

• The C Programming Language– http://www.engin.umd.umich.edu/CIS/course.des

/cis400/c/c.html• Curso de C da UFMG

– http://ead1.eee.ufmg.br/cursos/C/• Lammert Bies, ASCII character map

– http://www.lammertbies.nl/comm/info/ascii-characters.html

• Slides de Gustavo Henrique Porto do curso de C/C++

Page 48: Centro Integrado de Tecnologia da Informação Curso de C/C++ Aula 1 Allan Lima

Agradecimentos

• Gustavo Henrique Porto – Pelo material cedido para montagem da aula

• Pedro Silva Leite– Pela revisão da aula