Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída.

Slides:



Advertisements
Apresentações semelhantes
TRATAMENTO DE ARQUIVOS EM C
Advertisements

Python: Entrada e Saída
Prof.: Sergio Pacheco Linguagem PHP Prof.: Sergio Pacheco 1.
Um programa em C Bibliotecas Variáveis globais
Capítulo II – Algoritmos e Programas
Prof. Luis Otavio Alvares
LINGUAGEM C.
Arquivos Prof: Erivelto Tschoeke, Msc. –
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Linguagem de Programação 1
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
LINGUAGEM ESTRUTURADA TURBO C
Algoritmos e Estruturas de Dados II
Linguagem C Strings.
Escola Secundária c/ 3º CEB da Batalha
Tratamento de Ficheiros
Revisão da Linguagem C.
Aula prática 6 Vetores e Matrizes
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
PROGRAMAÇÃO ESTRUTURADA II
Ordenação e Pesquisa de Dados Marco Antonio Montebello Júnior
Manipulação de Arquivos em C
Arquivos Continuação.
DAVID ANDERSON CARDOSO DANTAS
Aula Prática 12 Operações com Arquivos Monitoria
Prof. Ricardo Santos PONTEIROS
Computação Eletrônica
Linguagem C : Ponteiros
C APÍTULO II Armazenando e recuperando dados. A RMAZENANDO E RECUPERANDO DADOS Agenda Salvar dados Abrir um arquivo Criar e gravar Fechar Ler Bloquear.
Aula 13 - Armazenamento de Dados em Arquivos
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática Disciplina: Estrutura de Dados Professor: Cheli dos S. Mendes da Costa Arquivo.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014
Linguagem de programação I A Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
ARQUIVOS.
Educação Profissional Técnica de Nível Médio Curso Técnico de Informática
PROGRAMAÇÃO ou LINGUAGEM C?
Introdução à Linguagem C
Aula Prática 11 Operações com Arquivos Monitoria
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo V Comandos de Entrada e Saída.
Algoritmos e Estruturas de Dados
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VI Desenhos e Animação.
Operações com Arquivos Monitoria A estrutura FILE  É como um tipo de dado, mas não é um tipo propriamente dito  Definido no arquivo cabeçalho.
CES-41 COMPILADORES Aulas Práticas Capítulo II A Ferramenta Yacc.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo I Comandos Simples e Repetições.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013 Capítulo I Comandos Simples e Repetições.
Aula Prática 11 Operações com Arquivos Monitoria
Revisão Luis Antonio Tavares
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo III Comandos de Controle.
Manipulando arquivos texto com C
Programação de Computadores I – Arquivos
Linguagem C - Funções Automação Industrial Informática Básica
Iº Workshop Linux da Unijorge
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Salvando em Arquivos. Arquivos Um arquivo pode estar associado a qualquer dispositivo de entrada e saída, como por exemplo: teclado, video, impressora,
Algoritmos e Programação MC102 Prof. Paulo Miranda IC-UNICAMP Aula 15 Ponteiros.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo X Encadeamento de Estruturas por Ponteiros.
Programação Computacional Aula 8: Entrada e Saída pelo Console Prof a. Madeleine Medrano
1 Programação em C Aula Considere que um banco armazena em arquivo as seguintes informações de seus clientes: número da conta (int), nome do cliente.
Programação Computacional Aula 9: Meu primeiro programa em C
Profa. Maria Augusta Constante Puget
Felipe Nunes Flores – Programa de Educação Tutorial.
Linguagem de Programação
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Programação II Arquivos Autoria: Ernani Santos Modificação: Clebson Oliveira Adaptação: Claudia Boeres.
Programação de Computadores I – Arquivos Profa. Mercedes Gonzales Márquez.
Fundamentos de Programação 1 Slides 19 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Arquivos Binários”.
Arquivos textos (text)
Estrutura de Dados STRUCTS Dilvan Moreira. Objetivos  Entender o que são e como usar:  Estrutura de Dados para a Linguagem C  Structs (Registros)
Transcrição da apresentação:

Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída por arquivos em disco 5.5 – Controle do vídeo-texto 5.6 – Vídeo-gráfico

5.4 – Entrada e Saída por Arquivos em Disco – Arquivos-textos e arquivos binários Arquivos: regiões contíguas na memória secundária, dos mais diversos tamanhos, destinadas cada uma a guardar informações correlatas, usadas para um determinado fim Arquivos: regiões contíguas na memória secundária, dos mais diversos tamanhos, destinadas cada uma a guardar informações correlatas, usadas para um determinado fim Existem arquivos de programas, arquivos de dados, arquivos de imagens, arquivos com som digitalizado, etc. Existem arquivos de programas, arquivos de dados, arquivos de imagens, arquivos com som digitalizado, etc.

