linguagem de programação em c -...

96
Anderson Moreira Arquitetura de Computadores Linguagem de Programação em C Linguagem de Programação em C Linguagem de Programação em C Linguagem de Programação em C Anderson L. S. Moreira [email protected] http://alsm.cc

Upload: vuongliem

Post on 09-Nov-2018

236 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Linguagem de Programação em CLinguagem de Programação em CLinguagem de Programação em CLinguagem de Programação em C

Anderson L. S. [email protected]

http://alsm.cc

Page 2: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores 2

O que fazer com essa apresentação

Page 3: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Introdução

Quando o homem necessita do auxilio do

computador para executar algumas tarefas.

Por que programar ?

Conjunto de instruções de uma determinada linguagem

através das quais, um computador executa algumas

tarefas.

O Que é um programa ?

Page 4: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Introdução

Uma linguagem consiste de um conjunto de palavras

reservadas e regras de sintaxe que possibilita criar

programas de computadores.

Este conjunto de palavras possui regras de

estruturação lógica e sintática própria.

O Que é uma linguagem ?

Page 5: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exemplos de Códigos: BASIC

PseudoPseudoPseudoPseudo----códigocódigocódigocódigo

leia(num)

para n de 1

até 10 passo 1 faça

tab ←←←←num*n

imprima(tab)

fim-para;

BASICBASICBASICBASIC

10 input num

20 for n=1 to 10

step 1

30 let tab=num*n

40 print chr$(tab)

50 next n

Page 6: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exemplos de Códigos: FORTRAN

PseudoPseudoPseudoPseudo----códigocódigocódigocódigo

leia(num)

para n de 1

até 10 passo 1 faça

tab ←←←←num*n

imprima(tab)

fim-para;

FORTRANFORTRANFORTRANFORTRAN

read (num)

do 10 n=1:10

tab=num*n

write(tab)

10 continue

Page 7: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exemplos de Códigos: Assembly

PseudoPseudoPseudoPseudo----códigocódigocódigocódigo

leia(num)

para n de 1

até 10 passo 1 faça

tab ←←←←num*n

imprima(tab)

fim-para;

Assembly (Intel 8088)Assembly (Intel 8088)Assembly (Intel 8088)Assembly (Intel 8088)MOV CX,0IN AX,PORTAMOV DX,AXLABEL:INC CXMOV AX,DXMUL CXOUT AX, PORTACMP CX,10JNE LABEL

Page 8: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exemplos de Códigos: C

PseudoPseudoPseudoPseudo----códigocódigocódigocódigo

leia(num)

para n de 1

até 10 passo 1 faça

tab ←←←←num*n

imprima(tab)

fim-para;

CCCC

scanf(&num);

for(n=1;n<=10;n++){

tab=num*n;

printf(”\n %d”, tab);

};

Page 9: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Linguagens: Baixo Nível

São linguagens com foco na maquina, ouseja, utiliza instruções detalhadas quecontrola os circuitos internos do computador.Usualmente são genericamente chamadasde linguagens de maquina, Assembly ou delinguagem de montagem.

Page 10: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Linguagens: Baixo Nível

� Vantagens: Maior velocidade de processamento e ocupam menor espaço na memória.

� Desvantagens: Pouca portabilidade, ou seja, o código é gerado para um tipo de processador não serve para outro.

Page 11: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Linguagens: Alto Nível

São linguagens voltadas para que haja uma maior interação entre o homem e a máquina.

Necessitam de compiladores ou interpretadores para gerar as instruções do microprocessador.

Page 12: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Linguagens: Alto Nível

� Vantagens: São compiladas ou interpretadas, têm maior portabilidadepodendo ser executados em várias plataformas com pouquíssimas modificações.

� Desvantagens: São mais lentas e ocupam mais memória.

Page 13: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Histórico

C foi originalmente desenvolvida por Dennis Dennis Dennis Dennis

RitchieRitchieRitchieRitchie e K. ThompsonK. ThompsonK. ThompsonK. Thompson nos Laboratórios Bell nos

anos 70.Derivadas de duas linguagens anteriores

chamadas BCPL e B.

� Inicialmente para máquinas com o sistema operacional

UNIX.

� Tornou-se uma das mais importantes e populares nos

últimos dias.

� Foi projetada para o desenvolvimento de programas

