Sie sind auf Seite 1von 10

10/08/2011

Algoritmos Linguagem C Algoritmos, variveis e expresses


Prof. Andr Backes Para resolver um problema no computador necessrio que ele seja primeiramente descrito de uma forma clara e precisa. O conceito de algoritmo frequentemente ilustrado pelo exemplo de uma receita.

Algoritmos
Um algoritmo pode ser definido como uma seqncia de instrues para solucionar um problema. Essa seqncia de instrues deve ser
Finita No pode ser ambgua

Algoritmos
Por que NO ambguo?
Cada instruo do algoritmo deve ser precisamente definida, sem permitir mais de uma interpretao de seu significado. Os algoritmos devem se basear no uso de um conjunto de instrues bem definido, que constituem um vocabulrio de smbolos limitado.

Algoritmos
Exemplo: instrues de um professor para seus alunos em uma academia de ginstica
Repetir 10 vezes os quatro passos abaixo:
Levantar e abaixar brao direito; Levantar e abaixar brao esquerdo; Levantar e abaixar perna esquerda; Levantar e abaixar perna direita.

Algoritmos
Exerccio:
Escreva um algoritmo que representa a tarefa de se trocar um lmpada.

10/08/2011

Algoritmos
O algoritmo a lgica do nosso problema. a seqncia de passos que eu fao na minha cabea (ou, quando complexo, no papel) antes de escrever, em C. Podem existir vrios algoritmos diferentes para resolver o mesmo problema.

Pseudo-cdigo
Ex: imprimir maior valor
Leia A; Leia B; Se A > B ento Imprima A; Seno Imprima B; Fim Se

Fluxograma
Um fluxograma um diagrama, escrito em uma notao grfica simples, usado para representao visual de algoritmos.
Algoritmo -> texto Fluxograma -> grfico

Fluxograma
Representa uma seqncia de operaes qualquer, de forma detalhada, onde todos os passos so visualizados. utilizado tambm em outras reas
Processos dentro de uma empresa, linha de produo, etc.

Fluxograma
Vantagens
Padronizao na representao; Permite descrever com maior rapidez um conjunto de tarefas; Facilita a leitura e o entendimento de uma atividade;

Exemplo
Imprimir maior valor
Incio Leia A e B

A > B? Sim Imprima A

No

A recebe B

10/08/2011

Primeiro programa em C
#include <stdio.h> #include <stdlib.h> int main() { printf("Hello World \n"); system(pause); return 0; }

Primeiro programa em C
int main(){ Incio printf("Hello World \n"); system(pause); return 0; } Fim

Comandos de entrada e Sada


Por que escrevemos programas?
Temos dados ou informaes que precisam ser processados; Esse processamento pode ser algum clculo ou pesquisa sobre os dados de entrada; Desse processamento, esperamos obter alguns resultados (Sadas);

Comando de entrada
scanf() Comando que realiza a leitura dos dados de entrada
scanf(tipo de entrada, lista de variveis)

Alguns tipos de entrada


%c leitura de um caractere %d leitura de nmeros inteiros %f leitura de nmero reais %s leitura de vrios caracteres

Comando de entrada
Ex:
Leitura de um nico valor int x; scanf("%d",&x); Leitura de mais de um valor int x,y; scanf("%d%d",&x,&y);

Comando de sada
printf() Comando que realiza a impresso dos dados do programa
printf(tipo de sada, lista de variveis)

Os tipos de sada so os mesmos utilizados para entrada


%c escrita de um caractere %d escrita de nmeros inteiros %f escrita de nmero reais %s escrita de vrios caracteres

Obs: na leitura de vrios valores, separar com espao.

10/08/2011

Comando de sada
Ex:
Sada de um nico valor inteiro printf("%d",x); Sada de mais de um nico valor printf("%d%d",x,y); printf("%d %d",x,y);

Variveis
Computao
Posio de memria que armazena uma informao Pode ser modificada pelo programa Deve ser definida antes de ser usada
Tipo_varivel lista_de_variveis Case sensitive

No tipo de sada, pode-se formatar toda a sada


