Introdução à Programação em C Input / Output

Documentos relacionados
Introdução à Programação em C (II)

Funções de Entrada e Saída

3.1 - Funções para manipular dados de entrada e saída padrão

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Introdução à Programação em C

Introdução à Programação em C (I)

Introdução à Programação em C (I)

Linguagens de Programação

Linguagem C. André Tavares da Silva.

Introdução à Programação

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Introdução à Linguagem C

Programação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação

Sistemas Operacionais e Introdução à Programação. Programação com linguagem C

11 - Estrutura de um programa em C

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Programação Estruturada

Aula 03: Introdução a C

Ponteiros e Tabelas. K&R: Capítulo 5

Introdução à Programação. Strings

Algoritmos e Programação

Capítulo 2 Operadores. A função scanf()

Linguagem C (repetição)

Algoritmos RESUMO - LINGUAGEM C

Disciplina de Algoritmos e Programação

Estrutura do programa

Programação: Vetores

Princípios de Desenvolvimento de Algoritmos MAC122

Escreva a função e_caracter que verifica se um determinado caracter é um numero ou não. Escreva um Programa de teste da função.

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

3. Linguagem de Programação C

Sumário. Ficheiros. Ficheiros

Programação Estruturada

Linguagem de Programação C

Linguagem C: Introdução

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

LINGUAGEM C: VARIÁVEIS E EXPRESSÕES

Programação. MEAer e LEE. Manipulação de ficheiros de texto. Bertinho Andrade da Costa. Instituto Superior Técnico. 2010/2011 1º Semestre

ESTRUTURAS COMPOSTAS

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

UNIVERSIDADE DA BEIRA INTERIOR

Linguagens de Programação I

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

LINGUAGEM DE PROGRAMAÇÃO C AULA 2. Professor: Rodrigo Rocha

Char e Strings de Caracteres

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Conhecendo a Linguagem de Programação C

Introdução à Computação MAC0110

Introdução a Computação

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

ESTRUTURAS COMPOSTAS VETOR

ponteiros INF Programação I Prof. Roberto Azevedo

Funções getchar() e putchar()

Legibilidade do código fonte

Introdução à Linguagem de Programação C: Variáveis, Constantes, Expressões, Atribuição, Tipos de dados, Entrada e Saída de Dados

ESTRUTURAS DE CONTROLE

PROGRAMAÇÃO INSTRUÇÕES DA LINGUAGEM C

MC102 Algoritmos e Programação de Computadores

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

Faculdade de Computação

Declarações. C diferencia letras maiúsculas de minúsculas! int n, N; n é diferente de N!

Introdução à Programação. Expressões Booleanas e Comandos Condicionais

Aula 03 -Introdução àlinguagc Programação: Estrutura-Repetição. OPL e IC1 Prof: Anilton Joaquim da Silva

Introdução a Linguagem C. Prof. Me. Hélio Esperidião

Linguagem C. Prof.ª Márcia Jani Cícero

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Transcrição:

Introdução à Programação em C Input / Output

Resumo Aula Anterior Programa começa com função main() 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 2

Resumo Input/Output Formatado Leitura de valores numéricos a partir do standard input Escrita formatada no standard output Streams de Texto Leitura e escrita de caracteres Caracteres como números inteiros Exemplos Leitura de uma lista de valores Contagem do tamanho de uma lista de valores Contagem do número de aprovações e reprovações de uma lista de notas Leitura e escrita de caracteres Contagem de caracteres, linhas e palavras 3

Entrada/Saída (I/O) Formatada Problema 1 Ler uma lista de inteiros positivos introduzidos pelo utilizador (por exemplo, lista de notas de uma disciplina) e mostrar os valores lidos no ecrãn Qualquer valor negativo determina o fim da lista de inteiros a ler Funções de leitura e escrita formatada scanf() leitura formatada do input printf() escrita formatada no output 4

Cópia de Inteiros Positivos Algoritmo Lê um inteiro Escreve inteiro Lê próximo inteiro 5

Cópia de Inteiros Positivos Algoritmo Lê um inteiro Escreve inteiro Lê próximo inteiro 6

Cópia de Inteiros Positivos Algoritmo Lê um inteiro Enquanto conseguir ler um valor válido Escreve inteiro Lê próximo inteiro 7

