A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação.

Apresentações semelhantes


Apresentação em tema: "Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação."— Transcrição da apresentação:

1 Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br
Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação do Curso Superior de Tecnologia em Sistemas para Internet Introdução à Programação usando Linguagem C Prof. Reginaldo Ré

2 Aulas adaptadas dos materiais...
Do. Prof. Rogério Aparecido Gonçalves Do Prof. Leandro Galvão De Allan Diego Silva Lima

3 Aula 1 - Sumário Apresentações pessoais Recursos disponíveis
Introdução ao Curso de Programação em Linguagem C Algoritmo Definições de Algoritmo Algoritmo x Programa de Computador Algoritmos e suas técnicas de construção O ambiente de programação CDT-Eclipse Linguagem de programação C

4 Apresentações Pessoais
Reginaldo Ré Dr. Computação e Matemática Computacional ICMC-USP Engenharia de Software Bacharel em Ciência da Computação FIPP-UNOESTE Coordenador do Curso Superior de Tecnologia em Sistemas para Internet

5 Recursos Disponíveis coinf.cm.utfpr.edu.br CDT-Eclipse

6 Introdução ao Curso de Programação em Linguagem C
Dispõe-se de 2 vasilhas com capacidades marcadas de 9 e 4 litros, respectivamente. Mostre a sequência de passos necessários para colocar numa terceira vasilha de medida desconhecida um volume de 6 litros. 6 4 9 ?

7 Algoritmos fazem parte da nossa vida, mais do que imaginamos!
Sabemos criar e seguir algoritmos. Exemplos clássicos: Como tomar banho? Como ir de casa até a UTFPR? Como trocar o pneu do carro? Como trocar uma lâmpada? Como fazer a média final da disciplina? ... Algoritmos fazem parte da nossa vida, mais do que imaginamos!

8 Definição de Algoritmo
“Um conjunto finito de regras que provê uma sequência de operações para resolver um tipo de problema específico” – Donald Knuth ( “The art of computer programming”)

9 Outras definições... “Processo de cálculo, ou de resolução de um grupo de problemas semelhantes, em que se estipulam, com generalidade e sem restrições, as regras formais para a obtenção do resultado ou da solução do problema” – [Aurélio] “Sequência ordenada, e não ambígua, de passos que levam à solução de um dado problema” – [TREMBLAY] “Algoritmo é uma sequência de passos que visa atingir um objetivo bem definido” – [FORBELLONE e EBERSPÄCHER]

10 Outras definições... “É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações primitivas, as quais damos por certo que podem ser executadas”. – [Guimarães/Lages] “É a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa”. – [ASCENCIO, 1999] “É uma sequência finita de instruções ou operações cuja execução, em tempo finito, resolve um problema computacional, qualquer que seja sua instância.” – [SALVETTI, 1999]

11 Outras definições... “Redação que descreve de forma lógica e sem ambigüidades, uma sequência de passos (ações) para se resolver um problema que tenha um comportamento padrão.” – [Franco e Polidório] “Algoritmos são regras formais para a obtenção de um resultado ou da solução de um problema, englobando fórmulas de expressões aritméticas” – [MANZANO, 1997] “Um algoritmo é a descrição de um conjunto de comandos que, obedecidos, resultam numa sucessão finita de ações.” – [FARRER, 1999]

12 Algoritmo O algoritmo deve ensinar a resolver o problema, e não trazer a solução. Exemplo: receita de bolo. Ação é um acontecimento que, a partir de um estado inicial, após um período de tempo finito, produz um resultado final previsível e bem definido. Objetivo: solução do problema.

13 Algoritmos 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, fornecidas antes do algoritmo iniciar. Saídas: Um algoritmo deve ter uma ou mais saídas. Efetividade: Todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado.

14 Algoritmos Dificuldades iniciais
Difícil para iniciantes saber o que o computador pode ou não fazer. Criação de algoritmos não é um processo automático, cada pessoa tem uma forma de pensar, de organizar o raciocínio. Pode haver mais de uma solução para um problema. Torre de Hanoi