printf(Total = %d",x);

Variveis
Propriedades
Nome
Pode ter um ou mais caracteres Nem tudo pode ser usado como nome

Variveis
Nome
Deve iniciar com letras ou underscore(_); Caracteres devem ser letras, nmeros ou underscores; Palavras chaves no podem ser usadas como nomes; Letras maisculas e minsculas so consideradas diferentes

Tipo
Conjunto de valores aceitos

Escopo
global ou local

Variveis
Lista de palavras chaves 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 typeof union unsigned void volatile while

Variveis
Corretos:
Contador, contador1,Teste_123, _teste, int1

Errados
comp!, .var, int, 1contador, -x, Teste-123, x&

10/08/2011

Variveis
Tipo
Define os valores que ela pode assumir e as operaes que podem ser realizadas com ela

Tipos bsicos em C
char: um byte que armazena o cdigo de um caractere do conjunto de caracteres local
caracteres sempre ficam entre aspas simples! char c = a;

Exemplo
tipo int recebe apenas valores inteiros tipo float armazena apenas valores reais

int: um inteiro cujo tamanho depende do processador, tipicamente 16 ou 32 bits


int n = 5;

Tipos bsicos em C
float: um nmero real com preciso simples
parte decimal usa ponto e no vrgula! float f = 5.25;

Variveis
Tipo char unsigned char signed char int unsigned int signed int short int unsigned short int signed short int long int signed long int unsigned long int float double long double bits 8 8 8 16 16 16 16 16 16 32 32 32 32 64 80 Intervalo -128 a 127 0 a 255 -128 a 127 -32.768 a 32.767 0 a 65.535 -32.768 a 32.767 -32.768 a 32.767 0 a 65.535 -32.768 a 32.767 -2.147.483.648 a 2.147.483.647 -2.147.483.648 a 2.147.483.647 0 a 4.294.967.295 3,4E-38 a 3.4E+38 1,7E-308 a 1,7E+308 3,4E-4932 a 3,4E+4932

double: um nmero real com preciso dupla


Pode-se escrever nmeros float e double usando notao cientfica double x = 5.0e10;

Variveis
Escopo
Define onde e quando a varivel pode ser usada.

Variveis
Escopo local
Bloco
visvel apenas no interior de um bloco de comandos if (teste == TRUE) { int i; i = i+1;}

Escopo global
Fora de qualquer definio de funo Tempo de vida o tempo de execuo do programa

Funo
declarada na lista de parmetros da funo ou definida dentro da funo int minha_fun (int x, int y) { int i, j;}

Escopo local
Bloco ou funo

10/08/2011

Constantes
Como uma varivel, uma constante tambm armazena um valor na memria do computador. Entretanto, esse valor no pode ser alterado: constante. Para constantes obrigatria a atribuio do valor.

Constantes
Usando #define
Voc dever incluir a diretiva de pr-processador #define antes de incio do cdigo: #define PI 3.1415

Usando const
Usando const, a declarao no precisa estar no incio do cdigo. const double pi = 3.1415;

Constantes char
O C utiliza vrios cdigos chamados cdigos de barra invertida.
\a bip \b backspace \n newline \t tab horizontal \ apstrofe \ aspa \\ backslash \f form feed

Constantes char
Ex:
printf(Hello World); printf(Hello \n World);

Resultado
Hello World Hello World

Atribuio
Operador de Atribuio: =
nome_da_varivel = expresso, valor ou constante;

Converses de Tipos na Atribuio


Atribuio entre tipos diferentes
O compilador converte automaticamente o valor do lado direto para o tipo do lado esquerdo de = Pode haver perda de informao Ex: int x; char ch; float f; ch = x; /* ch recebe 8 bits menos significativos de x */ x = f; /* x recebe parte inteira de f */ f = ch; /* f recebe valor 8 bits convertido para real */ f = x; /* idem para inteiro x */

Ex.: void main( ){ int x = 5; int y; y = x + 3; } A linguagem C suporta mltiplas atribuies


x = y = z = 0;

10/08/2011

Operadores
Os operadores so usados para desenvolver operaes matemticas. Podem ser
Unrios Binrios Bit a bit

Operadores
Operadores Unrios
+ : mais unrio ou positivo - : menos unrio ou negao ! : NOT ou negao lgica &: endereo *: contedo (ponteiros) ++: pr ou ps incremento -- : pr ou ps decremento /* + x; */ /* -x;*/ /* ! x; */ /* &x; */ /* (*x); */ /* ++x ou x++ */ /* -- x ou x -- */

Operadores
Diferena entre pr e ps incremento/decremento
y = x++: incrementa depois de atribuir y = ++x: incrementa antes de atribuir

Operadores
Ex:
int x,y; x = 10; y = x++; printf("%d \n",x); printf("%d \n",y); y = ++x; printf("%d \n",x); printf("%d \n",y);

Resultado
11 10 12 12

Operadores
Binrios
+: adio de dois nmeros - : subtrao de dois nmeros * : multiplicao de dois nmeros / : quociente de dois nmeros %: resto da diviso: /* x + y */ /* x - y */ /* x * y */ /* x / y */ /* x % y */

Operadores
Operaes bit-a-bit: o nmero representado por sua forma binria e as operaes so feitas em cada bit dele.
<<: desloca esquerda >>: desloca direita ^ : ou exclusivo & : E bit-a-bit | : OU bit-a-bit ~ : Complementa bit-a-bit /* x << 2 */ /* x >>2 */ /* x ^ 0xF0 */ /* x & 0x07 */ /* x | 0x80 */ /* ~ x */

10/08/2011

Operadores
As operaes bit-a-bit ajudam programadores que queiram trabalhar com o computador em "baixo nvel". Essas operaes s podem ser usadas nos tipos char, inte long.

Operadores
Exemplo de operador bit a bit
char x = 0xD5; 1 0x0F x & 0x0F
0 1 0 0 0 1 0 0 1 1 1 0 1 1 1

Operadores
Exemplo de operador bit a bit
char x = 0xD5; 1 x << 2
(x*4) 0 1 1 0 0 1 1 0 0 1 1 0 0 1 0

Operadores Simplificados
O C permite simplificar algumas expresses matemticas
+= : soma e atribui -= : subtrai e atribui *= : multiplica e atribui /= : divide e atribui quociente %= : divide e atribui resto &= : E bit-a-bit e atribui |= : OU bit-a-bit e atribui <<= : shift left e atribui x += y; <=> x = x + y; x -= y; <=> x = x - y; x *= y; <=> x = x * y; x /= y; <=> x = x / y; x %= y; <=> x = x % y; x &= y; <=> x = x & y; x |= y; <=> x = x | y; x <<= y; <=> x = x<<y;

x >> 2
(x/4)

Operadores Relacionais e Lgicos


Operadores relacionais: comparao entre variveis
> >= < <= == != Maior do que Maior ou igual a Menor do que Menor ou igual a Igual a Diferente de

Operadores Relacionais e Lgicos


Exemplos
Expresso x=5; x > 4 x=5; x == 4 x=5; y=3; x != y x=5; y=3; x != (y+2) Resultado verdadeiro (1) falso (0) verdadeiro (1) falso (0)

Esse tipo de operador retorna verdadeiro (1) ou falso (0)

10/08/2011

Operadores Relacionais e Lgicos


Operadores lgicos: operam com valores lgicos e retornam um valor lgico verdadeiro (1) ou falso (0)
Operador && || ! Funo AND (E) OR (OU) NOT Exemplo (c >=0 && c<=9) (a==F || b!=32) (NO)

Operadores Relacionais e Lgicos


Tabela verdade

Expresses
Expresses so combinaes de variveis, constantes e operadores. Exemplos:
Anos = Dias/365.25; i = i+3; c= a*b + d/e; c= a*(b+d)/e;

Modeladores (Casts)
Um modelador aplicado a uma expresso. Fora o resultado da expresso a ser de um tipo especificado.
(tipo) expresso

Ex:
(float) x; (int) x * 5.25;

Operador vrgula (,)


O operador , determina uma lista de expresses que devem ser executadas seqencialmente.
Ex: x = (y=2, y+3); Nesse caso, o valor 2 atribudo a y, se somar 3 a y e o retorno (5) ser atribudo varivel x . Pode-se encadear quantos operadores , forem necessrios.

Modeladores (Casts)
Ex:
int num; float f; num = 10; f = num/7; printf ("%f \n", f); f = (float)num/7; printf ("%f", f);

Resultado
1.000000 1.428571

10/08/2011

Precedncia dos Operadores


Maior precedncia
( ) [ ] -> ! ~ ++ -- . -(unrio) (cast) *(unrio) &(unrio) sizeof */% +<< >> <<= >>= == != & ^ | && || ? = += -= *= /=

Menor precedncia

10

Das könnte Ihnen auch gefallen