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/2010 2 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/2010 3 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/2010 4 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/2010 5 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/2010 6 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/2010 7 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/2010 8 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/2010 9 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/2010 10 Réplica do Z3, considerado o primeiro computador programável completamente automático Deutsches Museum, Munique

11 IAED Tagus,2009/2010 11 Conversão de Temperaturas 0 -17 20 -6 40 4... 260 126 280 137 300 148 Construir um programa que escreve uma tabela de conversão de temperaturas da escala Fahrenheit para escala Celsius

12 IAED Tagus,2009/2010 12 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/2010 13 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/2010 14 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/2010 15 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/2010 16 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/2010 17 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/2010 18 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/2010 19 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/2010 20 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/2010 21 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/2010 22 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/2010 23 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/2010 24 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/2010 25 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/2010 26 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/2010 27 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/2010 28 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/2010 29 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/2010 30 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/2010 31 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/2010 32 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/2010 33 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/2010 34 Exercicio para Casa (1) 1 2 3 6 4 24... 10 3628800 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/2010 35 Exercicio para Casa (2) 1 2 3 6 4 24... 10 3628800... 30 ??? Aumente o limite do programa anterior para mostrar o valor do factorial de 1 a 30. Observe o resultado.

36 IAED Tagus,2009/2010 36 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/2010 37 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