A Linguagem C trabalha com dois tipos de arquivos: Arquivos-textos: Arquivos-textos:  Seu conteúdo pode ser encarado como uma sequência linear de caracteres  Arquivos de programas são arquivos-textos  Alguns arquivos de dados também são Arquivos binários: Arquivos binários:  Podem conter números inteiros e reais em binário, textos, imagens, etc.

Arquivos binários: Arquivos binários:  Tipicamente são sequências lineares de estruturas de mesmo tipo  Estruturas serão vistas em capítulo específico  Arquivos binários não serão estudados em CES-10 Arquivos-textos: Arquivos-textos:  São os arquivos abordados neste tópico

Nos arquivos-textos, existe uma divisão em linhas proporcionada pelos caracteres ‘\n’ (new line) Nos arquivos-textos, existe uma divisão em linhas proporcionada pelos caracteres ‘\n’ (new line) Cada um desses caracteres é uma marca de final de linha Cada um desses caracteres é uma marca de final de linha As linhas não têm necessariamente o mesmo número de caracteres As linhas não têm necessariamente o mesmo número de caracteres Linhas vazias são caracterizadas por conterem apenas o ‘\n’ e nada mais Linhas vazias são caracterizadas por conterem apenas o ‘\n’ e nada mais

5.4.2 – Abertura e fechamento de arquivos-textos Dados de entrada para programas podem ser retirados de arquivos, em vez de serem digitados por meio do teclado Dados de entrada para programas podem ser retirados de arquivos, em vez de serem digitados por meio do teclado Resultados de um programa podem ser gravados num arquivo, em vez de aparecerem no vídeo Resultados de um programa podem ser gravados num arquivo, em vez de aparecerem no vídeo Todo arquivo da memória secundária precisa ser associado a uma variável do tipo FILE de um programa, para ser acessado por esse programa Todo arquivo da memória secundária precisa ser associado a uma variável do tipo FILE de um programa, para ser acessado por esse programa

Abertura de um arquivo: ato de associar um arquivo do disco a uma variável do tipo FILE Abertura de um arquivo: ato de associar um arquivo do disco a uma variável do tipo FILE Em C, essa abertura é feita pela função fopen, pertencente ao arquivo stdio.h Em C, essa abertura é feita pela função fopen, pertencente ao arquivo stdio.h Exemplo: seja o seguinte trecho de programa: Exemplo: seja o seguinte trecho de programa: FILE *ff; ff = fopen ("C:\\ces10\\programas\\dados", "r"); O arquivo dados, localizado na sub-pasta programas da pasta ces10 do diretório C, será aberto somente para leituras O arquivo dados, localizado na sub-pasta programas da pasta ces10 do diretório C, será aberto somente para leituras

FILE *ff; ff = fopen ("C:\\ces10\\programas\\dados", "r"); O arquivo dados fica associado à variável ff, ou seja, tudo o que for realizado em ff será feito no arquivo dados O arquivo dados fica associado à variável ff, ou seja, tudo o que for realizado em ff será feito no arquivo dados Se o arquivo a ser aberto estiver na mesma pasta que contém o arquivo do programa que o acessará, apenas o nome do arquivo é necessário: Se o arquivo a ser aberto estiver na mesma pasta que contém o arquivo do programa que o acessará, apenas o nome do arquivo é necessário:  Não é necessário informar a localização do arquivo: ff = fopen ("dados", "r");

FILE *ff; ff = fopen ("C:\\ces10\\programas\\dados", "r"); Na declaração de toda variável do tipo FILE, o asterisco ‘*’ deve ser colocado antes do seu nome Na declaração de toda variável do tipo FILE, o asterisco ‘*’ deve ser colocado antes do seu nome Isso é uma característica das variáveis do tipo ponteiro, que serão estudadas em capítulo específico Isso é uma característica das variáveis do tipo ponteiro, que serão estudadas em capítulo específico Variável do tipo FILE é um ponteiro que guarda o endereço da região de memória para ela reservada Variável do tipo FILE é um ponteiro que guarda o endereço da região de memória para ela reservada

