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

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

– coinf.cm.utfpr.edu.br 1 Prof. Reginaldo Ré Universidade Tecnológica Federal.

Apresentações semelhantes


Apresentação em tema: "– coinf.cm.utfpr.edu.br 1 Prof. Reginaldo Ré Universidade Tecnológica Federal."— Transcrição da apresentação:

1 – coinf.cm.utfpr.edu.br 1 Prof. Reginaldo Ré 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

2 – coinf.cm.utfpr.edu.br 2 Aulas adaptadas dos materiais... Do. Prof. Rogério Aparecido Gonçalves –http://coinf.cm.utfpr.edu.br/docentes/rogerioag Do Prof. Leandro Galvão –www.dcc.ufam.edu.br/~galvao/ De Allan Diego Silva Lima –http://allanlima.wordpress.com/

3 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 Engenharia de Software Coordenador do Curso Superior de Tecnologia em Sistemas para Internet

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

6 – coinf.cm.utfpr.edu.br 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 ?

7 – coinf.cm.utfpr.edu.br 7 Algoritmo 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 12 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. Algoritmo

13 – coinf.cm.utfpr.edu.br 13 Algoritmos Características Importantes 1. Finitude: Um algoritmo deve sempre terminar após um número finito de passos. 2. Definição: Cada passo de um algoritmo deve ser precisamente definido. As ações devem ser definidas rigorosamente e sem ambiguidades. 3. Entradas: Um algoritmo deve ter zero ou mais entradas, fornecidas antes do algoritmo iniciar. 4. Saídas: Um algoritmo deve ter uma ou mais saídas. 5. Efetividade: Todas as operações devem ser simples de modo que possam ser executadas em um tempo limitado.

14 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 15 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. Algoritmo

16 – coinf.cm.utfpr.edu.br 16 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. Algoritmo

17 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 21 int a, b, c; if (a > 2) a = b + c; else a = b – c; return; Algoritmo Programa Raciocínio Algoritmo x Programa de Computador

22 – coinf.cm.utfpr.edu.br 22 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) Algoritmos x Programas de Computador

23 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 24 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 Formas de representação de algoritmos: Pseudocódigo

25 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 26 Exemplo

27 – coinf.cm.utfpr.edu.br 27 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. Algoritmos Sintaxe e Semântica

28 – coinf.cm.utfpr.edu.br 28 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 Algoritmos Sintaxe e Semântica

29 – coinf.cm.utfpr.edu.br 29 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 Técnicas de Construção de Algoritmos

30 – coinf.cm.utfpr.edu.br 30 Passos para elaboração de um algoritmo 1.Compreender o problema. 2.Definir os dados de entrada 3.Definir o processamento dos dados de entrada par alcançar a solução 4.Definir os dados de saída 5.Construir o algoritmo usando uma forma de representação 6.Testar o algoritmo realizando simulações

31 – coinf.cm.utfpr.edu.br 31 Passos para elaboração de um programa Exemplo Calcular as raízes reais de:

32 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 33 Definir os dados de Entrada As entradas fornecidas são os temos a, b, c

34 – coinf.cm.utfpr.edu.br 34 Definir o processamento Calcular Δ. Se Δ 0, calcular raízes reais. Caso contrário, informar que não há raízes reais.

35 – coinf.cm.utfpr.edu.br 35 Definir os dados de saída 02 raízes complexas; 02 raízes reais idênticas; 02 raízes reais distintas;

36 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 37 Construir o algoritmo #include 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 40 O ambiente de programação CDT-Eclipse

41 – coinf.cm.utfpr.edu.br 41 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 A linguagem C

42 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 44 C é uma linguagem de médio nível Alto nívelAda Pascal Cobol Fortran Basic Médio nívelC++ C Baixo nívelAssembly

45 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 47 O C é Case Sensitive 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 – coinf.cm.utfpr.edu.br 48 Estrutura de um programa em C tipo_de_retorno main() { comandos return valor; } tipo_de_retorno main() { comandos return valor; }

49 – coinf.cm.utfpr.edu.br 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. O programa usa a função printf(...) para imprimir a mensagem no console. Texto deve ser entre áspas: Olá Mundo! Avisa o SO que o programa terminou sem problemas.

50 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 51 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 int main() { return 0; } #include int main() { return 0; } Bibliotecas

52 – coinf.cm.utfpr.edu.br 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 int main() { return 0; } #include int main() { return 0; }

53 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 55 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; char letra; float temperatura, pressao; int dia, mes, ano; char letra; float temperatura, pressao; int dia, mes, ano; Exemplo: Variáveis

56 – coinf.cm.utfpr.edu.br FFFF EndereçoConteúdo Variáveis Variáveis são armazenadas na memória do computador.

57 – coinf.cm.utfpr.edu.br 57 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() Comandos de Entrada e Saída

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

59 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 62 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 Comandos de Saída

63 – coinf.cm.utfpr.edu.br 63 Comandos de Saída 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 ( );

64 – coinf.cm.utfpr.edu.br 64 Comandos de Entrada 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 – coinf.cm.utfpr.edu.br 65 Rotina de entrada que lê uma seqüência de caracteres (string) até que seja pressionada a tecla ENTER. gets(nome_da_variável); Comandos de Entrada

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

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