15 Algoritmo Aspecto lógico: ordenar o pensamento.
Organização sequencial das ações pertinentes à solução de um problema; Exemplo da receita de bolo: o bolo só pode ser levado ao forno depois que a massa estiver pronta. Lógica no dia-a-dia: Todo aluno estuda bastante. Vocês são alunos. Portanto, vocês estudam bastante.

16 Algoritmo Padrão de comportamento: uma sequência de ações para resolver um problema. Exemplos: Trocar uma lâmpada (problema do cotidiano): pegue uma escada; posicione-a sob a lâmpada; busque uma lâmpada nova; suba na escada; retire a lâmpada velha; coloque a lâmpada nova. Calcular a área de um retângulo (problema matemático): obtenha a medida da base do retângulo; obtenha a medida da altura do retângulo; multiplique a medida da base pela medida da altura.

17 Um Desafio Torre de Hanoi: o objetivo é mover os discos de um pino para outro. Somente um disco pode ser movido por vez. Cada movimento consiste em tirar discos de um pino e colocar em outro. Nenhum disco pode ser colocado em cima de um disco menor.

18 O desafio continua... Descreva a sequência de movimentos dos discos para a solução dessa configuração de torre de hanói.

19 Outro Desafio O problema dos Bits trocados
Os caixas eletrônicos das Ilhas Weblands operam com todos os tipos de notas disponíveis, mantendo um estoque de cédulas para cada valor (B$ 50,00, B$10,00, B$5,00 e B$1,00). Os clientes do banco utilizam os caixas eletrônicos para efetuar retiradas de um certo número inteiro de Bits. Sua tarefa é escrever um algoritmo que, dado o valor de Bits desejado pelo cliente, determine o número de cada uma das notas necessário para totalizar esse valor, de modo a minimizar a quantidade de cédulas entregues.

20 Algoritmo x Programa de Computador
Um programa de computador é um algorimo escrito em uma linguagem de programação Algoritmo: o executor é o cérebro humano Programa de computador: o executor é um computador Linguagem Algorítmica Linguagem Computacional Linguagem Natural

21 Algoritmo x Programa de Computador
Raciocínio int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Algoritmo Programa

22 Algoritmos x Programas de Computador
Algoritmos geralmente descrevem algum processamento de dados: Estes dados precisam ser representados (descritos) nos algoritmos; Analogia com a ação humana de efetuar calculos matemáticos mentalmente Dados de Entrada Dados de Saída Processamento (Computador)‏

23 Exemplo Faça um Algoritmo para calcular a média aritmética entre duas notas de um aluno e mostrar sua situação, o que pode ser APROVADO ou REPROVADO. Passo 1: Receber os valores das duas notas Passo 2: Calcular a média aritmética Passo 3: Mostrar a média aritmética Passo 4: Se a média aritmética for maior ou igual a 7, então situação do aluno é APROVADO; caso contrário, a situação é REPROVADO.

24 Formas de representação de algoritmos: Pseudocódigo
Um programa de computador é uma forma de representar um algoritmo Proximidade com a linguagem de máquina do computador Existem algumas outras formas Pseudo-linguagem: emprega linguagem intermediária entre linguagem natural e linguagem de programação Este método procura misturar as facilidades da linguagem natural com a precisão das linguagens de programação A representação da solução em pseudo código possibilita ao programador a abstração dos detalhes da sintaxe da linguagem escolhida

25 Exemplo ALGORITMO MÉDIA DECLARE N1, N2, M NUMÉRICO
ESCREVA “Digite as duas notas” LEIA N1, N2 M ← (N1 + N2) / 2 ESCREVA “Média = ”, M SE M >= 7 ENTÃO ESCREVA “Aprovado” SENÃO ESCREVA “Reprovado” FIM_ALGORITMO.

26 Exemplo