estruturados e modulares.

Page 14: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Histórico

Nos anos seguintes, a popularidade da linguagem C

aumentou consideravelmente, aumentando

também o surgimento de ferramentas de

desenvolvimento.� Inicialmente, muitas implementações do C não

traduziam fielmente a definição original, o que gerou

alguns problemas de incompatibilidade

� A portabilidade proposta pela definição original ficou

bastante comprometida.

Page 15: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Introdução

Buscando uma padronização na definição da

linguagem C, a American National Standard American National Standard American National Standard American National Standard

InstituteInstituteInstituteInstitute (ANSIANSIANSIANSI), desenvolveu um padrão hoje

bastante utilizado no mundo da linguagem C,

chamado de C padrão ANSI ou C ANSI.

Quase todas as ferramentas de desenvolvimento da

linguagem C atuais, seguem este padrão.

O Padrão ANSI

Page 16: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Compiladores x Interpretadores

A única linguagem que o computador entende é a

linguagem de máquina. Programas escritos em um

linguagem de alto nível, devem ser traduzidos para a

linguagem de máquina.

Os Programas que fazem esta tradução, classificam

em:

- INTERPRETADORESINTERPRETADORESINTERPRETADORESINTERPRETADORES

- COMPILADORESCOMPILADORESCOMPILADORESCOMPILADORES

Page 17: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Compiladores x Interpretadores

Os INTERPRETADORES, traduzem o código fonte em

linguagem de máquina através da interpretação de

cada instrução feita a medida que o software é

executado. Necessitam de um componente

interpretador presente na máquina.

Os COMPILADORES, por sua vez, traduzem o código fonte

em linguagem de máquina através da geração de um

programa .OBJ, que após ser linkeditado, torna-se um

arquivo executável. Em C os programas são compilados.

Page 18: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Como criar um programa

1) Digitar o programa em um editor de texto e gravar atribuindo a extensão “.C”;

2) Compilar o programa (fonte) criando um arquivo com extensão “.obj”. Chamado de programa objeto;

3) Link-editar o programa objeto criando finalmente o programa executado (com extensão “.exe”).

Basicamente três passos :

Page 19: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Estrutura básica de um programa

Um programa em C consiste de uma ou várias

funções, onde uma delas precisa ser denominada

“main” e deve existir em algum lugar de seu

programa. Esta função marca o início da execução

do programa.

Outras funções podem ser definidas pelo programador ou

preencher a função main, porém em um programa

executável em C, a função main deve sempre existir.

Page 20: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Estrutura básica de um programa

main(Argumentos) { /* início do corpo da função */

} /* término do corpo da função */

Uma função deve conter :

- Um header que consiste do nome da função

- Uma lista de argumentos entre parênteses.

- Um bloco de instruções delimitado por chaves.

Page 21: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Estrutura básica de um programa

� O nome da função, os parênteses e as chaves, são os únicos elementos obrigatórios de uma função

� Os comentários podem aparecer em qualquer lugar de um programa,

devendo ser colocados entre os delimitadores /* e */

� Letras minúsculas e maiúsculas não são equivalentes em C.

� Note que cada expressão dentro do bloco deve terminar com um ponto-e-

vírgula.

Page 22: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exemplo de um programa em C

#include <stdio.h>

/* programa que imprime: Boa Noite */

void main ()

{

printf( "Boa Noite" );

}

Page 23: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

void main(){

}

#include <stdio.h >

printf ("Boa Noite" );

Estrutura básica de um programa

Se utilizamos uma função no corpo da função main(), devemos incluir a biblioteca que contenha esta função. Por exemplo :

Se colocarmos a função pritnf() no corpo da função main(), devemos

incluir a biblioteca stdio.h . Isto é feito com a diretiva : #include ,

Assim:

Page 24: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

O que é uma IDE (Integrated Development Environment)

• Um conjunto de ferramentas paradesenvolver bibliotecas, aplicações ouprogramas (debugger, compilador, linker, etc…)

• Um ambiente baseado em janelas do tipoGUI

Gerenciamento de projetoConfiguações de construçãoProgramação confortável

Page 25: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Code Blocks - Highlighting Editor

Page 26: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Auto completar

Page 27: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Diferentes compiladores

Page 28: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Organização em pastas

Page 29: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Folding

Page 30: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Questionário 1

