Introdução à programação Computadores e programação I Linguagens de programação Introdução ao C © M@nso 2003 Introdução à programação Sumário Execução de programas interpretadores, compiladores Linguagem Manipulação de informação Operadores entrada e saída de dados Selecção de instruções aritméticos, lógicos Leitura e escrita Variáveis tipos de dados Instrução if Instrução Switch Erros em programação © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Interpretação de Programas interpretador Programa que converte as instruções da linguagem de alto nível em instruções máquina e as executa. Basic, Java, Portugol © M@nso 2004 Introdução à programação Computadores e programação I Compilação de programas Compilador (compiler) Programa que converte as instruções da linguagem de alto nível em instruções máquina formando um programa objecto Ligador (linker) Programa que reúne todos os programas objecto e faz um programa executável C,C++, Pascal © M@nso 2004 Programas Executados pelo sistema operativo Introdução à programação Computadores e programação I Introdução à linguagem C © M@nso 2003 Introdução à programação Computadores e programação I Porquê C++ É a base de linguagens de programação modernas É um investimento È uma linguagem genérica Serve para vários fins É disciplinadora Linguagem estandardizada Muitos programas escritos em C / C++ Programar com método É eficiente Existem bons compiladores © M@nso 2004 Introdução à programação Computadores e programação I Ola mundo #include <stdio.h> int main(int argc, char* argv[]) Definição de um bloco de instruções printf("ola mundo"); Função principal {} Biblioteca de funções de entrada e saida de dados escrever return 0; Retorno do programa Olá mundo #include <stdio.h> int main(int argc, char* argv[]) { printf("ola mundo"); return 0; } © M@nso 2004 Introdução à programação Computadores e programação I Algoritmos computacionais Acções de um algoritmo computacional Manipular dados Receber dados Guardar dados Imprimir dados Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções © M@nso 2004 Introdução à programação Computadores e programação I Tipos de dados em C Simples Numéricos inteiros reais Caracter Lógico Compostos variável D0 11100 11100 Variáveis Matrizes Estruturas Uniões D0 Um nome Um Tipo Um só valor A0 D0 0100 0001 © M@nso 2004 A variável lógico Nome da variável 0100 0001 Nome da variável 0100 0001 100 0001 caracter 0100 0001 0100 0001 0100 0001 C variável VERDADEIRO inteiro 50 00 Real 100 0001 -3,14156 Introdução à programação Computadores e programação I Declaração de variáveis Tipo_de_dado nome_da_variável; Tipo_de_dado nome_da_variável = valor_inicial; • Tipo_de_dado nome_da_variável1, nome_da_variável2, . . .; Exemplos int soma; float saldo = 0.0; doule x, y, z; NOTA A declaração das variáveis deve ser feita antes da sua utilização © M@nso 2004 Introdução à programação Computadores e programação I Regras dos nomes de variáveis Pode ser constituído por letras do alfabeto por dígitos e pelo caracter _ (underscore) O primeiro caracter não pode ser um dígito As letras maiúsculas e minúsculas representam caracteres diferentes Não pode ter o nome de uma palavra reservado da linguagem Deve ser descritivo daquilo que armazena Caso tenha mais que uma palavra utilizar o caracter _ para unir as palavras ou capitular as iniciais Não é aconselhado A utilização de caracteres acentuados Começar por _ Ter apenas letras maiúsculas © M@nso 2004 Introdução à programação Palavras reservadas do C © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Atribuição de Valores – operador = variavel = expressão; Exemplos soma = 10 ; saldo = soma + 1; area = lado1 * lado2; NOTA O operado = é o operador de atribuição e significa que a variável passa a ter um novo valor (<- no portugol) == O operador (igual) é o operador de comparação e devolve verdadeiro ou falso ( = no portugol) © M@nso 2004 Introdução à programação Computadores e programação I Atribuição de valores Valores na Base: Decimal numeração normal 2 63 83 Octal Começam por 0 (zero) 0 00 02 077 0123 Hexadecimal Começam por 0x (zero xis) 0x0 0x2 0x3f 0x53 atribuição do valor doze a x X = 12; X = 014; X = 0xC; © M@nso 2004 Introdução à programação Computadores e programação I Inteiros - int Sinal signed – positivos e negativos unsigned – apenas números positivos Tamanho short – menor dimensão em bytes 2 bytes long – maior dimensão em bytes 1 bit para representar o sinal 4 bytes Exemplos unsigned short int x; signed short int y; unsigned long int total; long int votos; int nota; © M@nso 2004 NOTA por defeito os inteiros são: •signed •16 bits •short •32 bits •long Introdução à programação Alcance dos inteiros © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I exemplos Nota final da disciplina de IP Soma das notas das disciplinas de uma aluno unsigned long int numMinutos; unsigned long numMinutos; Diferença entre o número de segundos de duas pessoas unsigned short int somaNotas; unsigned short somaNotas; Número de segundos de vida de uma pessoa unsigned short int nota; unsigned short nota; signed long difSegundos; long difsegundos; Diferença entre o número de anos de duas pessoas signed short int difAnos; short difAnos; © M@nso 2004 Introdução à programação Computadores e programação I Números Reais Tipo float double Base e Mantissa Notação corrente 1.2E10 Modificadores .23 Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação 0.23 1. 1.0 Notação científica 1.23 10 NOTA notação mantissa 2.8 Representação base long © M@nso 2004 1.23e-15 Exemplo float raio = .50; long double taxa = 5E-2 ; Introdução à programação Erro nos Números Reais NOTA Os números armazenados em virgula flutuante podem comportar um erro de arredondamento resultante da sua representação © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Caracteres (char) Ocupam um byte Representados por um número Tabela ASCII Atribuição 256 caracteres disponíveis Utilização do caracter plica (‘) char sexo = ‘m’; char enter =‘\n’ Utilização directa do código ASCII char letra = 98; Modificadores signed unsigned © M@nso 2004 Caracteres especiais \a \n \r Sinal sonoro New line Carriage return \v \t Vertical tabulation Horizontal tabulation Caracter \ \\ \’ \” \b \0xff Caracter ‘ Caracter “ Backspace Caracter 0xff ASCII Introdução à programação Tabela ASCII Exemplo char sexo; Sexo = ‘M’; Sexo = 77; © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Definição de tipos - Enumerações Definição de nomes para valores -1 0 1 domingo -2 sabado -3 sexta Valor quinta Nome quarta Cores , Dias da semana , Meses, etc. terça segunda 2 3 4 5 6 7 8 enum semana{ segunda=2, terca=3, Exemplo enum semana quarta=4, quinta=5, sexta=6, sabado=7, domingo=8 }; teoricaIP, praticaIP; teoricaIP = segunda; praticaIP = teoricaIP +1 ; © M@nso 2004 9 10 Introdução à programação Computadores e programação I Definição de tipos - Enumerações enum novo_tipo {nome_1=valor_1, nome_2, . . .,nome_n}; novo_tipo nome_variavel = nome_x; enum Cores {verde= 0 , amarelo = 1, vermelho =2 }; enum Cores semaforo = verde; enum logica {falso, verdadeiro }; enum logica condicao=verdadeiro; NOTAS •Quando omitimos o valor a enumeração toma o valor da anterior mais uma unidade. • Por defeito começam em zero © M@nso 2004 Introdução à programação Computadores e programação I Valores lógicos (bool) Dois valores definidos Nome VERDADEIRO FALSO VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO VERDADEIRO false (valor zero) true (um ou qualquer outro valor) VERDADEIRO VERDADEIRO Valor -3 -2 -1 0 1 2 3 4 5 6 7 8 Exemplo bool aprovado, trabEstudante; aprovador = true; trabEstudante = false; © M@nso 2004 Introdução à programação Computadores e programação I Definição de tipos - Typedef Definição de nomes para tipos typedef tipo_de_dado novo_nome_do_tipo ; Exemplos typedef unsigned long int int32; definição de um novo tipo chamado int32 int32 somatorio; © M@nso 2004 definicao de uma variável do tipo int32 Introdução à programação Computadores e programação I Tipos de dados do c++ Builder tamanho (bits) Mínimo Máximo unsigned char 8 0 255 char 8 -128 127 short int 16 -32,768 32,767 unsigned int 32 0 4,294,967,295 int 32 -2,147483648 2,147,483,647 unsigned long 32 0 4,294,967,295 enum 32 -2,147483648 2,147,483,647 long 32 -2,147483648 2,147,483,647 float 32 double 64 long double 80 tipo © M@nso 2004 1.18 2.23 3.37 10^-38 < |X| < 3.40 10^-308 < |X| < 1.79 10^-4932 < |X| < 1.18 10^38 10^308 10^4932 Introdução à programação Computadores e programação I Exercícos Defina variáveis em C para manipular A média das notas de um ano lectivo O salário de um trabalhador O número de alunos de um país O saldo de uma conta bancária Número de dias entre duas datas O sexo de um aluno Factor rhesus do sangue (+ e -) A situação de uma aluno relativo à aprovação A situação de uma aluno relativo á matrícula. © M@nso 2004 Introdução à programação Computadores e programação I Entrada e saída de dados © M@nso 2003 Introdução à programação Computadores e programação I Entrada e saida de dados scanf Entrada de dados pelo teclado printf Saída de dado para a consola scanf(“string de formato”, &variavel , &variavel ,…); scanf(“%f", &altura); scanf(“%d", &idade); scanf(“%f %d", &altura, &idade); printf(“string de formato”, variavel , variavel ,…); printf(“ a altura é %f :", altura); printf(“ a idade é %d :", idade); printf(“\n altura: %f idade :%d \n", altura, idade); © M@nso 2004 Introdução à programação Computadores e programação I Formato de dados (I/O) c s d f e caracter u sem sinal cadeia de caracteres inteiro l h grande pequeno real no formato numérico real no formato cientifico o x octal Hexadecimal %c %s Caracter cadeias de caracteres char char[] %d %hd %ld %u %hd %ld %o %x numero decimal numero decimal pequeno (short) numero decimal grande (long) numero decimal sem sinal numero decimal sem sinal pequeno numero decimal grande sem sinal numero decimal em octal numero decimal em hexadecimal int short int long int unsigned int unsigned short int unsigned long int int int numero real no formato cientifico ( 1.2e45) numero real no formato cientifico grande (long) numero real no formato numérico numero real float double float double %e %le %f %lf © M@nso 2004 Introdução à programação Programa gentil Exemplo #include <stdio.h> int main(int argc, char* argv[]) { int idade; printf(“qual a sua idade:”); scanf(“ %d ” , &idade); printf(“parabens, voce tem %d anos“, idade); } © M@nso 2004 Computadores e programação I Introdução à programação Ficheiros gerados © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Algoritmos computacionais Acções de um algoritmo computacional Manipular dados Receber dados Guardar dados Imprimir dados Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções © M@nso 2004 Introdução à programação Operadores © M@nso 2003 Computadores e programação I Introdução à programação Computadores e programação I Inteiros Operadores unários - (sinal) Operadores binários + (Soma) - (Subtracção) / (Divisão inteira) % (Módulo) Exemplo 25 - 2 = 23 25 / 2 = 12 25 % 2 = 1 © M@nso 2004 -3 - 2 = -5 25 + 2 = 27 25 * 2 = 50 25 2 05 12 1 NOTA Qualquer operação entre inteiros devolve um inteiro Introdução à programação Computadores e programação I Operadores unários – Pós fixo Operadores unários ++ (incremento) -- (decremento) Nota y = x++ Nota y = x-- y=x x = x+1 y=x x = x-1 Nota X++ X = X+1 Nota X-X = X-1 x 3 expressão y = x++; x 4 © M@nso 2004 y y 3 Introdução à programação Computadores e programação I Operadores unários – Pré fixo Operadores unários ++ (incremento) -- (decremento) Nota y = ++x Nota y = --x x = x+1 y=x x = x-1 y=x Nota ++X X = X+1 Nota --X X = X-1 x 3 expressão y = --x; x 2 © M@nso 2004 y y 2 Introdução à programação Computadores e programação I Operadores bit a bit Manipulam directamente a representação binária dos números E 0 1 OU 0 1 e (and) & 0 0 0 0 0 1 ou (or) ou exclusivo (Xor) 0 ^ << 0 1 >> 0 © M@nso 2004 0 0 0 1 1 1 1 0 1 Soma Lógica xor Deslocamento à direita 0 Multiplicação Lógica Deslocamento à esquerda 1 | 0 0 1 diferença Lógica 1 1 0 1 Introdução à programação Computadores e programação I Operadores bit a bit - OR x 91 y OU 0 0 0 1 1 z 128 1 1 1 Soma Lógica expressão z=x|y; 0 1 0 1 1 0 1 1 91 1 0 0 0 0 0 0 0 128 1 1 0 1 1 0 1 1 219 | x 91 © M@nso 2004 y z 128 219 Introdução à programação Computadores e programação I Operadores bit a bit - AND x 90 y 20 E 0 1 z 0 0 0 1 0 1 Multiplicação Lógica expressão z=x&y; x 90 © M@nso 2004 y 20 z 16 128 64 32 16 8 4 2 1 0 1 0 1 1 0 1 0 90 0 0 0 1 0 1 0 0 20 0 0 0 1 0 0 0 0 16 & Introdução à programação Computadores e programação I Operadores bit a bit - XOR 0 0 0 1 1 1 1 0 xor x 90 y 20 z diferença Lógica expressão z=x^y; x 90 © M@nso 2004 y 20 z 78 0 1 0 1 1 0 1 0 90 0 0 0 1 0 1 0 0 20 0 1 0 0 1 1 1 0 78 ^ Introdução à programação Computadores e programação I Operadores bit a bit - Deslocamento x 20 y 0 0 0 1 0 1 0 0 20 0 1 0 1 0 0 0 0 80 << 2 expressão y = x << 2; x 20 © M@nso 2004 y 80 •Algoritmo •deslocam-se os bites para a esquerda •os últimos bites perdem-se •introduzem-se zeros no inicio Introdução à programação Computadores e programação I Operadores bit a bit - Deslocamento x 20 y 0 0 0 1 0 1 0 0 20 0 0 0 0 0 1 0 1 5 >>2 expressão y = x >> 2; x 20 © M@nso 2004 y 5 •Algoritmo •deslocam-se os bites para a direita •os primeiros bites perdem-se •introduzem-se zeros no fim Introdução à programação Computadores e programação I Operadores sobre reais Aritméticos multiplicação divisão soma subtracção Nome da variável C 0100 0001 0100 0001 mantissa © M@nso 2004 100 0001 Real 100 0001 expoente -3,14156 Introdução à programação Computadores e programação I Operadores compostos += , -=,%=, *=, /=, >>=, <<=, &=, |=, ^= variável Operador= expressão Variavel = variavel operador expressão exemplos X+= 3; X = X+3; exemplos X|= y; X = X | y; © M@nso 2004 exemplos exemplos x/=y; x = x /y; X*= 3; X = X*3; Introdução à programação Computadores e programação I Operadores sobre lógicos RELACIONAIS Maior >= Menor ou igual == Maior ou igual <= Diferente != © M@nso 2004 Conjunção < Igual LÒGICOS > Menor Disjunção && || Negação ! Introdução à programação Computadores e programação I Associatividade x 2 y 1 z 4 Associatividade esquerda=> direita x+y+z 3 + z 7 z/x*y 2 * z 2 © M@nso 2004 matriculado r 1 false teste false Associatividade direita => esquerda r =x + y + z r=7 teste = !matriculado 7 teste = true x = -z x=-4 Introdução à programação Computadores e programação I Prioridade dos operadores Operadores () ! - ++ -*/% +<< >> < <= > >= == != & ^ | && || ?: = += -= *= /= %= &= ^= |= <<= >>= © M@nso 2004 Associatividade esquerda para a direita direita para a esquerda esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita esquerda para a direita direita para a esquerda direita para a esquerda Introdução à programação Computadores e programação I Algoritmos computacionais Acções de um algoritmo computacional Manipular dados Receber dados Guardar dados Imprimir dados Executar instruções Fazer operações aritméticas Fazer operações lógicas Escolha entre várias instruções. Repetir um conjunto de instruções © M@nso 2004 Introdução à programação Computadores e programação I Exercícios Construa um programa que calcule a área de um rectangulo Programa Área do rectângulo #include <stdio.h> int main(int argc, char* argv[]) { double Lado1, lado2, area; scanf(“%lf”, &lado1); scanf(“%lf”, &lado2); area = lado1 * lado2; printf(“ area = %lf ”, area); Inicio Ler lado1 Ler lado2 Area := lado1*lado2 Escrever Area } fim © M@nso 2004 Introdução à programação Computadores e programação I Exercícios Construa um programa que leia a nota teórica e a nota prática e imprima a nota final (não arredondada) da disciplina de IP Nota de IP #include <stdio.h> int main(int argc, char* argv[]) { float nTeorica, nPratica, nFinal; printf(“ introduza a nota teórica :“); scanf(“%f”, &nTeorica); printf(“ introduza a nota prática:“); scanf(“%f”, &nPratica); nFinal = nTeorica * 0.6 + nPratica * 0.4; printf(“A nota final e: %f “,nFinal); } © M@nso 2004 Inicio Ler nTeorica Ler nPratica nFinal = nTeorica*0.6 + nPratica * 0.4 Escrever nFinal fim Introdução à programação Selecção de intruções © M@nso 2003 Computadores e programação I Introdução à programação Computadores e programação I Selecção Simples Linguagem estruturada C++ ... Se <condição> então Instruções Fluxograma fim_se Exemplo Condição V Se x > 0 então escrever “numero:” ler numero Bloco de Instruções If (condição) { intrução; intrução; intrução; ... } fim_se Um “Bloco de instruções” é limitado por chavetas { } © M@nso 2004 Introdução à programação Computadores e programação I Selecção Simples (exemplo) Inicio Exemplo A empresa X faz um desconto de 15% em todas as facturas cujo total ultrapasse 1000 euros. Construa um programa que receba o total da factura e imprima o valor a pagar Ler totalFactura totalFactura >10000 totalFactura = totalFactura *0.85 totalFactura Fim © M@nso 2004 v Introdução à programação Computadores e programação I Selecção Simples (exemplo) Calculo do total da factura #include <stdio.h> int main(int argc, char* argv[]) { float totalFactura; scanf(“%f”, &totalFactura); if( totalFactura > 1000.0) { totalFactura*= 0.85; } } © M@nso 2004 printf(“ %f “, totalFactura); NOTA Se o bloco tiver apenas uma instrução podem omitirse as chavetas Introdução à programação Visibilidade das variáveis int main(int argc, char* argv[]) { float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000){ double desconto = totalFactura* 0.85; totalFactura -= desconto; } } printf(“%f”, totalFactura); return 0; Visibilidade das variáveis: •Desde que são declaradas •Até final do bloco © M@nso 2004 Computadores e programação I Introdução à programação Computadores e programação I Selecção em Alternativa Linguagem estruturada Fluxograma ... Se <condição> entao Instruções V F Condição Senao Instruções Fim_se Exemplo Se numero>0 então escreve “positivo” Senão escreve “negativo” Fim_se © M@nso 2004 Instruções Instruções C++ if (condição) { intrução1; ... } else { intrução2; ... } Introdução à programação Computadores e programação I Selecção em Alternativa (exemplo) Exercício Construa um programa que imprima “Par” ou “Impar” consoante o número introduzido pelo utilizador o é ou não. & 128 64 32 16 8 4 2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 X © M@nso 2004 0 1 2 3 4 5 6 25 2 05 12 1 Introdução à programação Computadores e programação I Selecção Simples (exemplo) Programa par ou impar Inicio main() { int numero; printf( “ numero :”); scanf(“%d”,&numero); if( numero % 2 == 0) printf(“ O numero é par”); else printf(“ o número é impar”); Ler n V F n%2=0 Impar } 25 2 05 12 1 © M@nso 2004 Par Fim Introdução à programação Computadores e programação I Selecção encadeada Exercício Construa um programa que imprima o maior de três número introduzido pelo utilizador s Maior=v1 n V1 > v2 e V1 > v3 V2>v3 Maior=v2 © M@nso 2004 n s Maior=v3 Introdução à programação Computadores e programação I Selecção encadeada (exemplo) Programa maior de três int main(int argc, char* argv[]) { int v1, v2; v3; int maior; scanf(“ %d %d %d “, &v1, &v2, &v3); if( v1 > v2 && v1 > v3) maior= v1; else { if( v2 > v3) maior= v2; else maior=v3; } printf(“ O maior é %d :”, maior); return 0; } © M@nso 2004 Introdução à programação Computadores e programação I Exercício Contrua um programa que solicite ao utilizador a letra correspondente ao estado civil (S C D V ) e imprima por extenso o mesmo ou erro no caso de não ser um caractér válido © M@nso 2004 Inicio Inicio ecivil ecivil não ecivil=s ecivil=s não ecivil=c ecivil=c não nao sim ecivil=d ecivil=d ecivil=v ecivil=v sim sim sim Estado = Solteiro Estado = Solteiro Estado = casado Estado = casado Estado =divorciado Estado =divorciado Estado = viuvo Estado = viuvo Estado = ERRO Estado = ERRO estado Fim Fim Introdução à programação Computadores e programação I Exercício Estado civil main() { char ECivil; scanf(“%c”,&ECivil); if( ECivil ==‘S’) printf( “ Solteiro”); else if (ECivil ==‘C’ ) printf(“ Casado”); else if ( ECivil == ‘D) printf(“Divorciado”); else if(ECivil == ‘V’) printf(“Viuvo”); else printf(“ERRO”); } © M@nso 2004 Inicio Inicio ecivil ecivil não ecivil=s ecivil=s não ecivil=c ecivil=c não nao sim ecivil=d ecivil=d ecivil=v ecivil=v sim sim sim Estado = Solteiro Estado = Solteiro Estado = casado Estado = casado Estado =divorciado Estado =divorciado Estado = viuvo Estado = viuvo Estado = ERRO Estado = ERRO estado Fim Fim Introdução à programação Computadores e programação I Selecção Múltipla switch switch ( expressão) { case constante1 : intruções; break; case constante2 : intruções; break; ... case constanten : intruções; break; default: intruções; } © M@nso 2004 Inicio Inicio ecivil ecivil ecivil ecivil ss Estado = solteiro Estado = solteiro estado Fim Fim cc Estado = casado Estado = casado … … Estado = … Estado = … defeito defeito Estado = ERRO Estado = ERRO Introdução à programação Exercício Estado civil #include <iostream.h> main(){ char ECivil; scanf(“%c”,&ECivil); } © M@nso 2004 switch ( ECivil) { case ‘S’ : printf( “solteiro”); break; case ‘C’ : printf(“casado”); break; case ‘D’ : printf(“Divorciado”); break; case ‘V’ : printf(“Viuvo”); break; default : printf(“ERRO”); } Computadores e programação I Introdução à programação Computadores e programação I Exercício Estado civil switch ( ECivil) { ... case ‘d’ : case ‘D’ : printf( “Divorciado”); } ... © M@nso 2004 break; NOTA A escolha termina: •quando chegar ao fim •quando encontrar a instrução break Introdução à programação Computadores e programação I Exercícios Construa um programa que indique se dois números introduzidos pelo utilizador são múltiplos um do outro. Construa um programa que calcule as raízes de uma equação de 2º grau. Altere o programa anterior para calcular as raízes reais e imaginárias. © M@nso 2004 Introdução à programação Erros © M@nso 2003 Computadores e programação I Introdução à programação Computadores e programação I Erros programas Erros de especificação Erros Lógicos O algoritmo está mal programado Erros de ligação O algoritmo está errado Erros de sintaxe Não compreendemos o problema Bibliotecas referenciadas que não existem Erros de execução Dados mal introduzidos Os erros são a base da experiência. © M@nso 2004 Introdução à programação Computadores e programação I Erros de especificação Construir um programa que as calcule as interacções do spin de um electrão num campo gravitacional desconhecido dado o número de mesões e fermiões pertencentes ao meio. © M@nso 2004 Introdução à programação Computadores e programação I Erros Lógicos Inicio Solteiro casado ou erro ecivil ecivil=s sim não Estado = Solteiro não sim ecivil=c Estado = casado Estado = casado estado © M@nso 2004 Fim Introdução à programação Computadores e programação I Erros de sintaxe mais comuns Escrita ambígua if(m == 0) if(n == 0) printf("m e n são zero.“); else printf("m não é zero.“); © M@nso 2004 Introdução à programação Computadores e programação I Erros de sintaxe mais comuns Esquecer as chavetas int main(int argc, char* argv[]) { float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000) double desconto = totalFactura* 0.85; totalFactura -= desconto; } printf(“%f”, totalFactura); return 0; © M@nso 2004 Introdução à programação Computadores e programação I Erros de sintaxe mais comuns Colocar um ; a seguir ao if ou else int main(int argc, char* argv[]) { float totalFactura; sacanf(“ %f “, &totalFactura); if( totalFactura > 1000) { ; double desconto = totalFactura* 0.85; totalFactura -= desconto; } } printf(“%f”, totalFactura); return 0; © M@nso 2004 Introdução à programação Computadores e programação I Erros de sintaxe mais comuns Esquecer o break; no ciclo switch Estado civil switch ( ECivil) { case ‘S’ : printf( “solteiro”); case ‘C’ : printf(“casado”); case ‘D’ : printf(“Divorciado”); case ‘V’ : printf(“Viuvo”); default : printf(“ERRO”); } © M@nso 2004 Introdução à programação Conclusão © M@nso 2003 Computadores e programação I Introdução à programação Computadores e programação I Construção de programas Especificação do problema Desenvolvimento do algoritmo programar Tradução do programa para linguagem máquina Especificar as entradas, saídas e uma forma de transformar as entradas em saídas Tradução do algoritmo para uma linguagem de programação Compreender o problema Compilar e linkar Executar o programa testar © M@nso 2004