27 Algoritmos Sintaxe e Semântica
Sintaxe: dita as regras de como as sentenças e cada um de seus elementos devem ser construídos corretamente; Regras Sintáticas Semântica: se preocupa com o significado de uma sentença construída.

28 Algoritmos Sintaxe e Semântica
A sintaxe por si só não define completamente uma linguagem. Exemplo: “Descoloridas idéias verdes sonham furiosamente” (Chomsky)‏ Por outro lado: “Nóis foi, mais já vortemo”

29 Técnicas de Construção de Algoritmos
Divisão para a conquista: Técnica de divisão do problema em partes menores. As soluções das partes menores combinam-se para a composição da solução global. Receita de um bolo (modo de preparo do bolo, preparo do receio, preparo da cobertura) Reaproveitamento: Reutilização de soluções como parte de uma nova solução. Em um livro de receitas, os pratos que necessitassem o preparo de um molho branco, poderiam referenciar a página da receita do molho branco. “Para o preparo do molho leia a página 25”

30 Passos para elaboração de um algoritmo
Compreender o problema. Definir os dados de entrada Definir o processamento dos dados de entrada par alcançar a solução Definir os dados de saída Construir o algoritmo usando uma forma de representação Testar o algoritmo realizando simulações

31 Passos para elaboração de um programa Exemplo
Calcular as raízes reais de:

32 Compreender o problema
Exemplo: Equação de 2o. grau Possibilidades de raízes: 02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas; Condição para haver raízes reais: Δ ≥ 0

33 Definir os dados de Entrada
As entradas fornecidas são os temos a, b, c

34 Definir o processamento
Calcular Δ. Se Δ ≥ 0, calcular raízes reais. Caso contrário, informar que não há raízes reais.

35 Definir os dados de saída
02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas;

36 Construir o algoritmo ler(a,b,c) delta = b^2 – 4*a*c
se (delta ≥ 0) então r1 = – b – (delta)^(–1/2) r2 = – b + (delta)^(–1/2) escrever(r1,r2) senão escrever(“Não há raiz real”) fim do se fim do algoritmo

37 Construir o algoritmo #include <stdio.h>
#include <stdlib.h> #include <math.h> int main(void) { float a, b, c, delta, r1, r2; scanf("%f %f %f", &a, &b, &c); delta = b*b – 4*a*c; if (delta >= 0) r1 = – b – sqrt(delta); r2 = – b + sqrt(delta); printf("r1 = %f \n r2 = %f", r1, r2); } else printf("Nao ha raiz real\n");

38 Exercícios Ler dois números inteiros e imprimir a soma.
Entrar com dois números inteiros e imprimir a média aritmética. Escreva um algoritmo que calcule o diâmetro, a área e a circunferência de um círculo, sabendo que o único dado disponível é o seu raio. Diâmetro = 2 * Raio Área = Pi * Raio * Raio Circunferência= 2 * Pi * Raio Criar um algoritmo que solicite e imprima os valores da diagonal maior, diagonal menor e calcule a área de um losango. Fórmula: (diagonal maior * diagonal menor) dividido por 2

39 Exercícios de Fixação Elaborar um algoritmo para calcular e apresentar o volume de uma lata de óleo, utilizando a fórmula: VOLUME = * (R*R) * ALTURA. Escreva um algoritmo que pergunte a altura (em metros) e a massa (em Kg) de uma pessoa. Em seguida o programa deverá exibir uma mensagem dizendo o índice de massa corporal. imc = peso / altura * altura

40 O ambiente de programação CDT-Eclipse

41 A linguagem C A linguagem C é uma linguagem de programação genérica inventada na década de 1970 por Dennis Ritchie. O ANSI (American National Standard Institute) padronizou a versão ANSI-C

