capítulo v – comandos de entrada e saída 5.1 – equipamentos de entrada e saída 5.2 – saída...
TRANSCRIPT
Capítulo V – Comandos de Capítulo V – Comandos de Entrada e SaídaEntrada e Saída
5.1 – Equipamentos de entrada e saída5.1 – Equipamentos de entrada e saída
5.2 – Saída no vídeo-texto5.2 – Saída no vídeo-texto
5.3 – Entrada pelo teclado5.3 – Entrada pelo teclado
5.4 – Entrada e saída por arquivos em 5.4 – Entrada e saída por arquivos em discodisco
5.5 – Controle do vídeo-texto5.5 – Controle do vídeo-texto
5.6 – Vídeo-gráfico5.6 – Vídeo-gráfico
5.4 – Entrada e Saída por 5.4 – Entrada e Saída por Arquivos em DiscoArquivos em Disco
5.4.1 – Arquivos-textos e arquivos 5.4.1 – Arquivos-textos e arquivos bináriosbinários
Arquivos: Arquivos: regiões contíguas na memória regiões contíguas na memória secundária, dos mais diversos tamanhos, secundária, dos mais diversos tamanhos, destinadas cada uma a guardar destinadas cada uma a guardar informações informações correlatascorrelatas, usadas para um determinado fim, usadas para um determinado fim
Existem arquivos de Existem arquivos de programasprogramas, arquivos de , arquivos de dadosdados, arquivos de , arquivos de imagensimagens, arquivos com , arquivos com somsom digitalizado, etc.digitalizado, etc.
A A Linguagem CLinguagem C trabalha com trabalha com dois tiposdois tipos de de arquivos:arquivos:
Arquivos-textos:Arquivos-textos:
Seu conteúdo pode ser encarado como uma Seu conteúdo pode ser encarado como uma sequência linear de caracteressequência linear de caracteres
Arquivos de Arquivos de programasprogramas são arquivos-textos são arquivos-textos Alguns arquivos de Alguns arquivos de dadosdados também são também são
Arquivos binários:Arquivos binários:
Podem conter números inteiros e reais em Podem conter números inteiros e reais em binário, textos, imagens, etc.binário, textos, imagens, etc.
Arquivos binários:Arquivos binários:
Tipicamente são sequências lineares de Tipicamente são sequências lineares de estruturasestruturas de mesmo tipo de mesmo tipo
EstruturasEstruturas serão vistas em capítulo serão vistas em capítulo específicoespecífico
Arquivos binários não serão estudados em Arquivos binários não serão estudados em CES-10CES-10
Arquivos-textos:Arquivos-textos:
São os arquivos abordados neste tópicoSão os arquivos abordados neste tópico
Nos arquivos-textos, existe uma Nos arquivos-textos, existe uma divisão em divisão em linhaslinhas proporcionada pelos caracteres proporcionada pelos caracteres ‘\n’‘\n’ ((new linenew line))
Cada um desses caracteres é uma Cada um desses caracteres é uma marca de marca de final de linhafinal de linha
As linhas não têm necessariamente o As linhas não têm necessariamente o mesmo mesmo número de caracteresnúmero de caracteres
Linhas vaziasLinhas vazias são caracterizadas por são caracterizadas por conterem conterem apenas o ‘\n’apenas o ‘\n’ e nada mais e nada mais
5.4.2 – Abertura e fechamento de 5.4.2 – Abertura e fechamento de arquivos-textosarquivos-textos
Dados de entradaDados de entrada para programas podem ser para programas podem ser retirados de retirados de arquivosarquivos, em vez de serem , em vez de serem digitados por meio do digitados por meio do tecladoteclado
ResultadosResultados de um programa podem ser de um programa podem ser gravados num gravados num arquivoarquivo, em vez de aparecerem , em vez de aparecerem no no vídeovídeo
Todo Todo arquivoarquivo da memória secundária precisa da memória secundária precisa ser associadoser associado a uma a uma variávelvariável do tipo do tipo FILE FILE de de um programa, para ser um programa, para ser acessadoacessado por esse por esse programaprograma
Abertura de um arquivo: Abertura de um arquivo: ato de associar um ato de associar um arquivo do disco a uma variável do tipo arquivo do disco a uma variável do tipo FILEFILE
Em Em CC, essa abertura é feita pela função , essa abertura é feita pela função fopenfopen, , pertencente ao arquivo pertencente ao arquivo stdio.hstdio.h
Exemplo:Exemplo: seja o seguinte trecho de programa: seja o seguinte trecho de programa:
FILE *ff;FILE *ff;
ff = fopen ("C:\\ces10\\programas\\dados", ff = fopen ("C:\\ces10\\programas\\dados", "r");"r");
O arquivo O arquivo dadosdados, localizado na sub-pasta , localizado na sub-pasta programasprogramas da pasta da pasta ces10 ces10 do diretório do diretório CC, , será aberto somente para será aberto somente para leiturasleituras
FILE *ff;FILE *ff;
ff = fopen ("C:\\ces10\\programas\\dados", "r");ff = fopen ("C:\\ces10\\programas\\dados", "r");
O arquivo O arquivo dados dados fica associado à variável fica associado à variável ffff, ou , ou seja, tudo o que for realizado em seja, tudo o que for realizado em ffff será feito no será feito no arquivo arquivo dadosdados
Se o Se o arquivo a ser abertoarquivo a ser aberto estiver na estiver na mesma mesma pastapasta que contém o que contém o arquivo do programaarquivo do programa que o que o acessará, apenas o acessará, apenas o nome do arquivonome do arquivo é é necessário:necessário:
Não é necessário informar a Não é necessário informar a localizaçãolocalização do do arquivo:arquivo:
ff = fopen ("dados", "r");ff = fopen ("dados", "r");
FILE *ff;FILE *ff;
ff = fopen ("C:\\ces10\\programas\\dados", "r");ff = fopen ("C:\\ces10\\programas\\dados", "r");
Na Na declaraçãodeclaração de toda variável do tipo de toda variável do tipo FILEFILE,, o asterisco o asterisco ‘*’‘*’ deve ser colocado deve ser colocado antes do seu antes do seu nomenome
Isso é uma Isso é uma característicacaracterística das variáveis do tipo das variáveis do tipo ponteiroponteiro, que serão estudadas em capítulo , que serão estudadas em capítulo específicoespecífico
Variável do tipo Variável do tipo FILEFILE é um é um ponteiroponteiro que que guarda o guarda o endereçoendereço da região de memória para da região de memória para ela reservadaela reservada
Modos de abertura de arquivos-textos:Modos de abertura de arquivos-textos:
A abertura só para A abertura só para leituraleitura ou para ou para leitura leitura inicialinicial de um de um arquivo não existentearquivo não existente falhará falhará
fopenfopen retornará um valor a ser interpretado retornará um valor a ser interpretado como como abertura mal-sucedidaabertura mal-sucedida
Modos de abertura de arquivos-textos:Modos de abertura de arquivos-textos:
Abertura só para Abertura só para escritaescrita ou para escrita ou para escrita inicial: inicial:
Se o arquivo Se o arquivo não existir:não existir: provocará sua provocará sua criaçãocriação
Se o arquivo Se o arquivo já existir:já existir: apagaráapagará todo o seu todo o seu conteúdo, reinicializando-oconteúdo, reinicializando-o
Modos de abertura de arquivos-textos:Modos de abertura de arquivos-textos:
Abertura para Abertura para aumentaraumentar a partir do final: a partir do final:
Se o arquivo Se o arquivo não existir:não existir: provocará sua provocará sua criaçãocriação
Se o arquivo Se o arquivo já existir:já existir: tudo será escrito a tudo será escrito a partir de seu finalpartir de seu finalEm CES-10 só serão
abordados os modos “r” e “w”
Uma variável do tipo Uma variável do tipo FILEFILE ocupa um ocupa um espaçoespaço de vários bytes na memória principal de vários bytes na memória principal
Num dado momento da execução do programa, Num dado momento da execução do programa, apenas um desses bytesapenas um desses bytes pode ser acessado pode ser acessado
Diz-se que existe um Diz-se que existe um cursorcursor posicionado nesse posicionado nesse byte byte
O O cursorcursor pode se pode se movimentarmovimentar ao longo dessa ao longo dessa variável ou arquivo, mediante chamadas de variável ou arquivo, mediante chamadas de funções para funções para leituraleitura ou ou escritaescrita
Ao se Ao se encerraremencerrarem as operações em um arquivo- as operações em um arquivo-texto, deve-se nele executar a operação de texto, deve-se nele executar a operação de fechamentofechamento
– A associação estabelecida por A associação estabelecida por ffopen open é então é então desfeitadesfeita
A função A função fclosefclose, pertencente também ao arquivo , pertencente também ao arquivo stdio.hstdio.h, realiza essa operação, realiza essa operação
Exemplo: fclose (ff)Exemplo: fclose (ff)
O O fechamentofechamento de um arquivo garante que todas de um arquivo garante que todas as alterações realizadas as alterações realizadas na variável a ele na variável a ele associadaassociada redundem também em alterações redundem também em alterações nele nele própriopróprio
Exemplo: Exemplo: seja seja arqarq um arquivo de um arquivo de n n bytes do bytes do diretório do usuáriodiretório do usuário
Seja o seguinte trecho de programa em C:Seja o seguinte trecho de programa em C:
FILE *fl;FILE *fl;
fl = fopen (“arq”, “r+”);fl = fopen (“arq”, “r+”);
Seja também Seja também k < nk < n o número de bytes de o número de bytes de flfl
Ou seja, Ou seja, arqarq não cabe em não cabe em flfl
A seguir um esquema de troca de conteúdo entre A seguir um esquema de troca de conteúdo entre arqarq e e flfl
LogoLogo após a execução de após a execução de fopenfopen: os : os kk 1 1osos bytes bytes de de arqarq são copiados em são copiados em flfl
O cursor do arquivo é posicionado em seu O cursor do arquivo é posicionado em seu inícioinício
fl
arq
0 1 2 k-1
k k+1
n-1
cópia de k bytes
cursor
Após algumas leituras e escritas, o cursor se Após algumas leituras e escritas, o cursor se movimenta para frentemovimenta para frente
As leituras e escritas são feitas apenas em As leituras e escritas são feitas apenas em fl fl (arq(arq fica desatualizado fica desatualizado))
fl
arq
0 1 2 k-1
k k+1
n-1
cursor
Com mais leituras e escritas, o cursor chega ao Com mais leituras e escritas, o cursor chega ao final de final de flfl, mas não de , mas não de arqarq
arq arq continua desatualizadocontinua desatualizado
fl
arq
0 1 2 k-1
k k+1
n-1
cursor
Para acesso ao próximo byte: o conteúdo de Para acesso ao próximo byte: o conteúdo de flfl é copiado de volta em é copiado de volta em arqarq, atualizando-o , atualizando-o
fl
arq
0 1 2 k-1
k k+1
n-1
cópia de k bytes
Os próximos Os próximos kk bytes de bytes de arqarq são copiados em são copiados em flfl
fl
arq
0 1 2 k-1
k k+1
n-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 A execução de fclosefclose copia copia flfl de volta em de volta em arqarq, , atualizando-oatualizando-o
fl
arq
0 1 2 k-1
k k+1
n-1
cópia de k bytes
5.4.3 – Leitura e escrita em arquivos-5.4.3 – Leitura e escrita em arquivos-textostextos
Em C, a Em C, a leituraleitura e a e a escritaescrita em arquivos-textos em arquivos-textos é feita respectivamente pelas funções é feita respectivamente pelas funções fscanf fscanf e e fprintf fprintf , também pertencentes ao arquivo , também pertencentes ao arquivo stdio.hstdio.h
Formas gerais:Formas gerais:
fscanf (Variavel, CadeiaDeControle, fscanf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
fprintf (Variavel, CadeiaDeControle, fprintf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
fscanf (Variavel, CadeiaDeControle, fscanf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
fprintf (Variavel, CadeiaDeControle, fprintf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
CadeiaDeControle e OutrosArgumentosCadeiaDeControle e OutrosArgumentos têm o mesmo significado visto para as funções têm o mesmo significado visto para as funções scanfscanf e e printfprintf
VariavelVariavel é o nome da variável do tipo é o nome da variável do tipo FILEFILE associada ao associada ao arquivoarquivo que sofrerá as operações que sofrerá as operações de de leituraleitura e/ou e/ou escritaescrita
fscanf (Variavel, CadeiaDeControle, fscanf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
fprintf (Variavel, CadeiaDeControle, fprintf (Variavel, CadeiaDeControle, OutrosArgumentos);OutrosArgumentos);
O O valor retornadovalor retornado pelas funções pelas funções fscanf fscanf e e fprintf fprintf é o mesmo retornado pelas funções é o mesmo retornado pelas funções scanf scanf e e printfprintf
fscanf fscanf pode ser usada como um detector de pode ser usada como um detector de final de arquivofinal de arquivo
Quando Quando fscanffscanf encontra e lê a marca de final encontra e lê a marca de final de arquivo, ela retorna de arquivo, ela retorna -1 (menos 1)-1 (menos 1)
Exemplo: Exemplo: seja o seguinte trecho de programa:seja o seguinte trecho de programa:
int a, b, soma, x, n; FILE *f1, *f2;int a, b, soma, x, n; FILE *f1, *f2;
soma = 0; n = 0;soma = 0; n = 0;
f1 = fopen ("infile", "r");f1 = fopen ("infile", "r");
f2 = fopen ("outfile", "w");f2 = fopen ("outfile", "w");
x = fscanf(f1, "%d%d", &a, &b);x = fscanf(f1, "%d%d", &a, &b);
printf ("x = %d\n", x);printf ("x = %d\n", x);
while (x > 0) {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 = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x);x);
}}
fprintf (f2, "A soma dos %d numeros eh %d", n, soma);fprintf (f2, "A soma dos %d numeros eh %d", n, soma);
fclose (f1); fclose (f2);fclose (f1); fclose (f2);
1 12 43 21 67 23 74 23 10
infile
x = 2x = 2x = 2x = 2x = 1x = -1
No vídeo
A soma dos 9 numeros eh 274
outfile
Encontrou final de arquivo
Mudando o conteúdo de Mudando o conteúdo de infileinfile::
int a, b, soma, x, n; FILE *f1, *f2;int a, b, soma, x, n; FILE *f1, *f2;
soma = 0; n = 0;soma = 0; n = 0;
f1 = fopen ("infile", "r");f1 = fopen ("infile", "r");
f2 = fopen ("outfile", "w");f2 = fopen ("outfile", "w");
x = fscanf(f1, "%d%d", &a, &b);x = fscanf(f1, "%d%d", &a, &b);
printf ("x = %d\n", x);printf ("x = %d\n", x);
while (x > 0) {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 = fscanf(f1, "%d%d", &a, &b); printf ("x = %d\n", x);x);
}}
fprintf (f2, "A soma dos %d numeros eh %d", n, soma);fprintf (f2, "A soma dos %d numeros eh %d", n, soma);
fclose (f1); fclose (f2);fclose (f1); fclose (f2);
1 12 43 21 67 23 74 23 10 #
infile
x = 2x = 2x = 2x = 2x = 1x = 0
No vídeo
A soma dos 9 numeros eh 274
outfile
Não encontrou final de arquivo
Exercícios 5.4:Exercícios 5.4:
1) Fazer um programa para:1) Fazer um programa para:
Ler o nome de um arquivo existente no Ler o nome de um arquivo existente no
diretório desse programa (leitura de cadeia de diretório desse programa (leitura de cadeia de caracteres - próximo capítulo)caracteres - próximo capítulo)
Produzir um outro arquivo contendo as linhas Produzir um outro arquivo contendo as linhas do arquivo lido numeradasdo arquivo lido numeradas
É interessante ler um arquivo contendo um É interessante ler um arquivo contendo um programa, para que se obtenha a numeração programa, para que se obtenha a numeração de suas linhasde suas linhas
Capítulo V – Comandos de Capítulo V – Comandos de Entrada e SaídaEntrada e Saída
5.1 – Equipamentos de entrada e saída5.1 – Equipamentos de entrada e saída
5.2 – Saída no vídeo-texto5.2 – Saída no vídeo-texto
5.3 – Entrada pelo teclado5.3 – Entrada pelo teclado
5.4 – Entrada e saída por arquivos em 5.4 – Entrada e saída por arquivos em discodisco
5.5 – Controle do vídeo-texto5.5 – Controle do vídeo-texto
5.6 – Vídeo-gráfico5.6 – Vídeo-gráfico
5.5 – Controle do Vídeo-5.5 – Controle do Vídeo-TextoTexto
5.5.1 – A função gotoxy5.5.1 – A função gotoxy
Vista nas aulas de lab, Vista nas aulas de lab, gotoxygotoxy posiciona o posiciona o cursorcursor do vídeo-texto na posição dada por seus do vídeo-texto na posição dada por seus argumentosargumentos
Forma geral: Forma geral:
gotoxy (expressão1, expressão2)gotoxy (expressão1, expressão2)
No da coluna
No da linha
5.5 – Controle do Vídeo-5.5 – Controle do Vídeo-TextoTexto
5.5.1 – A função gotoxy5.5.1 – A função gotoxy
Para ser usada no CodeBlocks, Para ser usada no CodeBlocks, gotoxygotoxy pertence à pertence à biblioteca biblioteca conio2conio2 (arquivos (arquivos <conio2.h> <conio2.h> e e <libconio.a><libconio.a>))
Esses dois arquivos deverão ser copiados Esses dois arquivos deverão ser copiados respectivamente para as pastas respectivamente para as pastas includeinclude e e liblib, de , de CodeBlocks\MinGWCodeBlocks\MinGW
Instruções de como configurar o Instruções de como configurar o CodeBlocksCodeBlocks para para trabalhar com a biblioteca trabalhar com a biblioteca conio2conio2 são apresentadas são apresentadas nas aulas práticasnas aulas práticas
Exemplo: Exemplo: desenho de segmentos de retas comdesenho de segmentos de retas com ‘*’‘*’
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
#include <conio2.h>#include <conio2.h>
int main () {int main () {
int a, b, i;int a, b, i;
printf ("Maximize a tela e digite algo!");printf ("Maximize a tela e digite algo!");
getch ();getch ();
clrscr ();clrscr ();
for (a=1, b=1, i=1; i<=10; a+=8, b+=2, i++) {for (a=1, b=1, i=1; i<=10; a+=8, b+=2, i++) {
gotoxy (a, b); printf ("********");gotoxy (a, b); printf ("********");
}}
printf ("\n\nDigite algo para encerrar: ");printf ("\n\nDigite algo para encerrar: ");
getch (); return 0;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: Exemplo: programa para o desenho de uma programa para o desenho de uma casacasa
Resultado no vídeo
#include <stdio.h>#include <stdio.h>
#include <conio.h>#include <conio.h>
#include <conio2.h>#include <conio2.h>
int main () {int main () {
int i,j,x,y,z;int i,j,x,y,z;
printf ("Maximize a tela e digite algo!");printf ("Maximize a tela e digite algo!");
getch ();getch ();
clrscr ();clrscr ();
/*/* Desenho do telhado */Desenho do telhado */
for (x=10,y=12,z=40,i=1; i<=7; x+=3,y-=1,z-=6,i++) {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 ("%s%*s","////",z,"\\\\\\\\");
}}
gotoxy (x,y); printf ("/\\");gotoxy (x,y); printf ("/\\");
/*/* Desenho do piso: coordenada inicial (17, 19); Desenho do piso: coordenada inicial (17, 19); Comprimento 30 */Comprimento 30 */
x=17; y=19; gotoxy (x,y);x=17; y=19; gotoxy (x,y);
printf printf ("##############################");("##############################");
/*/* Desenho das paredes: altura 8; intervalo 28 */Desenho das paredes: altura 8; intervalo 28 */
for (y--,i=1;i<=8;y--,i++) {for (y--,i=1;i<=8;y--,i++) {
gotoxy (x,y); printf ("%c%29c",'#', '#');gotoxy (x,y); printf ("%c%29c",'#', '#');
}}
/*/* Desenho da janela e da porta: janela: 8x3; porta: Desenho da janela e da porta: janela: 8x3; porta: 5x65x6 */*/
for (x=22,y=13,i=1;i<=3;y++,i++){for (x=22,y=13,i=1;i<=3;y++,i++){
gotoxy (x,y);gotoxy (x,y);
printf ("########");printf ("########");
}}
for (x=38,y=13,i=1;i<=6;y++,i++){for (x=38,y=13,i=1;i<=6;y++,i++){
gotoxy (x,y);gotoxy (x,y);
printf ("#####");printf ("#####");
}}
/*/* Desenho da chamine:Desenho da chamine: */*/
x=40; y=4; gotoxy (x,y);x=40; y=4; gotoxy (x,y);
printf ("###");printf ("###");
for (y++,i=1;i<=3;y++,i++){for (y++,i=1;i<=3;y++,i++){
gotoxy (x,y); printf ("%c%2c",'#','#');gotoxy (x,y); printf ("%c%2c",'#','#');
}}
x=42; gotoxy (x,y); printf ("%c",'#');x=42; gotoxy (x,y); printf ("%c",'#');
/*/* Fechamento da telaFechamento da tela */*/
gotoxy (1, 23);gotoxy (1, 23);
printf ("Digite algo para encerrar: ");printf ("Digite algo para encerrar: ");
getch (); return 0;getch (); return 0;
}}
5.5.2 – Outras funções do conio2.h5.5.2 – Outras funções do conio2.h
textbackground:textbackground: estabelece a cor de fundo de estabelece a cor de fundo de um texto escritoum texto escrito
textcolor:textcolor: estabelece a cor do texto estabelece a cor do texto
Exemplo: Exemplo: no programa da casinha:no programa da casinha:
printf ("Maximize a tela e digite algo!");printf ("Maximize a tela e digite algo!");
getch ();getch ();
clrscr (); clrscr (); textcolor(BLUE); textcolor(BLUE); textbackground(LIGHTRED);textbackground(LIGHTRED);
for (i = 1; i <= 40; i++)for (i = 1; i <= 40; i++)
printf (" printf (" "); ");
getch ();getch ();80 espaços
Escreve 40 linhas vazias com fundo LIGHTRED
Resultado:Resultado:
Capítulo V – Comandos de Capítulo V – Comandos de Entrada e SaídaEntrada e Saída
5.1 – Equipamentos de entrada e saída5.1 – Equipamentos de entrada e saída
5.2 – Saída no vídeo-texto5.2 – Saída no vídeo-texto
5.3 – Entrada pelo teclado5.3 – Entrada pelo teclado
5.4 – Entrada e saída por arquivos em 5.4 – Entrada e saída por arquivos em discodisco
5.5 – Controle do vídeo-texto5.5 – Controle do vídeo-texto
5.6 – Vídeo-gráfico5.6 – Vídeo-gráfico
5.6 – Vídeo-Gráfico5.6 – Vídeo-Gráfico
Visto nas aulas de Visto nas aulas de laboratóriolaboratório
No CodeBlocks são usadas rotinas gráficas No CodeBlocks são usadas rotinas gráficas desenvolvidas pelo Prof. Carlos Henrique desenvolvidas pelo Prof. Carlos Henrique Quartucci ForsterQuartucci Forster
Exercícios 5.6:Exercícios 5.6:
1) Seja um tabuleiro de xadrez e as peças 1) Seja um tabuleiro de xadrez e as peças Rainha, Torre, Bispo e Cavalo. Fazer um Rainha, Torre, Bispo e Cavalo. Fazer um programa que leia a inicial de várias dessas programa que leia a inicial de várias dessas peças e as coordenadas de cada uma dentro do peças e as coordenadas de cada uma dentro do tabuleiro e, para cada peça em separado, tabuleiro e, para cada peça em separado, desenhe no vídeo-texto e no vídeo-gráfico o desenhe no vídeo-texto e no vídeo-gráfico o tabuleiro mostrando a posição da peça, as tabuleiro mostrando a posição da peça, as casas atacadas por ela e as casas livres de seu casas atacadas por ela e as casas livres de seu ataque. ataque.
Ver exemplos no próximo slideVer exemplos no próximo slide
R-5-6
2) 2) Fazer umFazer um programa que leia uma frase e a programa que leia uma frase e a escreva no vídeo-gráfico, de modo que cada escreva no vídeo-gráfico, de modo que cada caractere da frase ocupe um retângulo de caractere da frase ocupe um retângulo de 33x21 pixels33x21 pixels
3) Desenhar a Bandeira do Brasil no vídeo-texto 3) Desenhar a Bandeira do Brasil no vídeo-texto e no vídeo-gráficoe no vídeo-gráfico