7-linguagem c- tipos de dados

40
1 Módulo 1 Introdução à Programação e Algoritmia PSI 1º ano

Upload: pmpreis

Post on 05-Jan-2016

77 views

Category:

Documents


3 download

DESCRIPTION

Linguagem C- Tipos de Dados

TRANSCRIPT

1

Módulo 1Introdução à Programação e Algoritmia

PSI 1º ano

TGPSI - Paulo Reis - Agrupamento de Escolas da Batalha 2

Tipos de dados em

• 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.

• Regras para definição de variáveis: � O nome de uma variável deve iniciar com uma letra ou com o caractere

underscore (_).� O nome de uma variável não pode ser uma palavra reservada da linguagem C. � Ter em atenção que a linguagem C é case sensitive (maiúsculas são diferentes

de minúsculas)� Lembrar de sempre iniciar uma variável.

3

variáveis

#include <stdio.h>

#include <stdlib.h>

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;

}4

5

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

• Constantes são o oposto das variáveis, apesar detrabalharem da mesma forma.

• As variáveis têm esse nome exatamente porquepodemos mudar o seu valor durante a execução doprograma.

• Já as constantes são dados gravados em memória quede forma alguma podemos alterar seu valor.

#define tipo ‘A’;

#define numero 56;

constantes

Código Significado

\b Retrocesso (backspace)

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

\t Tabulação Horizontal (tab)

\n Nova Linha

\” Aspas

\’ Apóstrofo

\0 Nulo

\\ Barra Invertida

\a Sinal Sonoro (Beep)

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

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

constantes de barra invertida

declarações…

7

… num Algoritmo:

Var n1, n2, n3, media: real

…na Linguagem C:

#include <stdio.h>

main()

{

double n1, n2, n3, media;

}

declarações

8

• Declarações servem para descrever as variáveis e osseus tipos.

• Os nomes das variáveis devem conter apenas letras,dígitos e o símbolo undescore (_).

• Os principais tipos em C são: int, float, double e char.

Exemplos:

int n;

int quantidade_valores;

float x, y, somaValores;

char sexo;

char nome[40];

9

tipos de dados em C

ttttipos ipos ipos ipos de dados em Cde dados em Cde dados em Cde dados em C

• São as formas que utilizamos para representar dados na linguagem.

• 4 tipos básicos e um especial:

char, int, float, double

void

• 4 modificadores básicos:

signed, unsigned, long, short

�Os 4 modificadores podem ser aplicados ao tipo int�O modificador long apenas pode ser aplicado ao double�O signed e unsigned não é aplicado ao char

10

ttttipos ipos ipos ipos de dados em Cde dados em Cde dados em Cde dados em C

11

12

• O tipo de dado int (inteiro) serve para armazenarvalores numéricos inteiros (sem parte fracionária)positivos e negativos.

• Existem vários tipos de inteiros, cada um de tamanho diferente(dependendo do sistema operacional e/ou arquitetura doprocessador):

� int, pode possuir 16 bits, 32 bits ou 64 bits

� short int, deve possuir tamanho de no mínimo 16 bits e não pode ser maior que int

� long int, deve possuir tamanho mínimo de 32 bits

� long long int, deve possuir tamanho mínimo de 64 bits

int

13

• Ex: para declarar uma variável com o nome quadradodo tipo inteiro deveríamos utilizar a seguinte instrução:

int quadrado;

• Operações possíveis: soma (+), subtração (-), multiplicação (*), divisão inteira (/) e resto da divisão inteira (%).

� Como é devolvido sempre um inteiro, por exemplo, aoperação 21/4 devolverá 5 e não 5,25.

� A operação 21%4 irá devolver o resto da divisão de 21 por 4,ou seja 1.

int

14

• O tipos de dado float e double servem para armazenar números de ponto flutuante, i.e., com casas decimais.

• A diferença entre uma variável float e double é o número de bytes que reserva para armazenar o valor (a dimensão do float é 4 bytes e do double é 8 bytes).

float, double

15

• É representado por uma parte inteira e outra decimalseparadas por um ponto.

float Pi = 3.1415;

double erro = 0.00000002;

float total = 0.2;

float, double

• Operações possíveis: soma (+), subtração (-), multiplicação (*),divisão inteira (/) e resto da divisão inteira (%).