42 A linguagem C Desenvolvida por Dennis Ritchie (Laboratórios Bell, 1972) Criada inicialmente para ser um "ASSEMBLY portátil". Rodava num computador PDP-11, usando o sistema operacional UNIX. Posteriormente foi utilizada para reescrever o UNIX. Somente em 1978 Brian W. Kernighan e Dennis Ritchie estabeleceram a sintaxe e a semântica da linguagem C. O desenvolvimento de C foi influenciado pela linguagem B (Ken Thompson), que teve suas origens na BCPL (Martins Richards). Tais linguagens surgiram da evolução da Algol CPL.

43 A linguagem C e sua família
CPL (Combined Programming Language) BCPL (Basic CPL) B (Ken Thompson, Bell Labs, 1970) C (Dennis Ritchie, Bell Labs, 1972). C++ (Bjarne Stroustrup, Bell Labs, 1983)

44 C é uma linguagem de médio nível
Alto nível Ada Pascal Cobol Fortran Basic Médio nível C++ C Baixo nível Assembly

45 Por que estudar C? Versatilidade: ele possui tanto características de "alto nível" quanto de "baixo nível". Poder: possui ampla biblioteca de funções e é utilizado na construção de “software” para os mais diversos projetos. Portabilidade: é possível adaptar um programa em C de um tipo de computador para outro.

46 Primeiros passos Um programa em C consiste de várias funções encadeadas. Uma função é um bloco de código de programa que pode ser usado diversas vezes em sua execução. Blocos de código são delimitados por chaves: {} O uso de funções permite que o programa fique mais legível, mais estruturado.

47 O C é “Case Sensitive” Soma ≠ soma ≠ SOMA ≠ SomA
Caracteres maiúsculos e minúsculos fazem diferença: Comandos do C (if ou for, por exemplo) só podem ser escritos em minúsculas, pois senão o compilador interpretará como variáveis. Soma ≠ soma ≠ SOMA ≠ SomA

48 Estrutura de um programa em C
tipo_de_retorno main() { comandos return valor; }

49 Estrutura de um programa em C Exemplo
Avisa ao compilador que as funções de entrada e saída de dados da biblioteca stdio A função main é o corpo principal do programa. int main() { … } Todo programa deve ter um main. As chaves { e } marcam o início e o fim da função. Avisa o SO que o programa terminou sem problemas. O programa usa a função printf(...) para imprimir a mensagem no console. Texto deve ser entre áspas: “Olá Mundo!”

50 A função main() Todo programa deve ter uma única função main.
A função main é o ponto de partida quando o programa é executado. Arquivos auxiliares não devem conter a função main.

51 Bibliotecas Programas que possuem a especificação das funções pré-definidas da linguagem. As bibliotecas que serão usadas devem ser os primeiros comandos de um programa em C. #include <nome_da_biblioteca.h> int main() { <açoes> return 0; }

52 Bibliotecas Programas que possuem a especificação das funções pré-definidas da linguagem. As bibliotecas que serão usadas devem ser os primeiros comandos de um programa em C. #include <nome_da_biblioteca.h> int main() { <açoes> return 0; }

53 Bibliotecas stdio.h: biblioteca de funções de entrada e saída (leitura e escrita de dados). math.h: biblioteca de funções matemáticas (potenciação, raiz quadrada, funções trigonométricas, etc.). string.h: biblioteca de funções para manipulação de conjunto de caracteres (por exemplo, palavras).

54 Comentários Comentários em C podem ser escritos em qualquer lugar do texto para facilitar a interpretação do algoritmo. Tipos de comentários: Delimitados por /* e */. Todo o texto delimitado é considerado pelo compilador como um comentário. Colocando // em uma linha. Tudo que estiver à direita do símbolo é considerado como um comentário.

55 Variáveis Devem ser declaradas antes de serem usadas, no início de um bloco de código. Forma geral da declaração de variáveis: tipo_da_variável lista_de_variáveis; Exemplo: char letra; float temperatura, pressao; int dia, mes, ano;

56 Variáveis Variáveis são armazenadas na memória do computador. Endereço
Conteúdo 0000 0001 0002 0003 0004 0005 ... FFFF

