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

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

IAED Tagus, 2009/2010 Introdução à Programação em C (I)

Apresentações semelhantes


Apresentação em tema: "IAED Tagus, 2009/2010 Introdução à Programação em C (I)"— Transcrição da apresentação:

1 IAED Tagus, 2009/2010 Introdução à Programação em C (I)

2 IAED Tagus,2009/ Organização de Ficheiros em C Organização Típica de Ficheiros em C –Inclusão de bibliotecas de sistema –Inclusão de bibliotecas locais –Definição de tipos e constantes –Variáveis globais –Funções As funções são normalmente definidas de forma Bottom-Up dado que têm que estar definidas antes de serem utilizadas –Podem existir variações desta organização

3 IAED Tagus,2009/ Resumo Diferenças na Sintaxe entre Scheme e C Exemplo: Factorial –Tipos de Dados Básicos –Saltos Condicionais: if-then-else –Valor de retorno de uma função: return Exemplo: Conversão de Temperaturas –Definição de variáveis e atribuições –Ciclos utilizando a estrutura de controlo while –Ciclos utilizando a estrutura de controlo for –Definição de constantes usando #define

4 IAED Tagus,2009/ Factorial Definição de função para cálculo de factorial Scheme (define (factorial n) (if (= n 1) 1 (* n (factorial (- n 1))))) int factorial (int n) { if (n == 1) return 1; else return n*factorial(n-1); } C

5 IAED Tagus,2009/ Factorial Novidades em C –Linguagem tipificada –Notação infixa –Operador de comparação de igualdade é == –Operador = é usado para atribuição int factorial (int n) { if (n == 1) return 1; else return n*factorial(n-1); }

6 IAED Tagus,2009/ Factorial Tipo de dados do valor de retorno da função –Precede o nome da função Tipos básicos: char, int, long int, double e float ; Tipos complexos: estruturas, uniões, tabelas, ponteiros para tipos mais simples e funções int factorial (int n) { if (n == 1) return 1; else return n*factorial(n-1); }

7 IAED Tagus,2009/ Factorial Tipo de dados do parâmetro n Todos os parâmetros são precedidos pelo seu tipo int factorial ( int n) { if (n == 1) return 1; else return n*factorial(n-1); }

8 IAED Tagus,2009/ Factorial Sintaxe da estrutura de controlo: if-then-else if ( ) else Se a condição é verdadeira, executa instrução1 Caso contrário, executa instrução2 int factorial (int n) { if (n == 1) return 1; else return n*factorial(n-1); }

9 IAED Tagus,2009/ Factorial Sintaxe da instrução return return ; Termina a execução da função Resultado da expressão é o valor de retorno da função int factorial (int n) { if (n == 1) return 1; else return n*factorial(n-1); }

10 IAED Tagus,2009/ Réplica do Z3, considerado o primeiro computador programável completamente automático Deutsches Museum, Munique

11 IAED Tagus,2009/ Conversão de Temperaturas Construir um programa que escreve uma tabela de conversão de temperaturas da escala Fahrenheit para escala Celsius

12 IAED Tagus,2009/ Algoritmo Conversão de Temperaturas Inicia no limite inferior de temperatura na escala Fahrenheit Converte temperatura para escala Celsius Escreve linha da tabela com temperaturas Aumenta valor de temperatura na escala Fahrenheit

13 IAED Tagus,2009/ Algoritmo Conversão de Temperaturas Inicia no limite inferior de temperatura na escala Fahrenheit Converte temperatura para escala Celsius Escreve linha da tabela com temperaturas Aumenta valor de temperatura na escala Fahrenheit

14 IAED Tagus,2009/ Algoritmo Conversão de Temperaturas Inicia no limite inferior de temperatura na escala Fahrenheit Enquanto temperatura não fôr superior ao limite superior Converte temperatura para escala Celsius Escreve linha da tabela com temperaturas Aumenta valor de temperatura na escala Fahrenheit

15 IAED Tagus,2009/ Algoritmo Conversão de Temperaturas Inicia no limite inferior de temperatura na escala Fahrenheit fahr = inferior; Enquanto temperatura não fôr superior ao limite superior while (fahr <= superior) { Converte temperatura para escala Celsius celsius = 5 * (fahr-32) / 9; Escreve linha da tabela com temperaturas printf("%d\t%d\n", fahr, celsius); Aumenta valor de temperatura na escala Fahrenheit fahr = fahr + passo; }

16 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { int fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; fahr = inferior; while (fahr <= superior) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + passo; }