� Qualquer operação que inclua um dos operandos do tipo float, obtém um resultado do tipo float.

� A atribuição, leitura e escrita pode ser realizada usando notação científica através de uma base e de um expoente: 240.23 E22 = 240.23 * 1022

16

• O tipo char permite armazenar numa variável destetipo um único caractere.

• Ocupa 1 byte (é sempre utilizado um único byte,independentemente do tipo de computador).

char ch, varch;

� Isto significa que o programa reserva um espaço de 8 bits na memória RAM ou em registos do processador para armazenar um valor (char de tamanho maior que 8 bits é permitido pela linguagem C, mas os casos são raros).

• Com vetores do tipo char é possível criar cadeias de carateres (strings).

char

17

� Em C as variáveis podem ser inicializadas com um valorquando são declaradas.

Exemplo:int cont = 10;

� O operador = (i.e., igual) é usado para afetar valores avariáveis.

Exemplo:cont = 32;

letra = 'A';

inicialização e atribuição

18

A linguagem C apresenta ainda dois operadores não convencionais.

� Os operadores de incremento e decremento, quepossuem precedência comparada ao - unário e servempara incrementar e decrementar uma unidade nosvalores armazenados nas variáveis.

Exemplo:

n++;

As seguintes instruções são todas equivalentes:a = a + 1;

a += 1;

a++;

++a;

operadores de incremento e decremento

19

formato de leitura e escrita

Linguagem C Formato Tipo de dados

int %d Inteiro

long int %l Inteiro longo

float %f Real

double %lf Real (dupla precisão)

char %c Caractere

char [] %s String (cadeia de caracteres)

*p %p Apontador (pointer)

20

� É possível também especificarmos o tamanho dos campos:

formato de leitura e escrita� As variáveis float e double são impressas com seis casas decimais.

� Isto NÃO está relacionado com a precisão com que o número é armazenado internamente, apenas significa quantas casas decimais o printf() usa para imprimir estes tipos de variáveis.

21

� A função printf()

• possibilita a saída de valores (sejam eles constantes, variáveisou resultado de expressões) segundo um determinadoformato.

printf(“mensagem” [,lista de argumentos]);

Mensagem (string) com códigos de controlo embutidos na mesma

Valores que serão substituídos na mensagem, no lugar de cada código de controlo iniciado por %

Exemplos:printf(“O valor de PI é %f”, 3.1415);

printf(“O menu nome é %s e tenho %d anos.”, “João”, 16);

comando de saída

22

� A função scanf()

• Permite capturarmos valores fornecidos via teclado pelo utilizadordo programa.

scanf(“código de controlo”,lista de argumentos);

Códigos de controlo que identificarão o tipo de dado digitados pelo utilizador

Variáveis que receberão os dados, precedidas pelo símbolo &

comando de entrada

Exemplo 1:char letra;

printf(“digite uma letra”);

scanf(“ %c ”, &letra);

Exemplo 2:float numero;

printf(“digite um valor”);

scanf(“ %f ”, &numero);

23

Operador Ação

+ Soma

- Subtração ou troca de sinal

* Multiplicação

/ Divisão

% Resto da divisão inteira

++ Incremento

-- Decremento

operadores aritméticos em C

24

Operador Relação

> Maior que

>= Maior que ou igual a

< Menor que

<= Menor que ou igual a

== Igual a

!= Diferente de

Os operadores relacionais do C realizam comparações entre variáveis.

operadores relacionais em C

25

Operador Função

&& AND

|| OR

! NOT

Os operadores relacionais retornam verdadeiro (1) ou falso (0). Para fazer operações com valores lógicos (verdadeiro e falso) temos os operadores lógicos.

operadores lógicos em C

26

Operador Ação

& AND Lógico

| OR Lógico

^ XOR (OR exclusivo)

~ NOT

>> Shift Rigth

<< Shift Left

O C permite que se façam operações lógicas "bit-a- bit" emnúmeros. Ou seja, neste caso, o número é representado na suaforma binária e as operações são feitas em cada um dos bit.

operadores lógicos Bit a Bit em C

27

Operador Exemplo Ação

= x=y Atribui o valor de y a x

+= x += y Equivale a x = x + y

-= x -= y Equivale a x = x + y

*= x *= y Equivale a x = x * y