57 Comandos de Entrada e Saída
Estão descritos na biblioteca stdio.h Comandos de Saída: Função printf() Função putchar() Comandos de Entrada: Função scanf() Função gets() Função getchar()

58 Comandos de Saída Função para a escrita formatada no dispositivo de saída padrão, normalmente o vídeo. printf (string_de_controle, argumentos);

59 Comandos de Saída string_de_controle consiste em:
Caracteres que serão exibidos na tela Caracteres de controle (\) Comandos de formato, que definem a maneira como os argumentos serão mostrados (%) argumentos são as variáveis cujos conteúdos serão exibidos na tela.

60 Comandos de Saída Caracteres de controle imprimem caracteres especiais na saída: \n – nova linha \t – tabulação horizontal \\ – a própria contra-barra \b – backspace \" – aspas \' – apóstrofe \xnnn – código hexadecimal do caractere ASCII \a – alerta sonoro

61 Comandos de Saída Comandos de formato disponíveis (começam por %):
%d (%i)– números inteiros em decimal %f – números reais do tipo float %lf – números reais do tipo double %e (%E)– números reais em notação científica %c – caractere %s – seqüência de caracteres (string) %x (%X)– números em hexadecimal (base 16) %o – números em octal (base 8) %% – o próprio caractere % %p – endereços de memória (em hexadecimal)

62 Comandos de Saída Outros comandos de alinhamento:
+ - imprime o sinal de + mesmo quando o número é positivo #x ou #X – imprime 0x ou 0X à esquerda do número hexa #f, #e ou #E – imprime o ponto decimal, mesmo para inteiros

63 Comandos de Saída putchar (<variável>);
Escreve um caractere na tela a partir da posição atual do cursor. O resultado do comando é a impressão do caractere corresponde ao código ASCII do argumento. Argumento pode ser do tipo int ou char. putchar (<variável>);

64 Comandos de Entrada scanf (string_de_controle, argumentos);
Rotina de leitura formatada de dados inseridos pelo usuário pelo teclado. string_de_controle: comandos de formato (%_), os mesmos relacionados para o printf(). argumentos: endereço das variáveis onde serão colocados os valores de entrada: &nome_variável. O operador & representa o endereço de uma variável. scanf (string_de_controle, argumentos);

65 Comandos de Entrada gets(nome_da_variável);
Rotina de entrada que lê uma seqüência de caracteres (string) até que seja pressionada a tecla ENTER. gets(nome_da_variável);

66 Comandos de Entrada nome_da_variável = getchar();
getchar() - rotina que espera uma tecla ser pressionada e devolve seu valor na tela. Deve-se pressionar ENTER depois de digitar o caractere. nome_da_variável = getchar();

67 Tipos de dados A linguagem C tem 5 tipos básicos:
char – caractere ASCII int – número inteiro float – número real de precisão simples void – sem valor double – número real de precisão dupla

68 Tipos de dados * Depende do compilador char int float double 1 8 4*
Tamanho (bytes) Tamanho (bits) char 1 8 int 4* 32* float 4 32 double 64 * Depende do compilador

69 Tipos de dados - Modificadores
Um modificador de tipo altera o intervalo de valores que uma variável pode armazenar ou como o compilador representa um valor. Existem quatro modificadores de tipo: signed unsigned long short

70 Tipos de dados - Modificadores
Ao tipo float não se pode aplicar nenhum modificador. Ao tipo double pode-se aplicar apenas o modificador long. Os quatro modificadores podem ser aplicados a inteiros (int). O modificador unsigned serve para especificar variáveis sem sinal, instruindo o compilador a não considerar o primeiro bit como sinal.

71 Tipos de dados - Modificadores
O número de bits do tipo int normalmente corresponde ao tamanho da palavra de uma determinada arquitetura de computador. Dependendo do compilador, os modificadores short e long alteram a quantidade de bits reservados para representar números inteiros: short int: reserva mais bits que o tipo int long int: reserva menos bits que o tipo int Cada compilador é livre para escolher tamanhos adequados para o seu próprio hardware.

