- Encontre o conteúdo do endereço de memória solicitado: (1.0 ponto - 0.2 cada)
Endereço J Endereço K Endereço L Endereço M Endereço N A:=10;
B:=20;
C:=B/A;
D:=C*A;
J:=D+B+A;A:= 30;
B:=-20;
C:=A-B;
C:=C+10;
K:=C*2;Var := 12;
Var := Var * 12;
Var := Var * 12;
Var := Var * 0;
L := Var + 12;P:= 1000;
Q:= 100;
R:= 10;
S:= 1;
M:= (P+Q+R+S)/Q;A := 10;
B := A+ 10;
C := B+ 10;
D := C + 10;
N := D + 10;J = 50 K = 120 L = 12 M = 11.11 N = 50 - Encontre o valor True or False para as expressões lógicas. (1 Ponto - 0.2 cada linha)
Atenção: É necessário que o aluno acerte toda uma linha para receber os pontos da linha.
Considere os seguintes valores para os endereços de memória:
A:= 10, B:= 9, C:= 15, D:= 10;
A = D T A = B F A = C F A <> F (A = D) AND (B <> T (X<= Y) OR (X>Y) T B > A F (A < a =" B) T (X<>X) AND (X=X) F A > C F (A=D) OR (A=C)OR(A=B) T (A+B) < (C+D) T (C < c =" A) F (A F (A+B+C+D) > 0 T - Fazer o fluxograma e o código Pascal equivalente de um programa que pede ao usuário que digite um valor qualquer. Em seguida mostrar uma mensagem dizendo se o número é maior que 100. Caso não seja maior que 100 o programa não emite mensagem alguma. (1 Ponto)
Solução:
- Fazer o fluxograma e o código Pascal equivalente de um programa que pede ao usuário que digite dois números inteiros. O programa deverá somar ambos e em seguida verificar se o resultado é maior que 65535. Caso positivo mostrar uma mensagem dizendo: Boom !!!, caso contrário simplesmente mostrar o resultado da soma. (2 Pts.)
Solução:
- Fazer o fluxograma e o código Pascal equivalente de um programa que pede ao usuário que digite dois valores inteiros e consecutivos. O programa deverá somar todos os números do intervalo e mostrar o resultado na tela. Os limites devem fazer parte da soma. (2 Pts.)
Solução:

domingo, 14 de março de 2010
Prova 2010 - Bolsa de Campus Nível 4
Prova 2009 - Bolsa de Campus Nível 2
A silhueta de um conjunto de prédios
Considere um conjunto de prédios de forma retangular. A sua silhueta é a projeção dos prédios num plano imaginário atrás de todos eles.
Escreva um programa em Java que calcula eficientemente a silhueta de um conjunto de n prédios dados.
Uma silhueta pode ser representada por uma sequência de inteiros positivos (c[0],h[1],c[1],h[2],c[2],...,h[n],c[n]) onde os c[i] são comprimentos de segmentos horizontais de altura h[i]. A origem da silhueta é o ponto de coordenadas (0,0) e o seu término é o ponto de coordenadas (soma(c[i]),0).
Note que a silhueta de um prédio retangular é uma sequência da forma (c[0],h[1],c[1]).
O procedimento básico do seu programa deve ser um algoritmo para calcular a união de duas silhuetas dadas.
Por exemplo, dadas as silhuetas
(3, 6,4, 2,1, 9,4, 4,4, 17,3, 14,3, 9,5) e
(5, 4,4, 13,5, 6,4, 16,2, 11,3, 5,2)
a sua união é a silhueta
(3, 6,4, 4,1, 9,1, 13,5, 6,2, 17,3, 16,1, 14,2, 11,1, 9,4),
conforme está representado no desenho a seguir. Note que as linhas mais grossas correspondem à silhueta do conjunto.
Uma estratégia muito eficiente consiste em dividir os prédios dados em duas "metades", calcular recursivamente a silhueta de cada "metade" e calcular a união das duas silhuetas obtidas.
Outra alternativa mais simples mas menos eficiente consiste em construir as silhuetas dos m primeiros prédios, para cada valor de m, tomando a união dos m-1 primeiros prédios com o m-ésimo.
Além das solicitações nas Especificações para a entrega do exercício de programação entregue também os resultados que o seu programa fornece para o exemplo dado, considerando separadamente os treze prédios do exemplo. Ou seja, não use o agrupamento de prédios do exemplo, use apenas os prédios propriamente ditos, conforme na sequência abaixo de dados:
(3,6,4) (5,4,4) (7,2,1) (8,9,4) (9,13,5) (12,4,4) (14,6,4)
(16,17,3) (18,16,2) (19,14,3) (20,11,3) (22,9,5) (23,5,2)
Questão difícil (máximo de dois pontos adicionais na nota da prova)
Acomodação ótima de arquivos em disquetes
Uma companhia que vende software precisa acomodar n arquivos, de tamanhos t=(t[1],t[2],...,t[n]), em disquetes de capacidade C, sendo que t[i]<=C, para cada i.
Faça um programa em Java que aloca os arquivos no menor número possível de disquetes.
Exemplo: C=360
arquivo 1 2 3 4 5 6 7 8 9
tamanho 40 80 80 80 100 100 100 240 240
disquete 1 1 2 2 2 2 3 1 3
No caso, são necessários 3 disquetes para acomodar os 9 arquivos, já que eles nao cabem em dois disquetes cuja capacidade é de 720. Note que se os arquivos fossem alocados na ordem que surgem, da esquerda para a direita, haveria necessidade de quatro disquetes.
Uma forma de testar o seu programa, é variar a ordem de apresentação dos arquivos e verificar se o número de disquetes se mantem ou não.
Outra forma de testes é repartir a capacidade de um certo número de disquetes em arquivos de tamanhos bem diferentes e apresentar os dados bem embaralhados para o programa. Ou seja, obter os dados a partir de uma solução pré-estabelecida. Por exemplo:
360=20+40+60+80+100+10+50
360=70+110+180
360=15+25+35+45+55+65+75+22+23
Tente resolver agora a sequência:
10 15 20 22 23 25 35 40 45 50 55 60 65 70 75 80 100 110 180
em diversas ordens.
Outro teste ainda: duplique cada arquivo (tome dois de 10, dois de 15, etc) e veja se o programa aloca os arquivos em 6 disquetes.
No relatório explique a função de cada variável no programa. Explique sucintamente o método que Você usou para gerar a solução. Divida o seu programa em blocos convenientes e explique também sucintamente a função de cada bloco.
A grosso modo, o seu programa vai ter que enumerar todas as possibilidades de alocação dos arquivos em um certo número de disquetes e escolher uma configuração que usa o mínimo de disquetes.
Obviamente, a melhor estrategia é Você estar absolutamente convencido de que o seu programa funciona corretamente através do entendimento completo do algoritmo utilizado. Neste caso Você não precisará se preocupar com tantos testes. É sempre bom lembrar porém que João Seguro morreu de velho.
Além das solicitações nas Especificações para a entrega do exercício de programação entregue também os resultados que o seu programa fornece para os exemplos dados.
Prova 2008 - Bolsa de Campus
| STADT – Camping de Estudo Stadt SP IC – Instituto de Computação DCC - Departamento de Ciência da Computação | 1a Prova de Programação de Computadores Prof: Marcos Riequeiro de Gotterfields 26 de junho de 2008 Duração: 120 minutos |
ALUNO:__________________________________________ MATRICULA:__________________
Esta prova tem o objetivo de testar conceitos de programação orientada a objetos como encapsulamento de dados, herança, classes abstratas (genéricas), métodos virtuais, construtores e destrutores.
O trecho de código abaixo é referente a um sistema de controle de estoque de um mini-mercado. O sistema possui uma lista de fornecedores do mini-mercado e cada fornecedor possui uma lista de produtos. Por exemplo o fornecedor com nome ‘Nestle’ fornece a lista de produtos ‘Nescau’, ‘Nescafe’ e ‘Nesquick’. Enquanto o fornecedor com nome ‘Hortifruti’ fornece a lista de produtos ‘Alface’ e ‘Tomate’. O sistema do mini-mercado possui um objeto Estoque com campos TotalFornecedores – inteiro representando o total de fornecedores, ListaFornecedores – lista de fornecedores - construtor init, e métodos inserir e listar fornecedores. Cada Fornecedor é codificado como um objeto com campo Nome, TotalProdutos – inteiro representando o total de produtos e ListaProdutos – lista de produtos, construtor init e métodos inserir e listar produtos. Cada Produto é codificado como um objeto com campo Nome e Quantidade, e construtor init e método listar.
1) Defina os seguintes tipos: (3,0 pontos)
Uses TADLista, WinCrt; {*** Sugestão: use a Unit TADLista em anexo***}
Type
TP_Produto = ^T_Produto;
T_Produto = object ... {complete aqui}
end;
TP_Fornecedor = ^T_Fornecedor;
T_Fornecedor = object ... {complete aqui}
end;
TP_Estoque = ^T_Estoque;
T_Estoque = object ... {complete aqui}
end;
2) Defina os construtores init dos objetos estoque, fornecedor e produto. Defina os parâmetros dos construtores de forma a inicializar todos os atributos dos objetos. (1,5 pontos)
3) Defina os métodos inserir dos objetos estoque e fornecedor. (1,0 pontos)
3) Defina os métodos listar dos objetos estoque, fornecedor e produto. (1,5 pontos)
4) Escreva um programa principal que crie um estoque com os fornecedores ‘Nestle’ e ‘Hortifruti’ e seus produtos de forma que a lista do estoque gere a saída conforme abaixo. (3,0 pontos)
Estoque com 2 Forncedores:
Fornecedor – Produtos (Quantidade).
Nestle – 3 produtos: Nescau (20). Nescafe (50). Nesquick (32).
Hortifruti – 2 produtos: Alface (100). Tomate (30).
“A maior dor do animal é a dor do abandono”
Sociedade Protetora dos Animais.
Ajuda - ( Suporte/Contato )
São Paulo - SP
rj.campus@hotmail.com
Rio de Janeio - Irenópolis
mg.campus@hotmail.com
Minas Gerais - Monte Prada
support.stadt@hotmail.com
Support or Help of Contact!
Camping 2(Programação de Computadores) - Conteúdo
João Vytor, Voltando á Postar conteúdos de Prova, Boom Olha Pelo que se Sabe Programação é o processo de escrita, teste e manutenção de um programa de computador. O programa é escrito em uma linguagem de programação, embora seja possível, com alguma dificuldade, escrevê-lo directamente em linguagem de máquina. Diferentes partes de um programa podem ser escritas em diferentes linguagens.Diferentes linguagens de programação funcionam de diferentes modos. Por esse motivo, os programadores podem criar programas muito diferentes para diferentes linguagens; muito embora, teoricamente, a maioria das linguagens possa ser usada para criar qualquer programa. Para mais informações sobre estes métodos, veja Linguagem de programação.Software é um nome colectivo para programas de computadores e dados.Há várias décadas se debate se a programação é mais semelhante a uma arte (Donald Knuth), a uma ciência, à matemática (Edsger Dijkstra), à engenharia (David Parnas), ou se é um campo completamente novo.
Programas ou algoritmos?
Um algoritmo é uma sequência de passos para realizar uma tarefa ou resolver um problema. Em nosso dia a dia utilizamos algoritmos para realizar nossas atividades, definindo a sequência de atividades que devemos fazer para atingir um objetivo.
Um algoritmo é, num certo sentido, um programa abstrato — dizendo de outra forma, um programa é um algoritmo concretizado. No entanto, os programas são, à excepção dos menores, visualizados mais facilmente como uma colecção de algoritmos menores combinados de um modo único — da mesma forma que uma casa é construída a partir de componentes.
Dessa forma, um algoritmo é uma descrição de como um computador pode ser levado a executar uma operação simples e específica, como, por exemplo, uma ordenação. Um programa, por outro lado, é uma entidade que na verdade implementa uma ou mais operações de forma que seja útil para as pessoas.
Engenharia de software
A criação de um programa de computador consiste de cinco passos principais:
- Reconhecer a necessidade de um programa para resolver um problema.
- Planificar o programa e seleccionar as ferramentas necessárias para resolver o problema.
- Escrever o programa na linguagem de programação escolhida.
- Compilação: tradução do código fonte legível pelo homem em código executável pela máquina, o que é feito através de compiladores e outras ferramentas.
- Testar o programa para ter a certeza de que funciona; se não, regressar ao passo 3.
Estes cinco passos são colectivamente conhecidos como engenharia de software. A programação põe ênfase nos passos 2, 3 e 4. A codificação põe ênfase no passo 3. O termo coder, por vezes usado como sinônimo para programador, pode tornar-se aviltante porque ignora as capacidades necessárias para lidar com os outros quatro passos.
História
Heron de Alexandria no século primeiro inventou teatros automatizados que usavam programação análoga para controlar os fantoches, portas, luzes e efeitos de som.
A mais antiga programadora de computadores que se conhece é Ada Lovelace, filha de Anabella e de Lord Byron (o poeta). Anabella transmitiu a Ada o seu amor à matemática, a qual, depois de conhecer Charles Babbage, traduziu e expandiu uma descrição da sua máquina analítica. Muito embora Babbage nunca tenha completado a construção de nenhuma das suas máquinas, o trabalho que ele e Ada desenvolveram sobre elas, garantiu a Ada o título de primeira programadora de computadores do mundo (veja as notas de Ada Byron sobre a máquina analítica. A linguagem de programação Ada recebeu o seu nome.
Um dos primeiros programadores que se tem notícia de ter completado todos os passos para a computação sem auxílio, incluindo a compilação e o teste, é Wallace J. Eckert. O trabalho deste homem antecede a ascensão das linguagens de computador, porque ele usou a linguagem da matemática para solucionar problemas astronômicos. No entanto, todos os ingredientes estavam lá: ele trabalhou um laboratório de computação para a Universidade de Columbia com equipamentos fornecidos pela IBM, completos com uma divisão de serviço de atendimento ao cliente, e consultores de engenharia para propósitos especiais, na cidade de Nova York, na década de 1930, usando cartões perfurados para armazenar os resultados intermediários de seus cálculos, e então formatando os cartões perfurados para controlar a impressão das respostas, igual ao trabalho para os censos décadas antes. Tinha técnicas de debug tais como códigos de cores, bases cruzadas, verificação e duplicação. Uma diferença entre Eckert e os programadores dos dias de hoje é que o exemplo do seu trabalho influenciou o projeto Manhattan. Seu trabalho foi reconhecido por astrônomos do Observatório da Universidade de Yale, Observatório da Universidade de Princeton, Observatório da Marinha dos EUA, Observatório da Faculdade Harvard, Observatório dos estudantes da Universidade da Califórnia, Observatório Ladd da Universidade de Brown e Observatório Sproul da Faculdade de Swarthmore.
Alan Turing é frequentemente encarado como o pai da ciência de computadores e, por afinidade, da programação. Ele foi responsável por ajudar na elaboração e programação de um computador destinado a quebrar o código alemão ENIGMA durante a Segunda Guerra Mundial — ver Máquina Enigma.
Camping 3(Programando Jogos) - Conteúdo
Ai, pessoal que faltou semana retrasada, Entrar nestes sites, com conteúdo da prova surpresa que darei Ainda neste Mês!!!
| ||||
| ||||
| ||||
| Crie seus próprios Jogos | idioma: portugues |
| Aprenda a criar seus próprios jogos. Downloads de jogos criados pelo autor (freeware), Downloads de tutoriais. [http://www.criandojogos.hpg.com.brb] adicionado em: 30/11/2002 18:52:00 total hits: 23925 | |
Camping 1(C#) - Conteúdo
Linguagem ou Plataforma?
Em primeiro lugar, antes de fazer qualquer comparação entre Java e alguma outra tecnologia, é bom enfatizar que “Java” pode significar duas coisas bastante diferentes:
- Uma linguagem de programação.
- Uma plataforma de execução, que inclui, no mínimo, um “runtime” e uma biblioteca de classes, usualmente conhecidos como “Java Virtual Machine”.
Por uma questão de objetividade, esta comparação limita-se à linguagem de programação Java e não compara as plataformas da Sun e da Microsoft. Algumas características bastante interessantes no desenvolvimento de software, como por exemplo, o amplo suporte a diferentes culturas presente no C# foram deixados de lado por tecnicamente fazerem parte da “.NET Framework”.
Não estou também comparando o Visual Studio.NET com nenhum ambiente integrado de desenvolvimento para Java, embora o Visual Studio seja, na minha opinião, um produto muito mais completo.
Semelhanças
O C# foi sem dúvida influenciado por diversas linguagens, dentre as quais evidentemente Java, C++, Delphi e Smalltalk. Veja no quadro a seguir algumas das semelhanças com o Java:
| Semelhanças entre C# e Java | |
| Característica | Implementação |
| Inspirado no C/C++ | Boa parte da sintaxe de ambas as linguagens foi inspirada no C/C++, especialmente declaração de variáveis, funções e estruturas de controle. |
| Orientação a objetos | Ambas as linguagens suportam conceitos de programação orientada a objetos com a palavra reservada class. |
| Herança | Herança simples de classes a partir de ancestral comum e herança múltipla de interfaces. |
| Gerenciamento de memória | Automático, com “coletor de lixo”. |
| Tipagem forte | Todas as atribuições tem os tipos validados. Os “casts” são sempre verificados em tempo de execução. Não é possível violar o sistema de tipos. |
| Compila para código intermediário | Sim. No caso da Microsoft compila para “Intermediate Language” e no Java para “bytecode”. |
| Tratamento de erro | Exceptions. |
| Reflections | Ambas as linguagens suportam “reflections”. |
| Unicode | Ambas as linguagens usam o padrão Unicode para representar caracteres e strings. |
| Classe que não pode ser herdada | “final” em Java; “sealed” em C#. |
| Campo constante | “static final” em Java; “const” em C#. |
| Operador que verifica compatibilidade de tipos | “instanceof” em Java; “is” em C#. |
Os aspectos acima são auto-explicativos e refletem o pensamento atual no desenvolvimento de software, especialmente o uso de orientação a objetos em um ambiente “gerenciado”, no qual o programa não pode danificar o ambiente de execução.
Novidades do C#
O C# tem diversas novidades que tornam o desenvolvimento de software mais fácil e produtivo, como mostrado a seguir:
| Recursos novos no C# | ||
| Característica | Java | C# |
| Compilado para código nativo | Raramente. O Java é quase sempre interpretado. | Sempre compilado para código nativo. A compilação pode ser feita na instalação ou na primeira execução do programa. |
| Todos os tipos derivados de ancestral comum | Não. | Sim, todos os tipos são derivados de object. |
| “Boxing” e “Unboxing” - conversão de tipos por valor para tipos por referência | Não. Exige conversão manual. | Sim. |
| Structs | Não. | Sim. |
| Enum | Não. | Sim. |
| Passagem de parâmetros por referência | Não. | Sim, de duas maneiras: ref para parâmetros de entrada e saída e out para parâmetro apenas de saída. |
| Propriedades | Não. Podem ser simuladas com métodos Get/Set, com alguma dificuldade. | Sim, diretamente. A criação de “componentes” é bastante facilitada. |
| Eventos e Delegates | Não, categoricamente (veja link abaixo). | Sim. Um “delegate” é um “ponteiro de função orientado a objetos”, permitindo a associação de um evento de uma classe ao código de outra de maneira conceitualmente simples e poderosa. |
| Atributos | Não. | Sim, permitindo “etiquetar” o código com características que são interrogadas em tempo de execução através de “reflection”. |
| Ponteiros | Não suportado diretamente, apenas indiretamente através de “referências”. | A princípio suporta referências, mas os ponteiros podem ser usados em código “inseguro” por questões de performance ou compatibilidade com DLLs. |
| Sobrecarga de operadores | Não. | Sim. |
| Operadores de conversão | Não. | Sim. |
| Operadores de cast | Um, sintaxe semelhante ao C/C++. | Dois, um semelhante ao C/C++ e o outro “as”. Um retorna null e outro dispara exception em casso de erro de conversão. |
| Inteiros sem sinal | Não. | Sim. |
| Tipo numérico pouco sujeito a erros de representação e arredondamento | Não. | Sim, o tipo decimal pode ser usado em softwares que não toleram facilmente erros de arredondamento, como programas de contabilidade |
| Forech: loop para varrer arrays e coleções | Não. | Sim. |
| Campo readonly | Não. | Sim. |
| Documentação integrada em XML | Não. | Sim, permitindo que o programador escreva facilmente a documentação enquanto programa. Este documentação pode depois ser extraída do fonte ou usada no próprio ambiente de desenvolvimento. |
| Switch com strings | Não. | Sim, facilitando o desenvolvimento. |
| Controle sobre “estouro de faixa” numérica | Não. | Sim. As palavras reservadas checked e unchecked permitem mudar o que o programa faz quando há um “estouro de faixa numérica”: o checked dispara uma exception; o unchecked não. |
| Funções com número variável de parâmetros | Não. | Sim, de forma “tipada”, com a palavra reservada params. |
| Formas do método Main | Uma. | Quatro. O main pode aceitar um array de strings ou nada; pode retornar inteiro ou nada. |
| Goto | Não. | Sim, com a restrição de que não pode entrar em um bloco. |
| Arquivo “executável” independente do namespace | Um “package” Java obrigatoriamente está associado a um único arquivo “.class”. | Não existe relação direta entre o “namespace” e a DLL que o implementa, dando mais flexibilidade ao desenvolvedor na hora de quebrar seus projetos em pedaços menores. |
| Especificadores de acesso | Quatro. | Cinco. O internal, adicional, especifica acesso apenas no mesmo “assembly” (mesma DLL, a grosso modo). |
| Diretivas de compilação condicional (#ifdef etc) | Não. | Sim. |
| Destrutores | Não, mas o método Finalize pode ser usado. | Sim. |
| Padronização por algum organismo internacional | Não. Duas submissões da Sun foram posteriormente retiradas. | Sim. Submetido e aceito pelo ECMA (http://www.ecma.ch). |
| Chama APIs do Windows e DLLs | Não. Mesmo o suporte “nativo” de alguns compiladores é extremamente limitado pela falta de ponteiros na linguagem. | Sim. |
| Chama objetos COM/COM+ | Não. | Sim. |
| Cria objetos COM/COM+ | Não. | Sim. |
Existem alguns pontos importantes por trás dos tópicos acima:
- O C# implementa características interessantes do C++ que foram removidas no Java, como passagem de parâmetros por referência, enum, struct, sobrecarga de operadores, operadores de conversão e compilação condicional;
- O C# tem vários recursos que melhoram a performance, como uso de “tipos por valor” (structs e enums) em situações simples onde o uso de uma classe seria muito “caro” e suporte direto a ponteiros;
- Suporte direto a componentes, através de a propriedades e eventos;
- A unificação do sistema de tipos (tudo é derivado de object) e a conversão de valores para referências através de “boxing” são recursos que, ao mesmo tempo simplificam a programação, como também permitem melhores abstrações;
- Boa integração com código anterior escrito para Windows: suporte a ponteiros, chamar DLLs, chamar objetos COM e criar objetos COM. Não é necessário abandonar o C# para usar alguma facilidade não contemplada pela biblioteca de classes;
- Diversos recursos que facilitam a programação, como switch com strings, “loop” foreach para varrer todos os elementos de uma coleção ou array, campo readonly;
Conclusão
Embora compartilhe características com o Java, o C# é uma linguagem que traz vários recursos muito interessantes que não ou existem no Java ou dão muito trabalho para implementar ou têm performance ruim.
Leitura interessante na Web
Introdução ao C#:
http://msdn.microsoft.com/vstudio/nextgen/technology/csharpintro.asp
Artigo da MSDN Magazine:
http://msdn.microsoft.com/msdnmag/issues/0900/csharp/csharp.asp
Artigo da Doctor Dobb’s Journal sobre C#:
http://www.ddj.com/articles/2000/0065/0065g/0065g.htm
Site de C# da O’Reyley, com vários artigos comparativos:
http://www.oreillynet.com/topics/dotnet/csharp.net
Artigo da Sun “explicando” porque o Java não tem nem terá delegates:
http://java.sun.com/docs/white/delegates.html
Resposta da Microsoft mostrando porque os delegates são úteis:
http://msdn.microsoft.com/archive/default.asp?url=/ARCHIVE/en-us/dnarvj/html/msdn_deltruth.asp
Sobre o prêmio da DDJ a Anders Hejlsberg, o criador do C#:
http://www.ddj.com/articles/2001/0105/0105a/0105a.htm
Entrevista de Anders Hejlsberg:
http://www.dnjonline.com/teched2001/Hejlsberg_head2head.html
Mais uma entrevista com Anders Hejlsberg:
http://news.cnet.com/news/0-1003-200-5677521.html?tag=tp_pr
http://www.ddj.com/columns/stob/2001/0106vs001.htm
Camping 1(C) - Conteúdo
No compilador Turbo C/C++ tem uma biblioteca para criar programas gráficos.
Ele oferece várias funções, como por exemplo, mudar paleta de cores, desenhar linhas e circulos, colocar pontos na tela, copiar imagens na tela e etc...
Um exemplo de um programa gráfico:
// inicio
#include
#include
#include
#include
#define PATH ""
// troque a linha acima pelo diretorio do driver
int driver = DETECT, mode;
void main(void) {
int result;
initgraph(&driver, &mode, PATH);
result = graphresult();
if (result!=grOk) {
printf("Erro: %s.\n", grapherrormsg(result));
exit(1);
}
line(100,100,200,200);
rectangle(10,10,20,20);
setfillstyle(LTBKSLASH_FILL, RED);
bar(300,300,400,400);
setcolor(RED);
outtextxy(300,300, "Oi!");
getch();
closegraph();
}
// fim
Agora para compilar o programa, digite o seguinte comando:
C:\>tcc nomearq.c graphics.lib
(...)
C:\>
Ao rodar o programa, se der uma mensagem ("Erro: ????."), você deve copiar um driver, se por exemplo o seu vídeo é o VGA, você deve procurar o arquivo "egavga.bgi" e copiar no mesmo diretório.
Este é um exemplo muito básico, existe alguns outros comandos, dê uma olhada:
void circle(int x, int y, int radius);
void setrgbpalette(int color, unsigned r,unsigned g,unsigned b);
void outtext(char *text);
int imagesize(int x,int y,int x1,int y1);
void getimage(int x,int y,int x1,int y1, void*b);
void putimage(int x,int y,void*b,int c);
void moveto(int x,int y);
void putpixel(int x,int y,int color);
Se quiser mais informações, digite o seguinte comando:
C:\>thelp
E depois aperte a tecla '5'.
é isso ae pessoal!!!
Camping 1(XML) - Conteúdo
Pessoal, XML é o Codigo de Internet Pré Programavel, e Lucas, pare de mandar Torpedos pedindo as respostas das provas de PHP Super Codificados, eu só darei para quem fez a prova! Quem lê o significado da sigla XML - Extensible Markup Language - pode ser levado a pensar que é apenas uma linguagem a mais, como tantas outras. Entretanto, a palavra chave em XML, o "X" da questão, é "extensível". Isso significa que XML está em um nível de abstração onde ela é considerada uma meta-linguagem. Em termos mais simples, uma meta linguagem é capaz de permitir a criação de outras linguagens. Esta criação se dá basicamente pela definição de novos conjuntos de tags, e pelas regras que um documento XML deve seguir.
É importante perceber que XML é um meio e não um fim, ou seja, não basta criar novas tags, é necessário também definir o que elas significam e como um dado programa deve interpretá-las. Para darmos um exemplo, seja o seguinte fragmento de HTML descrevendo uma faixa de um CD:
<dl>
<dt>Gente Humilde
<dd>por Chico Buarque, Vinícius de Moraes e Garoto
<ul>
<li>produtor: Chico Buarque
<li>gravadora: Polygram
<li>duraþÒo: 3min 21 seg
<li>gravado em 1974
<li>intÚrprete: Chico Buarque
</ul>
É uma tendência natural em muitos artigos e livros mostrar o mesmo exemplo em XML, como se segue:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
<MUSICA>
<TITULO>
Gente Humilde</TITULO>
<COMPOSITOR>
Chico Buarque</COMPOSITOR>
<COMPOSITOR>
Vinícius de Moraes</COMPOSITOR>
<COMPOSITOR>
Garoto</COMPOSITOR>
<PRODUTOR>
Chico Buarque</PRODUTOR>
<GRAVADORA>
Polygram</GRAVADORA>
<DURACAO>
3min 21seg </DURACAO>
<ANO>
1974</ANO>
<INTERPRETE>
Chico Buarque</INTERPRETE>
</MUSICA>
Não há nada errado com o exemplo, aliás ele parece fazer sentido e ser fácil de entender. O que está sutilmente subentendido é que neste caso você, o leitor, está fazendo o processamento XML de forma até mesmo inconsciente. O fato de usarmos tags como MUSICA ou TITULO é apenas uma conveniência para nós, humanos, podermos ler e entender melhor.
Mas XML aceitaria perfeitamente um documento como:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&gt;
<M>
<T321>
Gente Humilde</T321>
<CP>
Chico Buarque</CP>
<CP>
Vinícius de Moraes</CP>
<CP>
Garoto</CP>
<PD>
Chico Buarque</PD>
<GDA>
Polygram</GDA>
<DR>
3min 21seg </DR>
<a>1974</a>
<IP>
Chico Buarque</IP>
</M>
O fato é, um documento XML necessita de alguém, ou algum programa, que o processe, transformando-o seja em uma página HTML, seja usando o conteúdo para inserir num banco de dados ou usar como um comando.
Este é o acordo que deve existir entre os chamados "produtor" e "consumidor", ou seja, quem cria e quem processa documentos XML.
Processando um documento XML
Para processarmos um documento XML, em primeiro lugar devemos definir qual nosso objetivo. No caso mais comum, desejamos simplesmente apresentar o documento num browser. Isto significa efetuar uma transformação nos tags XML em tags reconhecidos por HTML. Fazemos isso através de um programa que vai percorrer o documento XML, reconhecer cada tag e determinar qual a saída desejada.
É neste ponto que a chance de confusão aparece. Há diversas maneiras de fazer este processamento, tanto implícitas como explícitas. Por implícita entende-se que o browser fará a transformação internamente. Por explícita entende-se que escreveremos um programa especializado. As transformações mais comuns são as implícitas, através de CSS e XSL. Isto quer dizer que browsers mais modernos são capazes de aceitar documentos XML e CSS (ou XSL), efetuando a apresentação. Neste caso, a programação é feita de maneira declarativa: a cada tag XML corresponde uma ou mais tags HTML, e no caso de XSL podemos inclusive determinar as tags HTML em função do contexto.
Em outra situação, podemos nós mesmos criar um programa para processar o documento XML, por exemplo para inserir seu conteúdo em um banco de dados. Para tanto, temos que percorrer as tags, e processá-las. Para facilitar nossa vida, como XML é estruturalmente simples e bem definida, há vários programas shareware disponíveis para fazer o processamento inicial (reconhecer as tags), chamados de parsers. As duas ferramentas mais conhecidas são o DOM (a Microsoft oferece um objeto COM para tratar), e SAX (usado mais comumente com Java).
Conclusão
XML é muito mais que uma linguagem. É uma nova maneira de definir informação. Quanto melhor entendermos seus objetivos, melhor poderemos usá-lo de maneira efetiva. Não se intimide pela "sopa de letras" - XHTML, XSLT, etc. Cada uma destas siglas define um vocabulário e um processamento específico para documentos XML.