• Onde a linguagem C foi desenvolvida e quando?

• Explique a diferença entre programas interpretados

e programas compilados.

• Como é formada uma função na linguagem C?

• Como inserir comentários em um programa em C?

Page 31: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Questionário 1

No programa abaixo, existem alguns erro, com a ajuda do compilador, tente descobri-lo

#include <stdiox.h>

#include <conio.h>

Main ()

(

printf("Boa Noite");

getch();

)

Page 32: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Regra de identificação

• Todas as letras maiúsculas de A a Z e as minúsculas de a a

z, os dígitos de 0 a 9 e alguns caracteres especiais, podem

ser utilizados na criação de códigos em C.

• Os nomes de variáveis, funções e matrizes em C, obedecem

a regra de que você pode usar letras e números, porem o

primeiro digito deve ser apenas uma LETRA ou o caractere

especial underline (_).

• Um nome não pode ser uma das palavras reservadas da

linguagem C.

Page 33: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Regra de identificação

• Exemplo de nomes válidos :

a y12 soma1 _estoque

• Exemplos de nomes não válidos :

2th (o primeiro caractere deve ser letra ou _ )

“a” (inicia com um caractere ilegal (“) )

numero-ordem (caractere ilegal (-))

nome completo (espaço em branco)

Page 34: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Regra de identificação

• Um identificador de nome pode ter mais de 32

caracteres, porem somente os 32 primeiros serão

reconhecidos.

• Algumas implementações do C, reconhece apenas

os 8 (oitos) primeiros, assim os nomes : taxa_dia e

taxa_diaria, nestes sistemas não tem diferenca,

pois o compilador reconhece apenas os oitos

primeiros caracteres.

Page 35: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Palavras reservadas

autoautoautoauto doubledoubledoubledouble intintintint structstructstructstructbreakbreakbreakbreak else else else else longlonglonglong switchswitchswitchswitchcasecasecasecase enumenumenumenum registerregisterregisterregister typedeftypedeftypedeftypedefcharcharcharchar externexternexternextern returnreturnreturnreturn unionunionunionunionconstconstconstconst floatfloatfloatfloat shortshortshortshort unsignedunsignedunsignedunsignedcontinuecontinuecontinuecontinue forforforfor signedsignedsignedsigned voidvoidvoidvoiddefaultdefaultdefaultdefault gotogotogotogoto sizeofsizeofsizeofsizeof volatilevolatilevolatilevolatiledodododo ifififif staticstaticstaticstatic whilewhilewhilewhile

São apenas 32 palavras reservadas que não podem ser utilizadas para outro propósito

Page 36: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Dados

Em C existem 5 tipos válidos:

tipo Palavra

Reservada

Quant.

Bit

Bytes Faixa

Caracter Char 8 1 -128 a 127

Inteiro Int 16 2 -32768 a 32768

Ponto flutuante Float 32 4 3.4E-38 a 3.4E+38

Pont. Flutuante duplo

Double 64 8 1.7E-308 a 1.7E+308

Sem valor void 0 0 Sem valor

Page 37: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Dados

Modificadores de Tipos

Com exceção do tipo void, os demais tipos podem ter

alguns modificadores. Um modificador é usado para

alterar o significado do tipo para adequá-los melhor

às necessidades do programador.

Page 38: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Dados

Os modificadores são : signed, unsigned, long e shortsigned, unsigned, long e shortsigned, unsigned, long e shortsigned, unsigned, long e short

Exemplo de utilização:

Se uma variável é declarada como charcharcharchar ela ocupa 8

bit e tem a faixa de valores de -128 a 127, mais se o

modificador unsigned é colocado antes da palavra

charcharcharchar, ela continua ocupando 8 bits, mais sua faixa

de valores vai de 0 a 255.

Page 39: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipo de Dados Inteiro

• Os dados inteiros são caracterizados pelos números positivos ou negativos que não seja fracionário. Em C referenciamos este tipo de dados com os seguintes identificadores :

Tipo do Inteiro Qt.Bit Faixa

int 16 -32768 a 32767

long int 32 -2.147.483.648 a 2.147.483.648

unsigned int 16 De 0 até 65535

signed long int 32 De 0 até 4.292.967.295

Page 40: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipo de Dados Reais