72 Tipos de dados - GCC Tipo Tamanho em bits
Faixa de números representados char 8 -128 a 127 unsigned char 0 a 255 signed char int 32 a unsigned int 0 a signed int short int 16 a unsigned short int 0 a signed short int long int unsigned long int signed long int float seis dígitos de precisão double 64 dez dígitos de precisão long double 80

73 Identificadores São os nomes que damos aos objetos utilizados (variáveis, constantes, funções, etc.) Podem ter qualquer nome, desde que: Comece com uma letra ou sublinhado (underscore) _ Os caracteres subseqüentes devem ser letras, números ou _. Não seja igual a: uma palavra reservada, uma função declarada bibliotecas do C.

74 Identificadores ou variáveis
Permitido Não permitido! int _mes int ano_atual float temp1 char palavra_digitada char 2a_feira int valores$ float float int main char stdio

75 Constantes Constantes são valores fixos que não podem ser modificados em nenhuma parte do programa. Sua definição não usa ponto-e-vírgula, nem sinal de igualdade. #define <identificador> <valor> Exemplos: #define PI #define ANO 2007 #define LETRA ' A'

76 Constantes Costuma-se definir o nome das constantes com letras maiúsculas, para diferenciá-los de nomes de variáveis e funções. Essa prática melhora a legibilidade do programa. Definição de constantes facilita a manutenção do programa.

77 Operador de Atribuição
Uma variável, ao ser definida, contém um valor qualquer e imprevisível. Costuma-se dizer que contém lixo de memória. O comando de atribuição (=) permite alterar o valor (conteúdo) de uma variável. <variável> = <valor>;

78 Operador de Atribuição
Exemplos: letra = 'H'; ano = 2007; temperatura = 38.9; nova_letra = letra; float cateto = 3.1; area_ret = base * altura; atribuição de valor atribuição de uma variável a outra definição e atribuição atribuição de fórmula

79 Caractere × String de caracteres
Quando uma variável possui apenas um caractere, ele ocupa apenas uma posição de memória: char letra = 'A'; A Variável Memória

80 Caractere × String de caracteres
Uma string de n caracteres ocupa n+1 posições de memória. A posição adicional corresponde ao valor zero (\NULL em ASCII), indicativo do final da string. char nome[] = "ABC"; A B C n+1 posições n caracteres Variável Memória

81 Operadores Aritméticos Relacionais Lógicos

82 Operadores Aritméticos
Ação  Exemplo Adição x = 0x1A + y; Subtração x = x – y; Multiplicação x = 8 * y; Divisão x = y / 2; Resto de divisão x = y % 2; ++ Incremento x++; -- Decremento y--;

83 Operadores Aritméticos
Diversos operadores podem ser utilizados em uma mesma expressão: A ordem de execução dos operadores pode ser determinada explicitamente pelo uso de parênteses: area = 2 * PI * raio; delta = b*b – 4*a*c; media = (a + b + c)/2; delta = (b*b) – (4*a*c);

84 Operadores Aritméticos
Quando não há parênteses, o compilador usa regras de precedência para determinar qual operação executar primeiro Se duas operações têm a mesma precedência, segue-se a ordem da esquerda para a direita. Maior precedência - (unário) * / % + - Menor precedência

85 Operadores Aritméticos
O operador incremento de 1 (++) realiza duas operações: Soma 1 ao valor atual da variável Armazena o resultado na própria variável Em vez de x = x + 1; , escreve-se x++; De forma semelhante funciona o operador decremento de 1 (--). Em vez de x = x - 1; , escreve-se x--;

86 Operadores Aritméticos
Os operadores ++ e -- podem ser usados como: Prefixos: antes da variável: ++x Sufixos: após a variável: x++ Se a operação aparece isolada, ambas notações são equivalentes: int n = 6, m = 3; n++; /* resultado: n = 7 */ ++m; /* resultado: m = 4 */ n--; /* resultado: n = 6 */ --m; /* resultado: m = 3 */

