160 likes | 259 Views
CURSO DE C - 2010. AULA 02: Expressões. APRESENTAÇÃO: MICHELE AGRA. 1. ALGORITMOS. > Um algoritmo é uma sequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita.
E N D
CURSO DE C - 2010 AULA 02: Expressões APRESENTAÇÃO: MICHELE AGRA
1. ALGORITMOS • > Um algoritmo é uma sequênciafinita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito e com uma quantidade de esforço finita. • > Dois pontos são essenciais na construção de um algoritmo: • a seqüência de passos; • a forma como os dados serão armazenados no computador. Algoritmo "SomaDeDoisValores"; variável: SOMA,A,B: inteiro; inicio Escreva("Digite um numero"); Leia(A); escreva("digite outro numero"); leia(B); Soma <- A + B; escreva(SOMA); fim. Qual o melhor algoritmo ? “Depende da finalidade do programa” Exemplo de algoritmo • A NOÇÃO DE ALGORITMO É CENTRAL PARA TODA A COMPUTAÇÃO. A CRIAÇÃO DE ALGORITMOS PARA RESOLVER OS PROBLEMAS É UMA DAS MAIORES DIFICULDADES DO PROGRAMADOR.
1. ALGORITMOS • > Um algoritmo opera sobre um conjunto de entradas de modo a gerar a saída que seja de interesse para o usuário. • > Um algoritmo tem cinco características importantes: • Finitude: Um algoritmo deve sempre terminar após um número finito de passos. • Definição: Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambiguidades. • Entradas: Um algoritmo deve ter zero ou mais entradas, isto é quantidades que são lhe são fornecidas antes do algoritmo iniciar. • Saídas: Um algoritmo deve ter uma ou mais saídas, isto é quantidades que tem uma relação específica com as entradas. Algoritmo "SomaDeDoisValores"; variável: SOMA,A,B: inteiro; inicio Escreva("Digite um numero"); Leia(A); escreva("digite outro numero"); leia(B); Soma <- A + B; escreva(SOMA); fim. • Efetividade: Um algoritmo deve ser efetivo. Isto significa que todas as operações devem ser suficientemente básicas de modo que possam ser em princípio executadas com precisão em um tempo finito por um humano usando papel e lápis.
2. VARIÁVEIS • > Fazem referência a um espaço na memória do computador para armazenar determinado tipo de dado. • > As variáveis devem ser explicitamente declaradas: • Tipo:natureza do dado; • Nome:referência ao dado armazenado. • SOMA, A, B • - Que tipos de dados podemos manipular? • 1. Dados numéricos • Dados inteiros: -5, -9, 0,1,2, ..., 3000000 • Dados reais: -0.8, -1.002, 8.95 • 2. Dados alfa-numéricos • Seqüência de caracteres contendo letras, algarismos e caracteres de pontuação: “Nome”, “MUV8613” • 3. Dados Lógicos • verdadeiro (1) • falso (0)
3. TIPOS BÁSICOS DE DADOS • > A linguagem C trabalha com os seguintes tipos básicos: • Inteiro: int • Real (ponto flutuante): float, double • Caracter: char • > Estes tipos diferem entre si pelo espaço de memória que ocupam e conseqüentemente pelo intervalo de valores que podem representar.
4. DECLARAÇÃO DE VARIÁVEIS • > A declaração de uma variável reserva um espaço na memória para armazenar um dado do tipo da variável e associa o nome da variável a este espaço de memória. • > Variáveis do mesmo tipo podem ser declaradas juntas • > Uma vez declarada a variável, podemos armazenar valores nos respectivos espaços de memória. Estes valores devem ter o mesmo tipo da variável. int a; /* declara uma variável do tipo int */ intb; /* declara outra variável do tipo int */ float c; /* declara uma variável do tipo float*/ a = 5; /* armazena o valor 5 em a*/ b = 10; /* armazena o valor 10 em b*/ c = 5.3; /* armazena o valor 5.3 em c*/ int a, b; /* declara duas variáveis do tipo int */ int a; a=5.6; /* a variável armazenará o valor 5*/
5. EXPRESSÕES • > Expressões Aritméticas • Resulta em valor numérico (inteiro ou real) • > Expressões Lógicas; • Resulta em valores lógicos (verdadeiro ou falso) int a,b,c; a=5; b=2; c=a^b; int a,b,c; a=5; b=2; if (a>2*b) c=a^b; Combinação de variáveis, constantes e operadores que pode ser avaliada computacionalmente, resultando em um valor.
5. EXPRESSÕES • > Operadores Aritméticos • > Operadores com mesma precedência são avaliados da esquerda para a direita. • > Podemos utilizar parênteses para alterar a ordem de avaliação de uma expressão. int a,b,c,d,x; x = a+b*c/d; x = (a+b)*c/d;
5. EXPRESSÕES • > Operadores Lógicos • > Lógica de operação
5. EXPRESSÕES • > Operadores Relacionais • > Exemplos int a, b; int c = 23; int d = c + 4; a = (c < 20) || (d > c); /* verdadeiro */ b = (c < 20) && (d > c); /* falso */
5. EXPRESSÕES • > Operadores de incremento e decremento • servem para incrementar e decrementar uma unidade nos valores armazenados nas variáveis • > Exemplo: intx; int c = 10; x = c++; /* atribui o valor 10 a x*/ x = ++c; /* atribui o valor 11 a x*/
5. EXPRESSÕES • > Operador Sizeof • >resulta no número de bytes de um determinado tipo • int a = sizeof(float); • > Conversão de tipo • Implícita • Explicita intx = sizeof(float); /* armazena o valor 4 na x*/ intx = 3.5; /* 3.5 é convertido para inteiro*/ int a, b; a = (int) 3.5; b = (int) 3.5 % 2;
6. ENTRADA E SAÍDA • > São operações feitas através de funções já pré definidas na linguagem. • > Seu uso é viabilizado pela inclusão de uma biblioteca: • > Função scanf • Permite a entrada de valores • scanf (formato, lista de endereços das variáveis...); • > Função printf • Permite a saída (impressão) de valores • printf(formato, lista de constantes/variáveis/expressões...); #include <stdio.h> voidmain (void) { ... } inta,b; Printf("Digite o dado de entrada a:"); scanf ("%d", &a); /* entrada de valores pela linha de comando*/ b = (150+a)+a^2; printf("%d", b); /* impime na tela o valor de b que foi calculado*/
6. ENTRADA E SAÍDA • > Especificadores de formato • %c especifica um char • %d especifica um int • %u especifica um unsignedint • %f, %e, %g especificam float • %lf, %le, %lgespecificam double • %s especifica uma cadeia de caracteres • > Especificadores de escape • \n caractere de nova linha • \t caractere de tabulação • \r caractere de retrocesso • > Exemplos • printf ("%d %g\n", 33, 5.3); • printf ("Inteiro = %d Real = %g\n", 33, 5.3); • scanf ("%d", &n); • scanf ("%d:%d", &h, &m);
7. EXERCÍCIO • > Implemente uma função para calcular as raízes de uma equação do segundo grau do • tipo ax2+bx+c=0. Os valores dos coeficientes a, b e c devem ser fornecidos pelo usuário. • #include <math.h> • #include <stdio.h> • intmain (void) • { • float a, b, c, d, x1, x2; • printf("Entre com os coeficientes a, b, e c: "); • scanf("%f %f %f", &a, &b, &c); • float d = sqrt(b*b - 4*a*c); • x1 = (-b - d)/(2*a); • x2 = (-b + d)/(2*a); • printf("As raizes são: %f e %f\n", x1, x2); • return0; • }
CURSO DE C - 2010 FIM DA AULA 02: Expressões