17 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { int fahr, celsius; int inferior, superior, passo; Comentários Texto entre /* e */

18 IAED Tagus,2009/ Conversão de Temperaturas main () { int fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; Declaração de variáveis

19 IAED Tagus,2009/ Conversão de Temperaturas main () { int fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; Instruções de atribuição de um valor a uma variável Sintaxe: =

20 IAED Tagus,2009/ Algoritmo Conversão de Temperaturas Inicia no limite inferior de temperatura na escala Fahrenheit fahr = inferior; Enquanto temperatura fôr inferior ao limite superior while (fahr <= superior) { Converte temperatura para escala Celsius celsius = 5 * (fahr-32) / 9; Escreve linha da tabela com temperaturas printf("%d\t%d\n", fahr, celsius); Aumenta valor de temperatura na escala Fahrenheit fahr = fahr + passo; }

21 IAED Tagus,2009/ Conversão de Temperaturas fahr = inferior; while (fahr <= superior) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + passo; } Ciclo while Síntaxe: while ( ) Indentação ajuda a perceber estrutura do programa Erro frequente: while (i >= 0); i = i-1;

22 IAED Tagus,2009/ Conversão de Temperaturas fahr = inferior; while (fahr <= superior) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + passo; } Divisão entre inteiros é divisão inteira Resultado é o quociente da divisão (número inteiro) Exemplo: 5/9 é 0

23 IAED Tagus,2009/ Conversão de Temperaturas fahr = inferior; while (fahr <= superior) { celsius = 5 * (fahr-32) / 9; printf("%d\t%d\n", fahr, celsius); fahr = fahr + passo; } printf permite efectuar escrita formatada %d inteiro decimal, \t caracter tabulação Melhorar formatação: printf("%3d\t%6d\n", fahr, celsius); Problema: 0 o F são -17,8 o C e não -17 o C

24 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { int fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; fahr = inferior; while (fahr <= superior) { celsius = 5 * (fahr-32) / 9; printf("%3d\t%6d\n", fahr, celsius); fahr = fahr + passo; }

25 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { float fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; fahr = inferior; while (fahr <= superior) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + passo; }

26 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { float fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; fahr = inferior; while (fahr <= superior) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + passo; }

27 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { float fahr, celsius; int inferior, superior, passo; inferior = 0; superior = 300; passo = 20; fahr = 0; while (fahr <= 300) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + 20; }

28 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ main () { float fahr, celsius; fahr = 0; while (fahr <= 300) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + 20; } Má prática utilizar valores explícitos Alternativa: utilização de constantes, com #define

29 IAED Tagus,2009/ Conversão de Temperaturas #include /* Conversao Fahrenheit-Celsius */ #define INFERIOR 0 #define SUPERIOR 300 #define PASSO 20 main () { float fahr, celsius; fahr = INFERIOR; while (fahr <= SUPERIOR) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + PASSO; }

30 IAED Tagus,2009/ Conversão de Temperaturas while ( ) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); } for ( ; ; ) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); }

31 IAED Tagus,2009/ Conversão de Temperaturas fahr = INFERIOR; while ( ) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); } for (fahr = INFERIOR; ; ) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); }

32 IAED Tagus,2009/ Conversão de Temperaturas fahr = INFERIOR; while (fahr <= SUPERIOR) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); } for (fahr = INFERIOR; fahr <= SUPERIOR; ) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); }

33 IAED Tagus,2009/ Conversão de Temperaturas fahr = INFERIOR; while (fahr <= SUPERIOR) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); fahr = fahr + PASSO; } for (fahr = INFERIOR; fahr <= SUPERIOR; fahr = fahr + PASSO) { celsius = (5.0/9.0) * (fahr-32); printf("%3.0f\t%6.1f\n", fahr, celsius); } Inicialização de variáveis: fahr = INFERIOR Teste: fahr <= SUPERIOR Incremento: fahr = fahr + PASSO

34 IAED Tagus,2009/ Exercicio para Casa (1) Usar a função factorial para construir um programa que escreve uma tabela com os valores do factorial de 1 a 10.

35 IAED Tagus,2009/ Exercicio para Casa (2) ??? Aumente o limite do programa anterior para mostrar o valor do factorial de 1 a 30. Observe o resultado.

36 IAED Tagus,2009/ Exercicio para Casa (3) Implemente uma nova versão da função factorial, mas não use recursão. Utilize a estrutura de controlo while.

37 IAED Tagus,2009/ Resumo Sintaxe para definição de funções Definição de variáveis e atribuições Estruturas de controlo if-then e if-then-else Ciclos utilizando a estrutura de controlo while Ciclos utilizando a estrutura de controlo for Definição de constantes usando #define


Carregar ppt "IAED Tagus, 2009/2010 Introdução à Programação em C (I)"

Apresentações semelhantes


Anúncios Google