• Os dados reais são caracterizados pelos números positivos, negativos, inteiros e os fracionários. Em C referenciamos este tipo de dados com os seguintes identificadores :

Tipo do Inteiro Qt.Bit Faixa

float 32 de 3.4e-38 até 3.4e+38

double 64 de 1.7e-308 até 1.7e+308

Long double 128 de -3.4e-4932 até 1.1e+4932

Page 41: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipo de Dados Caracteres

• Os dados caracteres são caracterizados pelas

sequencias de letras, números e simbolos

especiais delimitados por ( “ ” ) . Em C

referenciamos este tipo de dados pelo

identificadores : char podendo armazenar de 0

até 255 caracteres

Page 42: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipo de Dados Lógicos

• Na linguagem C não existe o tipo de dados

booleano , ou seja, não existe o valor lógico

“false” ou “true” de forma predefinida.

• Em C qualquer valor igual a 0 (zero), é

considerado como valor lógico falso e qualquer

valor diferente de 0 (zero), é considerado como

valor lógico verdadeiro.

Page 43: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes

• Constantes são valores que permanecem fixos e na linguagem C temos 4 tipos básicos de constantes:

- Inteiras- ponto-flutuante- caracteres- string (cadeia de caracteres)

Page 44: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes numéricas

• As constantes do tipo Inteiras e de ponto-flutuante, representam números.

• As constantes do tipo Inteiras podem ser escritas em três sistemas de numeração, sendo :

• decimal (base 10)• octal (base 8)• hexadecimal (base 16)

• Uma constante inteira decimal pode ser formada por qualquer combinação dos dígitos de 0 a 9. Se tem mais de dois dígitos, o primeiro não pode ser zero. Ex.:

5 13 230 540

Page 45: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes numéricas

• Uma constante inteira octal pode ser formada por qualquer combinação dos dígitos de 0 a 7 e o primeiro deve ser zero. Ex.:

0 013 0656 0540

• Uma constante inteira hexadecimal pode ser formada por qualquer combinação dos dígitos de 0 a 9 e de A a F (maiúsculas ou minúsculas). Deve sempre iniciar com 0x ou 0X. Ex.:

0x 0x1 0xABC 0xabc

• Normalmente a magnitude de uma constante inteira é:

Decimal = 32767Octal = 07777Hexa = 0x7FFF

Page 46: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes numéricas

• As constantes do tipo ponto-flutuante é um número na base 10 que contem casas decimais e/ou um expoente. Ex.:

0. 0.5 1.3 230.323 .540e2

• Observe que o caractere que separa a casa decimal é um ponto e não uma virgula

• Para representar um número com expoente, trocamos a base 10 pela letra ´e´. Assim para representar 2 x 10², teremos:

200. ou 2e2 ou 2e+2 ou 2E2 ou 2.0e+2

Page 47: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes caracteres

• As constantes do tipo caracter consiste em um simples caractere colocado entre apóstrofos. Ex.:

´A´ ´x´ ´5´ ´$´

• Uma constante de caractere tem valores inteiros correspondentes a um conjunto de caracteres específicos.

• Normalmente os computadores utilizam o conjunto de caracteres ASCII, onde cada caractere é representado por uma combinação de 7 bits, Representando assim 2e+7 = 128 diferentes caracteres.

• Desta forma, cada constante de caractere, tem um valor inteiro correspondente.

Page 48: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes caracteres

Caracter Valor

A 65

B 66

C 67

D 68

E 69

F 70

G 71

H 72

I 73

J 74

K 75

L 76

Caracter Valor

a 97

b 98

c 99

d 100

e 101

f 102

g 103

h 104

i 105

j 106

k 107

l 108

Caracter Valor

M 77

N 78

O 79

P 80

Q 81

R 82

S 83

T 84

U 85

V 86

W 87

X 88

Caracter Valor

0 48

1 49

2 50

3 51

4 52

5 53

6 54

7 55

8 56

9 57

DEL 127

ESC 27

Page 49: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Constantes string

• As constantes do tipo string consiste em um conjunto de caracteres colocado entre aspas. Ex.:

“anderson”

“bahia”

“Recife”

“Boa Noite !!!”

“3235-2234”

“2*(I+3)/J”

• Algumas seqüências de caracteres podem ser incluídas dentro da string para possibilitar a formatação. Ex.:

“Esta é a primeira linha\n e esta a segunda linha”