Modos de abertura de arquivos-textos: Modos de abertura de arquivos-textos: A abertura só para leitura ou para leitura inicial de um arquivo não existente falhará A abertura só para leitura ou para leitura inicial de um arquivo não existente falhará fopen retornará um valor a ser interpretado como abertura mal-sucedida fopen retornará um valor a ser interpretado como abertura mal-sucedida

Modos de abertura de arquivos-textos: Modos de abertura de arquivos-textos: Abertura só para escrita ou para escrita inicial: Abertura só para escrita ou para escrita inicial:  Se o arquivo não existir: provocará sua criação  Se o arquivo já existir: apagará todo o seu conteúdo, reinicializando-o

Modos de abertura de arquivos-textos: Modos de abertura de arquivos-textos: Abertura para aumentar a partir do final: Abertura para aumentar a partir do final:  Se o arquivo não existir: provocará sua criação  Se o arquivo já existir: tudo será escrito a partir de seu final Em CES-10 só serão abordados os modos “r” e “w”

Uma variável do tipo FILE ocupa um espaço de vários bytes na memória principal Uma variável do tipo FILE ocupa um espaço de vários bytes na memória principal Num dado momento da execução do programa, apenas um desses bytes pode ser acessado Num dado momento da execução do programa, apenas um desses bytes pode ser acessado Diz-se que existe um cursor posicionado nesse byte Diz-se que existe um cursor posicionado nesse byte O cursor pode se movimentar ao longo dessa variável ou arquivo, mediante chamadas de funções para leitura ou escrita O cursor pode se movimentar ao longo dessa variável ou arquivo, mediante chamadas de funções para leitura ou escrita

Ao se encerrarem as operações em um arquivo-texto, deve-se nele executar a operação de fechamento Ao se encerrarem as operações em um arquivo-texto, deve-se nele executar a operação de fechamento – A associação estabelecida por f open é então desfeita A função fclose, pertencente também ao arquivo stdio.h, realiza essa operação A função fclose, pertencente também ao arquivo stdio.h, realiza essa operação Exemplo: fclose (ff) Exemplo: fclose (ff) O fechamento de um arquivo garante que todas as alterações realizadas na variável a ele associada redundem também em alterações nele próprio O fechamento de um arquivo garante que todas as alterações realizadas na variável a ele associada redundem também em alterações nele próprio

Exemplo: seja arq um arquivo de n bytes do diretório do usuário Seja o seguinte trecho de programa em C: Seja o seguinte trecho de programa em C: FILE *fl; fl = fopen (“arq”, “r+”); Seja também k < n o número de bytes de fl Seja também k < n o número de bytes de fl  Ou seja, arq não cabe em fl A seguir um esquema de troca de conteúdo entre arq e fl A seguir um esquema de troca de conteúdo entre arq e fl

Logo após a execução de fopen: os k 1 os bytes de arq são copiados em fl Logo após a execução de fopen: os k 1 os bytes de arq são copiados em fl O cursor do arquivo é posicionado em seu início O cursor do arquivo é posicionado em seu início fl arq 012k-1kk+1n-1 cópia de k bytes cursor

Após algumas leituras e escritas, o cursor se movimenta para frente Após algumas leituras e escritas, o cursor se movimenta para frente As leituras e escritas são feitas apenas em fl (arq fica desatualizado) As leituras e escritas são feitas apenas em fl (arq fica desatualizado) fl arq 012k-1kk+1n-1 cursor

Com mais leituras e escritas, o cursor chega ao final de fl, mas não de arq Com mais leituras e escritas, o cursor chega ao final de fl, mas não de arq arq continua desatualizado arq continua desatualizado fl arq 012k-1kk+1n-1 cursor

Para acesso ao próximo byte: o conteúdo de fl é copiado de volta em arq, atualizando-o Para acesso ao próximo byte: o conteúdo de fl é copiado de volta em arq, atualizando-o fl arq 012k-1kk+1n-1 cópia de k bytes

Os próximos k bytes de arq são copiados em fl Os próximos k bytes de arq são copiados em fl fl arq 012k-1kk+1n-1 cópia de k bytes O cursor vai para o início de fl, mas não de arq cursor

A execução de fclose copia fl de volta em arq, atualizando-o A execução de fclose copia fl de volta em arq, atualizando-o fl arq 012k-1kk+1n-1 cópia de k bytes