68 – coinf.cm.utfpr.edu.br 68 TipoTamanho (bytes)Tamanho (bits) char 18 int 4*32* float 432 double 864 * Depende do compilador Tipos de dados

69 – coinf.cm.utfpr.edu.br 69 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 Tipos de dados - Modificadores

70 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 71 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. Tipos de dados - Modificadores

72 – coinf.cm.utfpr.edu.br 72 Tipos de dados - GCC TipoTamanho em bitsFaixa de números representados char8-128 a 127 unsigned char80 a 255 signed char8-128 a 127 int a unsigned int320 a signed int a short int a unsigned short int160 a signed short int a long int a unsigned long int320 a signed long int a float32seis dígitos de precisão double64dez dígitos de precisão long double80dez dígitos de precisão

73 – coinf.cm.utfpr.edu.br 73 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. Identificadores

74 – coinf.cm.utfpr.edu.br 74 int _mes int ano_atual float temp1 charpalavra_digitada int _mes int ano_atual float temp1 charpalavra_digitada char2a_feira int valores$float int main charstdio char2a_feira int valores$float int main charstdio Permitido Não permitido! Identificadores ou variáveis

75 – coinf.cm.utfpr.edu.br 75 #define #definePI #defineANO2007 #defineLETRA ' A' #definePI #defineANO2007 #defineLETRA ' A' Exemplos: 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.

76 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 77 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. = ; Operador de Atribuição

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

79 – coinf.cm.utfpr.edu.br 79 Caractere × String de caracteres Quando uma variável possui apenas um caractere, ele ocupa apenas uma posição de memória: A char letra = 'A'; MemóriaVariável

80 – coinf.cm.utfpr.edu.br 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 A BC n caracteres n+1posições char nome[] = "ABC"; MemóriaVariável

81 – coinf.cm.utfpr.edu.br 81 Aritméticos Relacionais Lógicos Operadores

82 – coinf.cm.utfpr.edu.br 82 Operador Ação Exemplo + Adiçãox = 0x1A + y; - Subtraçãox = x – y; * Multiplicaçãox = 8 * y; / Divisãox = y / 2; % Resto de divisãox = y % 2; ++Incrementox++; --Decrementoy--; Operadores Aritméticos

83 – coinf.cm.utfpr.edu.br 83 area=2 * PI * raio; delta=b*b – 4*a*c; area=2 * PI * raio; delta=b*b – 4*a*c; media=(a + b + c)/2; delta=(b*b) – (4*a*c); media=(a + b + c)/2; delta=(b*b) – (4*a*c); 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:

84 – coinf.cm.utfpr.edu.br 84 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 Maior precedência - (unário) * / % + - Menor precedência Operadores Aritméticos

85 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 86 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 */ int n = 6, m = 3; n++;/* resultado: n = 7 */ ++m;/* resultado: m = 4 */ n--;/* resultado: n = 6 */ --m;/* resultado: m = 3 */ Operadores Aritméticos

87 – coinf.cm.utfpr.edu.br 87 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 = 1 */ ++m; /* resultado: m = 1 */ n--; --n; /* resultado: n = -1 */ 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*/ int n = 0, m = 0, a, b, c, d; n++; /* resultado: n = 1 */ ++m; /* resultado: m = 1 */ n--; --n; /* resultado: n = -1 */ 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*/ Operadores Aritméticos

88 – coinf.cm.utfpr.edu.br 88 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 normalForma combinada x = x + 5x += 5 x = x - ax -= a x = x * kx *= k x = x / (x+1)x /= x+1 x = x & kx &= k x = x << kx <<= k... Operações combinadas com atribuição

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

90 – coinf.cm.utfpr.edu.br 90 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 V */ cond = a/2 > 2; /* cond=0 -> F */ cond = a; /* cond=3 -> V */ cond = a – 2*x; /* cond=0 -> F */ 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 V */ cond = a/2 > 2; /* cond=0 -> F */ cond = a; /* cond=3 -> V */ cond = a – 2*x; /* cond=0 -> F */ Operadores Relacionais

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

92 – coinf.cm.utfpr.edu.br 92 int cond; int a = 3; float x = 1.5; cond = (a/2 == x) && (a > 2); /* cond=0 -> F */ cond = (a != x) || (a/x V */ cond = (x = 2*x); /* cond=1 -> V */ cond = !(a/3 F */ cond = (a/2==x) || (a>=x) && !(2*x!=a); /* cond=1 -> V */ cond = a && x; /* cond=1 -> V */ cond = (a - 2*x) || (x F */ int cond; int a = 3; float x = 1.5; cond = (a/2 == x) && (a > 2); /* cond=0 -> F */ cond = (a != x) || (a/x V */ cond = (x = 2*x); /* cond=1 -> V */ cond = !(a/3 F */ cond = (a/2==x) || (a>=x) && !(2*x!=a); /* cond=1 -> V */ cond = a && x; /* cond=1 -> V */ cond = (a - 2*x) || (x F */ Operadores Lógicos

93 – coinf.cm.utfpr.edu.br 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 – coinf.cm.utfpr.edu.br 94 E o problema... dos Bits trocados, será que conseguimos implementar uma solução usando a linguagem C?

95 – coinf.cm.utfpr.edu.br 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 "– coinf.cm.utfpr.edu.br 1 Prof. Reginaldo Ré Universidade Tecnológica Federal."

Apresentações semelhantes


Anúncios Google