/= x /= y Equivale a x = x / y

%= x %= y Equivale a x = x / y

operadores de atribuição em C

28

Programas

exemplo

29

#include <stdio.h>

#include <stdlib.h>

main()

{

int num_1; // declaramos num_1

num_1 = 44; // atribuímos o valor 44 a num_1

int num_2; // declaramos num_2

num_2 = num_1 + 20; // atribuímos o valor soma a num_2

printf("\no primeiro numero é: %d", num_1);

printf("\no segundo numero é num_1+20: %d\n", num_2);

system("pause");

}

exemplo02.c

30

#include <stdio.h>

#include <stdlib.h>

main()

{

int soma = 100;

char letra = 'Z';

float set1 = 23.567;

double num2 = 11e+23;

printf("Variável inteira: %d\n", soma);

printf("Variável caracter: %c\n", letra);

printf("Variável float: %f\n", set1);

printf("Variável double: %e\n", num2);

system("pause");

}

exemplo03.c

31

#include <stdio.h>

#include <stdlib.h>

main()

{int evento = 5;

char corrida = 'C';

float tempo = 27.25;

printf("\n O tempo vitorioso na eliminatoria %c ",

corrida);

printf("da competicao %d", evento);

printf(" foi %4.2f (mm.ss)\n", tempo); // vê que a

linha de comando termina aqui

system("pause");

}

exemplo04.c

32

#include <stdio.h>

#include <stdlib.h>

main()

{char ch;

printf("---versao original do programa:\n");

printf("\tIntroduza um caractere: ");

scanf("%c",&ch);

printf("\tO caractere introduzido foi %c\n\n",ch);

system("pause");

}

exemplo05a.c

33

#include <stdio.h>

#include <stdlib.h>

main()

{char ch;

printf("---segunda versao do programa anterior:\n");

printf("\tIntroduza um caractere: ");

ch = getchar();

printf("\tO caractere introduzido foi %c\n\n",ch);

system("pause");

}

exemplo05b.c

34Tangente de xtan(x)tan

Raiz quadrada de xsqrt(x)sqrt

Seno de xsin(x)sin

Calcula x elevado à potência ypow(x, y)pow

Logaritmo decimal de xlog10(x)log10

Logaritmo natural de xlog(x)log

Arredonda o número deal para baixo; floor(3.2) é 3floor(x)floor

Valor absoluto de xfabs(x)fabs

e elevado à potencia xexp(x)exp

Cosseno de x (x em radianos)cos(x)cos

Arredonda o número real para cima; ceil(3.2) é 4ceil(x)ceil

ComentárioExemploFunção

#include <math.h>

funções matemáticas em C

35

EXERCÍCIO)

Construir um programa que tendo como entrada

dois pontos quaisquer do plano P(x1,y1) e Q(x2,y2),

imprima a distância entre eles.

A fórmula da distância é:

36

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

main()

{

}

>> ver passo seguinte>> ver passo seguinte>> ver passo seguinte>> ver passo seguinte

37

float x1, y1, x2, y2;

float distancia;

printf("\nDigite o valor de x1:");

scanf("%f",&x1);

printf("\nDigite o valor de y1:");

scanf("%f",&y1);

>> ver passo seguinte>> ver passo seguinte>> ver passo seguinte>> ver passo seguinte

38

printf ("\nDigite o valor de x2: ");

scanf ("%f",&x2);

printf ("\nDigite o valor de y2: ");

scanf ("%f",&y2);

distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));

printf ("\nA distancia entre os pontos P1 e P2 é %.2f\n", distancia);

system("PAUSE");

}>> visualização completa do programa>> visualização completa do programa>> visualização completa do programa>> visualização completa do programa

39

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

main()

{

float x1, y1, x2, y2;

float distancia;

printf ("\nDigite o valor de x1: ");

scanf ("%f",&x1);

printf ("\nDigite o valor de y1: ");

scanf ("%f",&y1);

printf ("\nDigite o valor de x2: ");

scanf ("%f",&x2);

printf ("\nDigite o valor de y2: ");

scanf ("%f",&y2);

distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));

printf ("\nA distancia entre os pontos P1 e P2 é %.2f\n", distancia);

system("PAUSE");

}

40

ontinua…ontinua…ontinua…ontinua…