5.4.3 – Leitura e escrita em arquivos-textos Em C, a leitura e a escrita em arquivos-textos é feita respectivamente pelas funções fscanf e fprintf, também pertencentes ao arquivo stdio.h Em C, a leitura e a escrita em arquivos-textos é feita respectivamente pelas funções fscanf e fprintf, também pertencentes ao arquivo stdio.h Formas gerais: Formas gerais: fscanf (Variavel, CadeiaDeControle, OutrosArgumentos); fprintf (Variavel, CadeiaDeControle, OutrosArgumentos);

fscanf (Variavel, CadeiaDeControle, OutrosArgumentos); fprintf (Variavel, CadeiaDeControle, OutrosArgumentos); CadeiaDeControle e OutrosArgumentos têm o mesmo significado visto para as funções scanf e printf CadeiaDeControle e OutrosArgumentos têm o mesmo significado visto para as funções scanf e printf Variavel é o nome da variável do tipo FILE associada ao arquivo que sofrerá as operações de leitura e/ou escrita Variavel é o nome da variável do tipo FILE associada ao arquivo que sofrerá as operações de leitura e/ou escrita

fscanf (Variavel, CadeiaDeControle, OutrosArgumentos); fprintf (Variavel, CadeiaDeControle, OutrosArgumentos); O valor retornado pelas funções fscanf e fprintf é o mesmo retornado pelas funções scanf e printf O valor retornado pelas funções fscanf e fprintf é o mesmo retornado pelas funções scanf e printf fscanf pode ser usada como um detector de final de arquivo fscanf pode ser usada como um detector de final de arquivo Quando fscanf encontra e lê a marca de final de arquivo, ela retorna -1 (menos 1) Quando fscanf encontra e lê a marca de final de arquivo, ela retorna -1 (menos 1)

Exemplo: seja o seguinte trecho de programa: int a, b, soma, x, n; FILE *f1, *f2; soma = 0; n = 0; f1 = fopen ("infile", "r"); f2 = fopen ("outfile", "w"); x = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x); while (x > 0) { if (x == 2) {soma += a + b; n += 2;} if (x == 2) {soma += a + b; n += 2;} else {soma += a; n++;} else {soma += a; n++;} x = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x); } fprintf (f2, "A soma dos %d numeros eh %d", n, soma); fclose (f1); fclose (f2); infile x = 2 x = 1 x = -1 No vídeo A soma dos 9 numeros eh 274 outfile Encontrou final de arquivo

Mudando o conteúdo de infile: int a, b, soma, x, n; FILE *f1, *f2; soma = 0; n = 0; f1 = fopen ("infile", "r"); f2 = fopen ("outfile", "w"); x = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x); while (x > 0) { if (x == 2) {soma += a + b; n += 2;} if (x == 2) {soma += a + b; n += 2;} else {soma += a; n++;} else {soma += a; n++;} x = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x); } fprintf (f2, "A soma dos %d numeros eh %d", n, soma); fclose (f1); fclose (f2); # infile x = 2 x = 1 x = 0 No vídeo A soma dos 9 numeros eh 274 outfile Não encontrou final de arquivo

Exercícios 5.4: 1) Fazer um programa para: Ler o nome de um arquivo existente no diretório desse programa (leitura de cadeia de caracteres - próximo capítulo) Ler o nome de um arquivo existente no diretório desse programa (leitura de cadeia de caracteres - próximo capítulo) Produzir um outro arquivo contendo as linhas do arquivo lido numeradas Produzir um outro arquivo contendo as linhas do arquivo lido numeradas É interessante ler um arquivo contendo um programa, para que se obtenha a numeração de suas linhas

Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída por arquivos em disco 5.5 – Controle do vídeo-texto 5.6 – Vídeo-gráfico

5.5 – Controle do Vídeo-Texto – A função gotoxy Vista nas aulas de lab, gotoxy posiciona o cursor do vídeo- texto na posição dada por seus argumentos Vista nas aulas de lab, gotoxy posiciona o cursor do vídeo- texto na posição dada por seus argumentos Forma geral: Forma geral: gotoxy (expressão1, expressão2) N o da colunaN o da linha

5.5 – Controle do Vídeo-Texto – A função gotoxy Para ser usada no CodeBlocks, gotoxy pertence à biblioteca conio2 (arquivos e ) Para ser usada no CodeBlocks, gotoxy pertence à biblioteca conio2 (arquivos e ) Esses dois arquivos deverão ser copiados respectivamente para as pastas include e lib, de CodeBlocks\MinGW Esses dois arquivos deverão ser copiados respectivamente para as pastas include e lib, de CodeBlocks\MinGW Instruções de como configurar o CodeBlocks para trabalhar com a biblioteca conio2 são apresentadas nas aulas práticas Instruções de como configurar o CodeBlocks para trabalhar com a biblioteca conio2 são apresentadas nas aulas práticas