87 Operadores Aritméticos
Se a operação é parte de uma expressão: Prefixo: Valor usado na expressão é o valor incrementado/decrementado. Sufixo: Operação incremento/decremento será realizada depois que o valor for usado na expressão. int n = 0, m = 0, a, b, c, d; n++; /* resultado: n = */ ++m; /* resultado: m = */ n--; --n; /* resultado: n = */ a = n++; /* resultado: a = -1; n =0 */ b = ++m; /* resultado: b = 2; m = 2 */ c = 2*(m++); /* resultado: c = 4; m = 3 */ d = 3*(++n); /* resultado: d = 3; n = 1 */

88 Operações combinadas com atribuição
Uma operação pode ser combinada com a atribuição em um mesmo operador. Embora sejam mais eficientes, tornam o programa mais difícil de se compreendido. Forma normal Forma combinada x = x + 5 x += 5 x = x - a x -= a x = x * k x *= k x = x / (x+1) x /= x+1 x = x & k x &= k x = x << k x <<= k ...

89 Operadores Relacionais
Ação  Maior do que  >=  Maior ou igual a  Menor do que  <=  Menor ou igual a  ==  Igual a  !=  Diferente de  Compara dois valores, produzindo um resultado lógico: FALSO é indicado pelo valor zero. VERDADEIRO é indicado por um valor ≠ zero.

90 Operadores Relacionais
int cond; int a = 3; float x = 1.5; cond = a != x; /* cond=1 -> V */ cond = a/2.0 == x; /* cond=1 -> V */ cond = a/2 == x; /* cond=0 -> F */ cond = a != 2*x; /* cond=0 -> F */ cond = a >= x; /* cond=1 -> V */ cond = a/3 <= x; /* cond=1 -> V */ cond = a/2 > 2; /* cond=0 -> F */ cond = a; /* cond=3 -> V */ cond = a – 2*x; /* cond=0 -> F */

91 Operadores Lógicos && AND (E) || OR (OU) ! NOT (NÃO) Operador Ação
Operam sobre os valores lógicos das variáveis, sem considerar seu bits individuais. Não confundir com operadores bit a bit.

92 Operadores Lógicos int cond; int a = 3; float x = 1.5;
cond = (a/2 == x) && (a > 2); /* cond=0 -> F */ cond = (a != x) || (a/x < 2); /* cond=1 -> V */ cond = (x <= a) && (a >= 2*x); /* cond=1 -> V */ cond = !(a/3 <= x); /* cond=0 -> F */ cond = (a/2==x) || (a>=x) && !(2*x!=a); /* cond=1 -> V */ cond = a && x; /* cond=1 -> V */ cond = (a - 2*x) || (x < a/2); /* cond=0 -> F */

93 Precedência entre operadores
++ -- - ! Pré/pós incremento, decremento Menos Unário Negação Maior precedência Menor precedência * / % Multiplicação, divisão Módulo (resto da divisão inteira) + - Subtração, adição > >= < <= Relacionais == != Igual, diferente && E lógico || OU lógico = += -= *= /= Atribuição

94 E o problema... dos Bits trocados, será que conseguimos implementar uma solução usando a linguagem C?

95 E, outro problema... Reescreva o algoritmo de calculo de índice de massa corporal (IMC) de maneira que, além de mostrar o índice, deve-se mostrar as mensagens: “Abaixo do peso.”, quando o imc for menor que 18,5, inclusive “Peso normal.”, quando o imc for maior que 18,5 e menor que 25, inclusive “Acima do peso.”, quando o imc for maior que 25 e menor que 30, inclusive “Muito acima do peso.”, quando o imc for mair do que 30


Carregar ppt "Prof. Reginaldo Ré reginaldo@utfpr.edu.br http://coinf.cm.utfpr.edu.br Universidade Tecnológica Federal do Paraná – Campus Campo Mourão COINT - Coordenação."

Apresentações semelhantes


Anúncios Google