Page 50: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Seqüência de escape

• Alguns caracteres especiais e os não-imprimíveis, são expressos como uma sequência de escape.

• Uma sequencia de escape sempre começa com uma barra invertida (“\”) seguida por um caractere. Alguns comandos em C, são representados desta forma. Ex.:

Caracter Seqüência de escape Valor ASCII

Nova linha (line feed) FD \n 10

Campainha (bell) \a 07

Tabulação horizontal \t 09

Tabulação vertical \v 11

Aspas (“) \” 34

Apóstrofo (´) \´́́́ 39

Interrogação (?) \? 63

Barra invertida (\) \\ 92

Nulo (null) \0 00

Page 51: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Variáveis

� As variáveis são o aspecto fundamental em

qualquer linguagem de computador.

� Uma variável nada mais é que um espaço de

memória reservado para armazenar um certo tipo

de dado. Uma variável deve receber um nome para

servir de referência e a cada instante ela pode

conter valores diferente.

Page 52: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Declaração de Variáveis

� Declarar uma variável significa reservar um espaço

em memória para um determinado tipo de dados

e indicar que o conteúdo daquele espaço, será

referenciado pelo o nome da variável.

� Uma declaração de variável consiste em um tipo seguido do nome da variável. Exemplo:

int num; // uma variável do tipo int

char a; // uma variável do tipo char

Page 53: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Declaração de variáveis:

� Para serem usadas, as variáveis precisam ser declaradas de modo que o compilador possa reservar espaço na memória para o valor a ser armazenado.

� A forma geral de uma declaração é:

tipo lista_de_variaveis;

� Exemplos: int i;

unsigned int a, b, c;

double salario;

Page 54: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Atribuição de valores às variáveis

Após ser declarada, a variável pode receber valores. O operador de atribuição "=" indica que o valor à direita será atribuído à variável.

O valor inicial pode ser atribuído de duas formas:

- Durante a declaração da variávelEx.: int i=0, j=10;

- Durante execução de uma a função

Page 55: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Tipos de Variáveis

� O tipo de uma variável informa a quantidade de

memória, em bytes, que ela irá ocupar e a forma

como o seu conteúdo será armazenado.

� Os tipos de dados básicos do C visto anteriormente

devem ser utilizados para prototipar uma variável

conforme a necessidade do programa.

Page 56: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Nomes de Variáveis

� Você pode usar quantos caracteres quiser para um

nome de variável com o primeiro caracter sendo

obrigatoriamente um letra ou sublinhado(_).

� Uma variável não pode ter o mesmo nome de uma

palavra reservada do C e não deverá ter o mesmo

nome de um função.

� Na linguagem C, maiúsculas e minúsculas tem tratamento diferenciado, assim, cont, Cont e CONT são três variáveis distintas.

Page 57: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Atribuição de valores às variáveis

� É possível atribuir a uma variável o valor resultante de uma expressão. Ex.:

int a;

a = (8+2)/2;

� A atribuição de uma variável do tipo char, pode ser feita de duas formas:

- Atribuindo uma constante de caractere:

char b = ‘A’;- Atribuindo o código ASCII correspondente antecedido pela barra invertida:

char b = ‘\65’

Page 58: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Analisando um Programa Exemplo

01 #include <stdio.h>0203 int a=5; // declaração de um inteiro04 int b=5; // declaração de um inteiro05 int soma; // declaração de um inteiro06 07 void main()08 {09 soma=a+b; 10 printf ("%d",soma); 11 }

Page 59: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Analisando um Programa Exemplo

01 #include <stdio.h>0203 int a=5, b=5, soma;0405 void main()06 {07 soma=a+b;08 printf ("%d", soma);09 }

Page 60: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Atribuição de valores às variáveis

� Na linguagem C, não temos o tipo ´́́́string ´́́́ pre-definido, o que

nos leva a utilizar os vetores de caracter. Desta forma um string em

C será atribuída a um vetor do tipo char na sua inicialização.

char nome[20] = “Anderson Moreira”;

� A Atribuição de uma constante de caracter diretamente a um vetor de

caracter já declarado e não inicializado, só pode ser feito com auxilio

de outras funções.Ex.:

char nome[20] ;

strcpy( nome, “Anderson Moreira” );

Page 61: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Analisando um Programa Exemplo