Cópia de Inteiros Positivos Algoritmo Lê um inteiro Enquanto conseguir ler um valor válido while (v >= 0) { Escreve inteiro printf( %d\n, v); Lê próximo inteiro 8

Cópia de Inteiros Positivos #include <stdio.h> /* Copia inteiros do input para output */ int main () { int v; while (v >= 0){ printf( %d\n, v); return 0; Operadores de comparação Igualdade: == 9 Desigualdade: > < >= <=!=

Cópia de Inteiros Positivos while (v >= 0){ printf( %d\n, v); %d para ler um inteiro decimal (%x hexadecimal, %f float) Para ler dois inteiros decimais seguidos scanf( %d%d, &v, &w); Necessário colocar & antes do nome da variável 10

Contagem do Tamanho de Lista Problema 2 Ler uma lista de inteiros positivos introduzidos pelo utilizador (por exemplo, lista de notas de uma disciplina) Qualquer valor negativo determina o fim da lista de inteiros a ler No fim mostrar o número de elementos que compõem a lista 11

Contagem do Tamanho de Lista Algoritmo Inicializa contador a 0 Lê um inteiro Enquanto conseguir ler um valor válido Incrementa contador Lê próximo inteiro Escreve valor do contador 12

Contagem do Tamanho de Lista Algoritmo Inicializa contador a 0 contador = 0; Lê um inteiro Enquanto conseguir ler um valor válido while (v >= 0){ Incrementa contador ++contador; Lê próximo inteiro Escreve valor do contador printf("%ld\n", contador); 13

Contagem do Tamanho de Lista #include <stdio.h> /* Conta número de elementos de lista de números positivos */ int main () { int v; long contador = 0; while (v >= 0) { ++contador; printf("%ld\n", contador); return 0; 14

Contagem do Tamanho de Lista #include <stdio.h> /* Conta número de elementos de lista de números positivos */ int main () { int v; long contador = 0; while (v >= 0) { ++contador; printf("%ld\n", contador); return 0; É possível inicializar variável na declaração 15

Contagem do Tamanho de Lista #include <stdio.h> int main () { int v; long contador = 0; 16 while (v >= 0) { ++contador; printf("%ld\n", contador); return 0; Variável do tipo long int Pelo menos 32 bits para guardar o inteiro %ld para escrever com printf

Contagem do Tamanho de Lista 17 #include <stdio.h> int main () { int v; long contador = 0; while (v >= 0) { ++contador; printf("%ld\n", contador); return 0; Incremento da variável contador Neste caso é igual a contador = contador+1 contador++, --contador, contador--

Contagem do Tamanho de Lista 18 int a = 0, b = 0, c = 0; b = a++; /* Passamos a ter b=0 e a=1 */ c = ++a; /* Passamos a ter c=2 e a=2 */ int a = 0; while (a++ <= 3) {... /* O ciclo é executado 4 vezes */ int a = 0; while (++a <= 3) {... /* O ciclo é executado 3 vezes */ A utilização dos operadores ++ e -- de forma prefixa ou sufixa pode influenciar a execução do programa.

Contagem do Tamanho de Lista contador = 0; while (v >= 0) { ++contador; for (contador = 0; v >= 0; ++contador) Estrutura de controlo for para ciclos contados Inicialização de variáveis: contador = 0 Teste: v >= 0 Incremento: ++contador 19

Contagem do Tamanho de Lista #include <stdio.h> /* Conta número de elementos de lista de números positivos */ int main () { int v = 0; long contador; for (contador = 0; v >= 0; ++contador) printf("%ld\n", contador); return 0; 20

Contagem do Tamanho de Lista 21 #include <stdio.h> /* Conta número de elementos de lista de números positivos */ int main () { int v; double contador; for (contador = 0; v >= 0; ++contador) printf("%.0f\n", contador); return 0; Alternativa ao anterior Utiliza double em vez de long Usar %f para escrever dados dos tipos float e double

Detectar Leitura Inválida com scanf A função scanf devolve um valor inteiro que é o número de campos correctamente lidos 2 Qual o valor devolvido no caso abaixo? int main() { int a, b, retval; retval = scanf( %d %d, &a, &b) return 0; Devolve EOF, no caso do fim de ficheiro ser atingido durante a leitura 22

Contagem de Aprovações e Reprovações Problema 3 Considere-se uma lista de inteiros que denota as notas dos alunos numa disciplina Ler uma lista de inteiros positivos introduzidos pelo utilizador Qualquer valor negativo determina o fim do conjunto de inteiros a ler No fim mostrar a seguinte informação: Número de notas à disciplina Número de aprovações Número de reprovações 23

Contagem de Aprovações e Reprovações Algoritmo Inicializa contador de notas e aprovações a 0 Lê nota Enquanto conseguir ler uma nota válida Incrementa o contador de notas Se a nota lida é positiva Incrementa contador de aprovações Lê nota seguinte Escreve valor dos contadores 24

Contagem de Aprovações e Reprovações Algoritmo Inicializa contador de notas e aprovações a 0 notas = aprovacoes = 0; Lê nota Enquanto conseguir ler uma nota válida while (v >= 0) { Incrementa o contador de notas notas++; Se a nota lida é positiva if (v >= 10) Incrementa contador de aprovações aprovacoes++; Lê nota seguinte Escreve valor dos contadores printf( ); 25

Contagem de Aprovações e Reprovações #include <stdio.h> /* Contagem de Aprovações e Reprovações de lista de notas */ int main () { int v, notas, aprovacoes; notas = aprovacoes = 0; while (v >= 0) { notas++; if (v >= 10) aprovacoes++; printf( Total: %d, Aprovacoes: %d, Reprovacoes: %d\n", notas, aprovacoes, notas-aprovacoes); return 0; 26

Contagem de Aprovações e Reprovações int main () { int v, notas, aprovacoes; notas = aprovacoes = 0; while (v >= 0) {... printf( Total: %d, Aprovacoes: %d, Reprovacoes: %d\n", notas, aprovacoes, notas-aprovacoes); return 0; Atribuição múltipla Equivale a (notas = (aprovacoes = 0)); 27

Exercício 1: Maior Nota na Lista Modifique o programa anterior por forma a calcular também qual a maior nota presente na lista 28

Exercício 2: Média das Positivas Modifique o programa anterior por forma a calcular a média das notas positivas 29

Leitura e Escrita de Caracteres Streams de Texto: sequência de caracteres Entrada Saída Podem corresponder a leitura/escrita de ficheiros ou leitura/escrita do terminal (standard input/output) Cada linha contém 0 ou mais caracteres e acaba com o caracter \n Funções de manipulação de streams de texto getchar() lê o proximo caracter da stream de texto putchar() escreve o caracter cujo código ASCII é o número inteiro passado como argumento 30

Caracteres e Inteiros em C #include <stdio.h> int main() { char a = 'T'; printf( Ao caracter %c corresponde o ASCII %d\n", a, a); return 0; Resultado Ao caracter T corresponde o ASCII 84 As variáveis do tipo char são pequenos inteiros (1byte) Podemos efectuar op. numéricas como tal como com int 31

Tabela ASCII Imagem retirada de: http://www.cdrummond.qc.ca/cegep/ informat/professeurs/alain/files/ascii.htm algarismos LETRAS letras 32

Leitura e Escrita de Caracteres Algoritmo Lê um caracter Escreve caracter Lê próximo caracter 33

Leitura e Escrita de Caracteres Algoritmo Lê um caracter Escreve caracter Lê próximo caracter 34

Leitura e Escrita de Caracteres Algoritmo Lê um caracter Se o caracter não for o de fim de ficheiro Escreve caracter Lê próximo caracter 35

Leitura e Escrita de Caracteres Algoritmo Lê um caracter c = getchar(); Se o caracter não for o de fim de ficheiro while (c!= EOF) { Escreve caracter putchar(c); Lê próximo caracter c = getchar(); 36

Leitura e Escrita de Caracteres #include <stdio.h> /* Copia input para output */ int main () { int c; 37 c = getchar(); while (c!= EOF){ putchar(c); c = getchar(); return 0;!= significa diferente Porquê int c? Constante EOF

Leitura e Escrita de Caracteres c = getchar(); while (c!= EOF){ putchar(c); c = getchar(); while ((c = getchar())!= EOF) putchar(c); Precedência de!= maior do que = while (c = getchar()!= EOF) Necessários parênteses em: while ((c = getchar())!= EOF) 38

Contagem de Caracteres Algoritmo Inicializa contador a 0 Enquanto o caracter lido não fôr o de fim de ficheiro Incrementa contador Escreve valor do contador 39

Contagem de Caracteres Algoritmo Inicializa contador a 0 contador = 0; Enquanto o caracter lido não fôr o de fim de ficheiro while (getchar()!= EOF) Incrementa contador ++contador; Escreve valor do contador printf("%d\n", contador); 40

Contagem de Caracteres #include <stdio.h> /* Conta caracteres do input */ int main () { int contador; contador = 0; while (getchar()!= EOF) ++contador; printf("%d\n", contador); return 0; 41

Contagem de Caracteres contador = 0; while (getchar()!= EOF) ++contador; for (contador = 0; getchar()!= EOF; ++contador) ; Inicialização de variáveis: contador = 0 Teste: getchar()!= EOF Incremento: ++contador 42

Contagem de Caracteres #include <stdio.h> /* Conta caracteres do input */ int main () { int contador; for (contador = 0; getchar()!= EOF; ++contador) ; printf("%d\n", contador); return 0; 43

Contagem de Linhas Algoritmo Inicializa contador a 0 Enquanto o caracter lido não fôr o de fim de ficheiro Se o caracter lido fôr o de fim de linha então Incrementa contador Escreve valor do contador 44

Contagem de Linhas Algoritmo Inicializa contador a 0 contador = 0; Enquanto o caracter lido não fôr o de fim de ficheiro while ((c = getchar())!= EOF) Se o caracter lido fôr o de fim de linha então if (c == \n ) Incrementa contador ++contador; Escreve valor do contador printf("%d\n",contador); 45

Contagem de Linhas #include <stdio.h> /* Conta linhas do input */ int main () { int c, contador; contador = 0; while ((c = getchar())!= EOF) if (c == \n ) ++contador; printf("%d\n",contador); return 0; 46

Contagem de Linhas #include <stdio.h> /* Conta linhas do input */ int main () { int c, contador; contador = 0; while ((c = getchar())!= EOF) if (c == \n ) ++contador; printf("%d\n",contador); return 0; Teste de igualdade == Código ASCII do caracter de mudança de linha \n 47

Contagem de Palavras (Para Casa) Algoritmo Inicializa estado a FORA Inicializa contador de caracteres e palavras a 0 Enquanto o caracter lido não for o de fim de ficheiro Incrementa contador de caracteres Se o caracter lido for o de fim de linha, espaço ou tabulação então Estado toma valor FORA Caso contrário e se o estado for FORA então Estado toma valor DENTRO Incrementa contador de palavras Escreve valor dos contadores 48

Cartão perfurado com uma linha de programa 49 2012/2013

Contagem de Palavras Algoritmo Inicializa estado a FORA estado = FORA; Inicializa contador de letras e palavras a 0 np = nc = 0; Enquanto o caracter lido não for o de fim de ficheiro while ((c = getchar())!= EOF) { Incrementa contador de letras ++nc; Se o caracter lido for o de fim de linha, espaço ou tabulação então if (c == c == \n c == \t ) Estado toma valor FORA estado = FORA; Caso contrário e se o estado for FORA então else if (estado == FORA) { Estado toma valor DENTRO estado = DENTRO; Incrementa contador de palavras ++np; Escreve valor dos contadores printf("%d %d\n", np, nc); 50

Contagem de Palavras #include <stdio.h> #define FORA 0 #define DENTRO 1 int main () { int c, np = 0, nc = 0, estado = FORA; while ((c = getchar())!= EOF) { ++nc; if (c == c == \n c == \t ) estado = FORA; else if (estado == FORA) { estado = DENTRO; ++np; printf("%d %d\n", np, nc); return 0; 51

Contagem de Palavras if (c == c == \n c == \t ) estado = FORA; else if (estado == FORA) { estado = DENTRO; ++np; Operador lógico disjunção Operador lógico conjunção && (maior precedência que ) Argumentos avaliados da esquerda para direita Interrompe avaliação quando valor do argumento for suficiente para definir valor da expressão. 52

Exercício 1: Contagem de Algarismos Construa um programa que lê caracteres do input e conta o número de algarismos. 53

Exercício 2: Contagem de Letras Construa um programa que lê caracteres do input e conta o número de letras minúsculas e maiúsculas no texto. 54