Exemplo: desenho de segmentos de retas com ‘*’ #include #include int main () { int a, b, i; printf ("Maximize a tela e digite algo!"); getch (); clrscr (); for (a=1, b=1, i=1; i<=10; a+=8, b+=2, i++) { gotoxy (a, b); printf ("********"); } printf ("\n\nDigite algo para encerrar: "); printf ("\n\nDigite algo para encerrar: "); getch (); return 0; } Na tela Sempre posiciona o cursor na posição [a, b] Inicialmente [a, b] = [1, 1] A cada repetição a+=8 e b+=2 Limpa a tela: conio2.h

Exemplo: programa para o desenho de uma casa Resultado no vídeo

#include #include int main () { int i,j,x,y,z; printf ("Maximize a tela e digite algo!"); getch (); clrscr (); /*Desenho do telhado */ for (x=10,y=12,z=40,i=1; i<=7; x+=3,y-=1,z-=6,i++) { gotoxy (x,y); printf ("%s%*s","////",z,"\\\\\\\\"); } gotoxy (x,y); printf ("/\\");

/*Desenho do piso: coordenada inicial (17, 19); Comprimento 30 */ x=17; y=19; gotoxy (x,y); printf ("##############################"); /*Desenho das paredes: altura 8; intervalo 28 */ for (y--,i=1;i<=8;y--,i++) { gotoxy (x,y); printf ("%c%29c",'#', '#'); }

/*Desenho da janela e da porta: janela: 8x3; porta: 5x6*/ for (x=22,y=13,i=1;i<=3;y++,i++){ gotoxy (x,y); printf ("########"); } for (x=38,y=13,i=1;i<=6;y++,i++){ gotoxy (x,y); printf ("#####"); }

/*Desenho da chamine:*/ x=40; y=4; gotoxy (x,y); printf ("###"); for (y++,i=1;i<=3;y++,i++){ gotoxy (x,y); printf ("%c%2c",'#','#'); } x=42; gotoxy (x,y); printf ("%c",'#'); x=42; gotoxy (x,y); printf ("%c",'#'); /*Fechamento da tela*/ gotoxy (1, 23); printf ("Digite algo para encerrar: "); printf ("Digite algo para encerrar: "); getch (); return 0; }

5.5.2 – Outras funções do conio2.h textbackground: estabelece a cor de fundo de um texto escrito textbackground: estabelece a cor de fundo de um texto escrito textcolor: estabelece a cor do texto textcolor: estabelece a cor do texto Exemplo: no programa da casinha: Exemplo: no programa da casinha: printf ("Maximize a tela e digite algo!"); getch (); clrscr (); textcolor(BLUE); textbackground(LIGHTRED); clrscr (); textcolor(BLUE); textbackground(LIGHTRED); for (i = 1; i <= 40; i++) printf (" "); printf (" "); getch (); getch (); 80 espaços Escreve 40 linhas vazias com fundo LIGHTRED

Resultado:

Capítulo V – Comandos de Entrada e Saída 5.1 – Equipamentos de entrada e saída 5.2 – Saída no vídeo-texto 5.3 – Entrada pelo teclado 5.4 – Entrada e saída por arquivos em disco 5.5 – Controle do vídeo-texto 5.6 – Vídeo-gráfico

5.6 – Vídeo-Gráfico Visto nas aulas de laboratório Visto nas aulas de laboratório No CodeBlocks são usadas rotinas gráficas desenvolvidas pelo Prof. Carlos Henrique Quartucci Forster No CodeBlocks são usadas rotinas gráficas desenvolvidas pelo Prof. Carlos Henrique Quartucci Forster

Exercícios 5.6: 1) Seja um tabuleiro de xadrez e as peças Rainha, Torre, Bispo e Cavalo. Fazer um programa que leia a inicial de várias dessas peças e as coordenadas de cada uma dentro do tabuleiro e, para cada peça em separado, desenhe no vídeo-texto e no vídeo-gráfico o tabuleiro mostrando a posição da peça, as casas atacadas por ela e as casas livres de seu ataque. Ver exemplos no próximo slide

R-5-6

2) Fazer um programa que leia uma frase e a escreva no vídeo- gráfico, de modo que cada caractere da frase ocupe um retângulo de 33x21 pixels 3) Desenhar a Bandeira do Brasil no vídeo-texto e no vídeo- gráfico