#include <stdio.h>

#include <conio.h>

char nome[20] ;

void main()

{

printf ( "Digite o seu nome : " );

scanf ( "%s" , nome);

printf ( "Ola! %s " , nome);

getch();

}

Page 62: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Conversão de tipos

� Algumas vezes o compilador faz uma conversão automática quando vai atribuir um valor de uma expressão a uma variável. Ex.: sendo:

void main(){

float f1,f = 21.45 ;char c1,c = 'A' ;int i1,i = 10;

i1 = f; // i1 receberá o valor 21printf ("%d\n",i1);f1 = i; // f1 receberá o valor 10.00printf ("%f\n",f1);c1 = i; // c1 receberá o valor 10printf ("%d\n",c1);i1 = c; // i1 receberá o valor 65printf ("%d\n",i1);getch();

}

Page 63: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Conversão de tipos

� O Programador pode “forçar” a conversão. Ex.: sendo:

void main(){

int a = 65; float x = 2.1 , y = 8.95 , z; char c;

c = (char) a;printf("Valor de c ( %c ) --> %d\n", c, c);c = (char) (a + (int) x);printf("Valor de c ( %c ) --> %d\n", c, c);

z = (float) ( (int) x * (int) y);printf("Valor de z ( %f ) --> %d\n", z, z);z = (float) (( x * y));printf("Valor de z ( %f ) --> %d\n", z,z );

getch();}

Page 64: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Entrada e Saída

� Para que exemplos possam ser construídos, necessitamos conhecer um pouco sobre entrada e saída de dados.

� Um programa que não fornece resultados nem pede valores para operar não deve ter grande utilidade.

� A entrada de dados será feita pelo teclado e a saída poderá ser vista na tela do computador.

� Com isto, é possível resolver problemas bastante interessantes.

Page 65: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Biblioteca Padrão

� Para termos acesso à biblioteca que contém as funções, macros e variáveis que facilitam a entrada e saída de dados, o programa deve conter a declaração

#include <stdio.h>

no início do programa.

� Normalmente os programadores usam os símbolos menor (<) e maior (>), mas é possível a alternativa

#include "stdio.h"

Page 66: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Saída - A Função printf

� A função printf permite que dados sejam escritos na tela do computador.

� O formato é de uso simples e bastante flexível, permitindo que os dados possam ser apresentados de diversas maneiras.

Syntax: printf ( controle , arg1, arg2, ...);

� Onde os argumentos são impressos de acordo com a maneira indicada pelo controle. Um exemplo simples pode tornar a explicação mais clara.

Page 67: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Saída - A Função printf

O programa abaixo imprime o valor da variável ano.

#include <stdio.h>

#include <conio.h>

// Biblioteca de entrada e saída

main()

{

int ano = 2008;

// Declarei ano como inteiro e ja defini seu valor.

printf (“ Estamos no ano %d ", ano );

getch();

}

Na tela do computador será impresso:

Estamos no ano 2008;CONTROLE

ARGUMENTO

Page 68: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Saída - A Função printf

� O controle, que deve aparecer sempre entre " ", define como serão impressos os argumentos.

� Neste controle podem existir dois tipos de informações: caracteres comuns e códigos de formatação.

� Os caracteres comuns, como no exemplo ((((Estamos no anoEstamos no anoEstamos no anoEstamos no ano)))) são escritos na tela sem nenhuma modificação.

� Os códigos de formatação, aparecem precedidos por um % e são aplicados aos argumentos na ordem em que aparecem.

Page 69: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Códigos de Formatação

Deve haver um código de formatação para cada argumento. O código %d indica que o valor armazenado em ano deve ser impresso na notação inteiro decimal.

Código Comentário

% c Caractere simples

% d Inteiro decimal com sinal

% i Inteiro decimal com sinal

% e Real em notação científica com e

% f Real em ponto flutuante

% o Inteiro em base octal

% s Cadeia Caracteres

% u Inteiro decimal sem sinal

% x Inteiro em base hexadecimal (letras minúsculas)

% % Imprime o caracter %

Page 70: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Saída justificada

Um sinal de menos para especificar que o argumento deve ser tabulado a esquerda no seu campo de impressão pode ser acrescentado.

Exemplo a seguir ilustra os dois tipos de justificação.

main()

{

int ano = 2007;

printf ("Justificado a esquerda Ano = %-8d\n" , ano);

printf ("Justificado a direita Ano = %8d\n" , ano);

getch();

}

Observe

Page 71: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Especificador de Precisão

O especificador de precisão consiste de um ponto que separa o número que define o tamanho do campo do número que especifica o máximo número de dígitos a serem impressos a direita do ponto em um número do tipo float ou double

#include <stdio.h>

#include <conio.h>

main()

{

float r = 1.0 / 3.0 ;

printf ("O resultado e = %9.5f\n" , r);

getch();

}

Observe

Page 72: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Códigos de Formatação

Ao executar o exemplo verifique que \n não é impresso.

A barra inclinada é chamada de seqüência de escape, indicando que o próximo caracter não é para ser impresso mas representa caracteres invisíveis, por exemplo. Alguns destes caracteres são:

Código Descrição

\n Passa para uma nova linha

\t Tabulação

\b Retorna um caracter

\f Salta uma página

\0 Caracter nulo

Page 73: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Entrada - A Função scanf

� A função scanf pode ser utilizada para entrada de dados a partir do teclado. Esta função é equivalente à função printf e seu formato é:

Syntax: scanf( controle , arg1, arg2, ...);

� Uma diferença fundamental existe entre as duas funções é que os argumentos da função scanf são os endereços das variáveis que irão receber os valores lidos e não, como em printf, as próprias variáveis.

Page 74: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Entrada - A Função scanf

� A indicação que estamos referenciando um endereço e não a variável se faz pelo operador &. Por exemplo, o comando

scanf ("%d %d", &a, &b)

espera que dois valores inteiros sejam digitados no teclado. O primeiro é armazenado na variável a e o segundo em b.

Page 75: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Entrada - A Função scanf

Cada variável a ser lida, deverá ser precedida pelo caracter &

Para sequência de caracteres (%s), o caractere & não deverá ser usado.

Page 76: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Entrada - A Função scanf

int main(){

int numero;char string[ 30];printf( "Digite uma string: " );scanf( "%s" ,string);printf( "Digite um numero: " );scanf( "%d" ,&numero);printf( "A string digitada foi: \t%s\n" , string);printf( "O numero digitado foi: \t%d\n" , numero);

}

Page 77: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Lendo e Imprimindo Caracteres

Para ler e escrever caracteres do teclado as funções de entrada e saída mais simples são getchar e putchar que estão na biblioteca stdio.h

#include <stdio.h>#include <conio.h>

main(){

char c;int i;

printf ("Entre com um caracter entre 0 e 9.\n" );c = getchar ();printf ("O caracter lido foi o " );

putchar (c);

getch();}

Page 78: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Lendo e Imprimindo Caracteres

� Na definição original da função getchar a entrada é armazenada até que a tecla ENTER seja apertada. Com isto caracteres ficam em um buffer esperando para serem tratados.

� Em ambientes onde é necessário tratar o caractere imediatamente esta função pode não ser útil.

� Muitos compiladores incluem funções para permitir entrada interativa de dados. As duas funções mais comuns são getch e getche e seus protótipos podem ser encontrados na biblioteca <conio.h>.

Page 79: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Lendo e Imprimindo Strings

� Um string em C é um vetor de caracteres. Para usar strings é preciso primeiro definir um espaço para armazená-los. Para isto é preciso declarar o tamanho e o tipo do vetor. Por exemplo:

char nome[40];

� Quando definir o tamanho do vetor observar que todo string em C termina com o caracter null ('\0'), que é automaticamente inserido pelo compilador.

� Portanto o vetor nome pode armazenar no máximo 39 caracteres.

Page 80: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Lendo e Imprimindo Strings

Exemplo :

#include <stdio.h>

#include <conio.h>

void main ( )

{

char nome[ 40];

puts( "Por favor, qual o seu nome." );

scanf( "%s" , nome);

printf (“Em que posso ajuda-lo %s?\n" , nome);

getch();

}

Page 81: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Expressões e Operadores

Adição:

Expressão 1 + expressão 2

Primeiros as duas expressões serão avaliadas e só depois a adição é realizada.Pode ter uma conversão de tipos, depois da avaliação das expressões:

float x,y;int z; z=y+x;

Page 82: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Expressões e Operadores

Subtração:

Expressão 1 - expressão 2

As duas expressões são avaliadas, depois a subtração é realizada, e o valor obtido é o valor da expressão.

- Expressão

A semântica de (-expressão ) é a mesma do que

(0 - expressão ).

Page 83: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Expressões e Operadores

Multiplicação:

Expressão 1 * expressão 2

As duas expressões são avaliadas, depois a multiplicação é realizada, e

o valor obtido é o valor da expressão.

Page 84: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Expressões e Operadores

Divisão:Expressão 1 / expressão 2

Diferente das outras linguagens, em C o “ / ” designa ao mesmo tempo a divisão dos inteiros e dos reais.

Page 85: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Expressões e Operadores

Divisão:

Caso os dois operandos inteiros sejam positivos, o sistema arredonda

o resultado da divisão :

7 / 2 retorna 3

Caso os dois operandos inteiros sejam de sinal diferentes, o

arredondamento depende do compilador.

-7 / 2 ou 7 / -2retornam -3 ou -4 (geralmente -4)

Page 86: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

O Módulo %

Expressão 1 % Expressão 2

As duas expressões devem retornar valores de tipo inteiro

O módulo retorna o resto da divisão inteira.

7 % 2 retorna 1

Caso um dois operadores sejam negativo, o sinal do módulo depende

da implementação, mas é geralmente o sinal do primeiro

7 % 2 retornam 1

-7 % 2 retornam -1

7 % -2 retornam 1

Page 87: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Operadores Relacionais

Operador Relação

== Igual

!= Diferente

> Maior

>= Maior ou igual

< Menor

<= Menor igual

Expressão1 operador Expressão2

O resultado da comparação será um valor lógico :

1 - Verdadeira e;0 - Falsa.

Page 88: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Operadores Lógicos

Operador Relação

&& E (and)

|| Ou (or)

! Negação (not)

Expressão1 operador Expressão2

exemplos:

(a && b)

(a == 0) || (b != 0)

! ((a = = 0) && (b<3))

Page 89: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Operador &

É o operador de endereçamento (ponteiro): Ele permite apontar qualquer variável:

&a é o endereço da variável a

Page 90: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Incremento

x = x + 1;

x++;

++x;

s+=i; /* s=s+i*/

z = y++; /* z=y e depois y++ */

z = ++y; /* y++ e depois z = y (novo) */

Page 91: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Decremento

y = y - 1; /* isto decrementa y */

y--; /* isto decrementa y */

--y; /* isto decrementa y */

s-=i; /* s=s-i*/

z = y--; /* z =y e depois y- - */

z = --y; /* y-- e depois z=y (o novo)*/

Page 92: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Condicional (IF)

if (b >= 3.0)

a = 2.0;

else

a = 10.5;

Igual a :

a = (b >= 3.0 ? 2.0 : 10.5 );

c = (a > b ? a : b); /* c=maior(a,b) */

c = (a > b ? b : a); /* c=menor(a,b) */

Page 93: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Questionário 2

�Baseado no que foi visto em sala de aula, responda:

�Escreva um programa que declare variáveis do tipo inteiro, char e float, inicializando-as, e imprima os seus valores.

�Faça um programa capaz de ler um valor real e escreve-lo com apenas uma casa decimal.

Page 94: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Questionário 2

Sabendo que os argumentos da função "printf" podem serexpressões (a+b, a/b, a*b...), e não somente argumentos, façaum programa capaz de ler um valor inteiro X e imprimir na telao cubo, o quadrado e a metade de X.

Ex.: para X= 6, imprimir

Cubo = 18; Quadrado = 36; Metade = 3.

Page 95: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Exercícios

Escreva um programa que leia 3 números reais e imprima a média aritmética destes números.

Escreva um programa que ler uma temperatura em graus Celsius e apresenta o valor em Fahrenheit. (Formula: F = (9 X C + 160)/5)

Escreva um programa que ler uma temperatura em graus Fahrenheit e apresenta o valor em Celsius. (Formula: C = (F -32) * (5/9)

Page 96: Linguagem de Programação em C - siep.ifpe.edu.brsiep.ifpe.edu.br/anderson/arquivos/linguagem_C.pdf · ... Assembly ou de linguagem de montagem. Anderson Moreira Arquitetura de Computadores

Anderson Moreira Arquitetura de Computadores

Dúvidas