Programação Aplicada de Computadores. Trabalho 1 Freecell
|
|
|
- Ana Sofia Avelar Ribeiro
- 9 Há anos
- Visualizações:
Transcrição
1 Programação Aplicada de Computadores Trabalho 1 Freecell 1. Objetivo O objetivo deste trabalho é implementar o jogo Freecell utilizando a estrutura de dados Pilha (stack). Freecell é um jogo de cartas que tem por finalidade agrupar todas as cartas de mesmo naipe (paus, copas, ouro ou espada) em 4 pilhas, seguindo algumas regras. O primeiro passo para começar o jogo é embaralhar as cartas e distribuí las sobre a mesa. A figura abaixo representa uma configuração inicial da mesa. As cartas são embaralhadas e distribuídas em 8 pilhas (nomeadas aqui como pilhas A, B, C,..., H); Há 4 pilhas na mesa (nomeadas aqui como 0, 1, 2 e 3) onde pode se agrupar as cartas pelo naipe; Há ainda 4 espaços reservas (nomeados aqui como W, X, Y e Z) para que se possa colocar uma carta de quaisquer pilhas; A idéia é movimentar todas as cartas contidas nas pilhas A,..., H para as pilhas 0,..., 3, podendo se utilizar os espaços W,..., Z para armazenamento temporário de cartas. Algumas regras devem ser seguidas: A ordem crescente das cartas é: A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K; A inserção de cartas nas pilhas A,..., H deve respeitar a ordem decrescente e ainda duas cartas adjacentes não devem ter a mesma cor: preta (paus e espada) e vermelha (ouro e copas). Como exemplo, a seguinte ordem de cartas é aceita: Rei de paus (K), Dama de ouro (Q), Valete de espada (J), 10 de ouro, 9 de espada, 8 de copas. Assim a última carta colocada na pilha é 8 de copas. Se a
2 pilha estiver vazia, qualquer carta é aceita; Em cada uma das pilhas 0,..., 3 deve haver apenas cartas de mesmo naipe e em ordem crescente: por exemplo, na pilha 0, primeiro deve se colocar um às de copas, depois, sobre o às de copas, deve se colocar um 2 de copas, e assim por diante; Cada espaço W,..., Z pode armazenar no máximo uma carta; As cartas devem ser movimentadas seguindo a definição de pilhas: a última carta colocada na pilha deve ser a primeira a ser retirada da pilha. 2. Implemetação O seu trabalho é fazer um programa em C que implemente ao menos uma estrutura pilha (com métodos push e pop) e simule o jogo Freecell. O nome das 52 cartas já embaralhadas e os comandos de movimentação de cartas serão repassados ao programa pela entrada padrão (stdin). O nome de uma carta é formado por 2 caracteres: o primeiro caracter indica o naipe da carta ('0' = copas, '1' = paus, '2' = ouro, '3' = espada) e o segundo caracter indica o valor da carta ('A' = às, 'B' = 2, 'C' = 3,..., 'J' = 10, 'K' = Valete, 'L' = Dama, 'M' = Rei). Por exemplo, '1K' refere se à carta Valete de paus. Inicialmente, essas cartas devem ser colocadas nas pilhas A,..., H uma a uma, ou seja, a primeira carta do baralho deve ir para a pilha A, a segunda deve ir para a pilha B, e assim por diante até a pilha H e retornando para A. Esse processo deve ser feito para todas as 52 cartas de entrada. Um comando de movimentação de carta de um lugar para outro é também formado por 2 caracteres. O primeiro caracter indica a pilha (ou espaço) de origem (de onde deve se retirar uma carta) e o segundo caracter indica a pilha (ou espaço) de destino (onde a carta deve ser colocada). Por exemplo, o comando 'A0' indica que deve se retirar uma carta da pilha A e colocá la na pilha 0, e o comando '0X' indica que deve se retirar a carta que está na pilha 0 e colocá la no espaço X. Qualquer movimentação inválida deve ser simplesmente ignorada. O comando '' indica que deve ser impresso na tela o estado atual das pilhas A,..., H. O estado de uma pilha é o nome da última carta colocada na pilha ('' indica pilha vazia). Entrada: Veja o exemplo a seguir: 0A 0B 0C 0D 0E 0F 0G 0H 0I 0J 0K 0L 0M 1A 1B 1C 1D 1E 1F 1G 1H 1I 1J 1K 1L 1M 2A 2B 2C 2D 2E 2F 2G 2H 2I 2J 2K 2L 2M 3A 3B 3C 3D 3E 3F 3G 3H 3I 3J 3K 3L 3M HW H0
3 CX CY CZ C1 C2 Z1 Z3 1H 3G Saída: 3J 3K 3L 3M 3F 3G 3H 3A 3J 3K 3L 3M 3F 3G 3H 2F 3. Documentação Você deverá documentar seu trabalho no arquivo LEIAME.txt. Sua documentação deve conter: Introdução: descricao do problema a ser resolvido e visão geral sobre o funcionamento do programa. Implementação: descrição da implementação do programa (devem ser detalhadas as estruturas de dados implementadas, o funcionamento das principais funções utilizadas, o formato de entrada e saida de dados, bem como as decisões tomadas relativas aos casos e detalhes de especificação que porventura estejam omissos no enunciado). Conclusão: comentarios gerais sobre o trabalho e as principais dificuldades encontradas em sua implementação. Bibliografia: bibliografia utilizada.
4 4. Avaliação A nota do trabalho terá um total de 10 pontos, sendo 2 pontos para a documentação. A pontuação restante será calculada automaticamente de acordo com a percentagem de erros/acertos em um benchmark pré definido; Serão contemplados com nota zero os trabalhos que se enquadrarem em uma ou mais situações abaixo: Plágio; Programa não compila; Não está de acordo com as especificações (a não utilização de pilhas, por exemplo). 5. Entrega Este trabalho deve ser feito em grupo de até 2 componentes e entregue até o dia 25/09/2011, às 23:59:59hs. Ele deve ser enviado para [email protected]. O assunto da mensagem deve ser : prog3:trab1:<nome1>:<nome2> Ex: prog3:trab1:jociel Andrade:Mariella Berger O nome do arquivo com o trabalho enviado em anexo deve ser trab1.tar.gz. Ele será descompactado da seguinte forma: tar xvzf trab1.tar.gz e deverá gerar um arquivo chamado Makefile, com as regras de compilação do programa, o arquivo com o código do programa e o arquivo de documentação LEIAME.txt. Ao digitar: make all deve ser gerado um executável chamado trab1. O recebimento dos trabalhos é automatizado. Siga as instruções à risca pois algum erro na submissão pode inviabilizar a entrega do seu trabalho. Não escreva o seu nome com caracteres estendidos (á, ç, etc.). Não utilize contas de e mail do HOTMAIL, TERRA ou BOL pois as mensagens enviadas por esses servidores não seguem o padrão. Assim, o programa de recebimento automático não consegue detectar o seu e mail.
5 Não deixe para entregar seu trabalho no último instante. Você poderá perder o prazo e ter seu trabalho invalidado. 3. Considerações Importantes Modularize o seu código adequadamente. Crie arquivos.c e.h para cada módulo do seu sistema. Em especial, crie arquivos exclusivos para manipular as estruturas de dados dos tipos abstratos de dados que você estiver representando. Seu programa deve ser, obrigatoriamente, compilado com o utilitário make. Crie um arquivo Makefile que gere como executável para o seu programa um arquivo de nome trab1. Não utilize variáveis globais em seu programa. Otimize seu código. Crie códigos claros e organizados. Utilize um estilo de programação consistente. Comente o seu código extensivamente. Isto ajudará no momento da correção. 4. Observação Importante Mais detalhes serão discutidos em sala de aula. Considerações feitas em sala terão mais relevância do que as contidas nesta especificação. 6. Referências 7. Dúvidas KDE Patience Game (KPatience para Linux) 1995, Paul Olav Tvete Em caso de dúvidas no trabalho contate nos.
Programação II. Trabalho 2 Freecell
Programação II Trabalho 2 Freecell 1. Objetivo O objetivo deste trabalho é implementar o jogo Freecell utilizando o Tipo Abstrato de Dados (TAD) Pilha (stack). Freecell é um jogo de cartas que tem por
Estrutura de Dados Prof. a Mariella Berger. Trabalho 2 - Freecell
Estrutura de Dados Prof. a Mariella Berger Trabalho 2 - Freecell 1. Objetivo O objetivo deste trabalho é implementar o jogo Freecell utilizando a estrutura Pilha (stack). Freecell é um jogo de cartas que
Compiladores Prof. a Mariella Berger. Trabalho 2 Analisador Léxico
Compiladores Prof. a Mariella Berger Trabalho 2 Analisador Léxico 1. Objetivo O objetivo deste trabalho é a criação de um analisador léxico para a linguagem Pascalito, um subconjunto modificado da linguagem
Estruturas de Dados II. Caixeiro Viajante
Estruturas de Dados II Prof. a Mariella Berger Caixeiro Viajante 1. Objetivo O objetivo deste trabalho é implementar diferentes soluções para o problema clássico do Caixeiro Viajante. 2. Introdução O Problema
Trabalho de LP 15/07/2013. Prof. Flávio Miguel Varejão
15/07/2013 Trabalho de LP Prof. Flávio Miguel Varejão OBSERVAÇÃO IMPORTANTE: LEIA ATENTAMENTE TODA A ESPECIFICAÇÃO DO TRABALHO E INSTRUÇÕES DE SUBMISSÃO DE MODO A NÃO COMETER ENGANOS POR DESATENÇÃO E SER
08/09/10. Atividade Supervisionada: Programação de Computadores. Profa.: Alessandra Bussador
08/09/10 Atividade Supervisionada: Programação de Computadores Profa.: Alessandra Bussador Leia atentamente TODO o enunciado do trabalho (a especificação do problema e os detalhes sobre a confecção, submissão
Universidade Federal do Espírito Santo - CT - DI Trabalho Computacional - PD II - Engenharia Elétrica Profa. Maria Cristina Rangel
Universidade Federal do Espírito Santo - CT - DI Trabalho Computacional - PD II - Engenharia Elétrica Profa. Maria Cristina Rangel Considere o esboço do estado do ES e n = 30 cidades enumeradas de 1, 2,...,
Sistema Rodoviário Tabajara
Universidade Federal do Espírito Santo Departamento de Informática Est. de Informação (INF02827) & Est. de Dados (INF01906) 2 o Trabalho Prático Período: 2008/2 Prof a Patrícia Dockhorn Costa Email: [email protected]
SME Introdução à Programação de Computadores Primeiro semestre de Trabalho: jogo Semáforo
SME0230 - Introdução à Programação de Computadores Primeiro semestre de 2017 Professora: Marina Andretta ([email protected]) Monitores: Douglas Buzzanello Tinoco ([email protected]) Amanda Carrijo
Trabalho Prático Data de Entrega : 30 de Maio
Escola Superior de Tecnologia / Instituto Politécnico de Setúbal Algoritmos e Tipos Abstractos de Informação 2005/2006 Trabalho Prático Data de Entrega : 30 de Maio O problema Pretende-se realizar um jogo
Trabalho Prático 2 Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas
Disciplina: Algoritmos e Estrutura de Dados I CIC / 9 Trabalho Prático Mundo dos Blocos Alocação Dinâmica / Listas Encadeadas Valor:,5 pontos (5% da nota total) Documentação não-latex: -, pontos Impressão
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores
Universidade Federal de Goiás Bacharelado em Ciências da Computacão Compiladores 2013-2 Compilador para a Linguagem Cafezinho Especificação dos trabalhos: T2 (Geração da Representação Intermediária e Análise
Guia de atividades para uma aula sobre Energia Mecânica e sua Conservação utilizando analogias
Guia de atividades para uma aula sobre Energia Mecânica e sua Conservação utilizando analogias Vitor Ribeiro de Souza Antônio Carlos Fontes dos Santos Material instrucional associado à dissertação de Mestrado
Manual do Tenente Skat. Martin Heni Eugene Trounev Revisor: Mike McBride Tradução: Marcus Gama Revisão: Stephen Killing
Martin Heni Eugene Trounev Revisor: Mike McBride Tradução: Marcus Gama Revisão: Stephen Killing 2 Conteúdo 1 Introdução 5 2 Como jogar 6 3 Regras do jogo, estratégias e dicas 7 3.1 A tela do jogo........................................
Indexação e Busca. O objetivo deste trabalho é projetar e implementar um sistema de programas para indexação e busca em arquivos de texto.
Universidade Federal do Espírito Santo Departamento de Informática Estruturas de Dados 2017/1 Profa. Claudine Badue Trabalho 2 1. Objetivo Indexação e Busca O objetivo deste trabalho é projetar e implementar
Microprocessadores I ELE Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS -
Microprocessadores I ELE 1078 Conjunto de Instruções do Microprocessador 8085 Aula 9 - PILHA E SUBROTINAS - 9.1 - Grupos de Instruções As instruções no 8085 são distribuídas em 5 grupos: 1. Grupo de transferência
Algoritmos e Estruturas de Dados II. Trabalho Prático 4
Algoritmos e Estruturas de Dados II Trabalho Prático 4 Entrega: 23/11/09 Devolução: 10/12/09 (sem possibilidade de entrega com atraso) Trabalho em dupla Prof. Jussara Marques de Almeida Problema 1: Construção
Algoritmos Lógica e Programação Prof. Me. Adelson Felipe Dias Nogueira
Algoritmos Lógica e Programação 2016-2 Prof. Me. Adelson Felipe Dias Nogueira E-mail: [email protected] PORTUGUES ESTRUTURADO o o o o Para que o algoritmo possa ser executado por uma máquina
GRADUAÇÃO EM ANÁLISE E DESENVOLVIMENTO PROGRAMAÇÃO DE COMPUTADORES I Trabalho Final Anual TFA
GRADUAÇÃO EM ANÁLISE E DESENVOLVIMENTO PROGRAMAÇÃO DE COMPUTADORES I Trabalho Final Anual TFA Introdução O TFA tem por objetivo avaliar todo o conhecimento adquirido pelo aluno ao longo das disciplinas
Inteligência Artificial Projecto 1
Bantumi ESPECIFICAÇÕES O projecto destina-se a resolver um conjunto de problemas do jogo Bantumi utilizando métodos de procura em espaço de estados. Bantumi é um jogo derivado do jogo Mancala de origem
Trabalho Computacional Jogo da Forca
Universidade Federal do Espírito Santo Centro Tecnológico Trabalho Computacional Jogo da Forca PET Engenharia de Computação 1. Introdução: Você será responsável por implementar o Jogo da Forca como trabalho
Manual do KPatience 2
Paul Olav Tvete Maren Pakura Stephan Kulow Revisor: Mike McBride Desenvolvedor: Paul Olav Tvete Desenvolvedor: Stephan Kulow Tradução: Marcus Gama Revisão: Stephen Killing 2 Conteúdo 1 Introdução 5 2 Como
SCC-ICMC-USP. Trabalho em Grupo 1 SCC-0205
Trabalho em Grupo 1 SCC-0205 2 o. Semestre de 2010 Professor: João Luís G. Rosa - e-mail: [email protected] Monitor PAE: Fernando Alva - e-mail: [email protected] versão 1-23/8/2010 1 Objetivo Desenvolver
Ferramenta automática de correção de códigos em C Elgio Schlemer Setembro de 2017
Ferramenta automática de correção de códigos em C Elgio Schlemer Setembro de 2017 Este manual visa ensinar a como realizar um programa que possa ser testado na ferramenta automática desenvolvida pelo professor.
Identificadores Nome de variáveis, constantes, métodos, etc...
IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos Token genérico / Lei de formação bem definida Podem possuir limitações de tamanho e/ou valor Possuem valor semântico o token deve ser acompanhado
Desenvolvimento de programas. Análise do problema. Análise do problema. Análise do problema. Desenvolvimento do algoritmo. Codificação do programa
Desenvolvimento de programas 1 Análise do problema Desenvolvimento do algoritmo Codificação do programa Compilação e execução Teste e depuração Análise do problema 2 Conhecer exatamente o que o problema
IV.2 Aspectos Léxicos Convencionais
IV.2 Aspectos Léxicos Convencionais Classes de símbolos Genéricos - Token genérico / Lei de formação bem definida - Limitações de tamanho e/ou valor - Possuem valor semântico o token deve ser acompanhado
Aula 01 Algoritmos e lógica de programação e introdução ao C++
Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: José Martins de Castro Neto Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições
É neste ponto que entra o conceito de lógica de programação.
AULA 01 OBJETIVO: Desenvolvimento e solução de Algoritmos. LÓGICA DE PROGRAMAÇÃO A lógica é a ciência do pensamento correto. Esta declaração não implica, contudo, em afirmar que ela seja a ciência da verdade.
Ambiente de desenvolvimento
Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa
Se a senha tem de 2 a 30 caracteres. Se tiver mais ou menos caracteres, ela não será válida e deve mostrar a mensagem de erro abaixo:
SCC 204 Programação Orientada a Objetos Trabalho 1 Todos os trabalhos da disciplina são parte de um projeto que envolve o desenvolvimento de um Comunicador Instantâneo. Nesta primeira etapa deve se desenvolver:
Universidade Estadual do Oeste do Paraná UNIOESTE Campus de Cascavel Colegiado de Ciência da Computação. Algoritmos Trabalho 3º Bimestre
Universidade Estadual do Oeste do Paraná UNIOESTE Campus de Cascavel Colegiado de Ciência da Computação Algoritmos Trabalho 3º Bimestre 1) A utilização de jogos de baralho tem sido um entretenimento muito
III Congresso Regional de Emergências Médicas (CREMED-CO)
III Congresso Regional de Emergências Médicas (CREMED-CO) EDITAL PARA SUBMISSÃO E APRESENTAÇÃO DE TRABALHOS ACADÊMICOS Este edital é referente ao envio de trabalhos para o III Congresso Regional de Emergências
Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti
Aula 8 Especificação de Requisitos
Aula 8 Especificação de Requisitos Alessandro Garcia Abril 2017 Recados Enunciado do trabalho prático (T2) já está disponível no sítio da disciplina: http://www.inf.puc-rio.br/~inf1301/ Enviem mensagem
Adição de probabilidades. O número de elementos da união dos conjuntos A e B n(aub) = n(a B) Dividindo os dois membros por n(e):
Adição de probabilidades O número de elementos da união dos conjuntos A e B n(aub) = n(a B) Dividindo os dois membros por n(e): Dois eventos A e B são ditos mutuamente exclusivos se, e somente se, A B
Gauss-Seidel para Solução de Sistemas com Matrizes Banda Usando Armazenamento Especial
Universidade Federal do Espírito Santo Departamento de Informática Algoritmos Numéricos 2016/2 Profa. Claudine Badue Trabalho 1 Objetivos Gauss-Seidel para Solução de Sistemas com Matrizes Banda Usando
Pseudocódigo e Visualg
Pseudocódigo e Visualg Professor: Alex Sandro Forghieri [email protected] Agenda Revisão Algoritmos Estrutura de dados Estrutura básica de um algoritmo em pseudocódigo Teste de mesa Operadores
MAC 115 Introdução à Ciência da Computação ROTHELO
MAC 115 Introdução à Ciência da Computação INSTITUTO DE FÍSICA - BACHARELADO NOTURNO SEGUNDO SEMESTRE DE 2010 Terceiro Exercício-Programa (EP3) Data de entrega: até 06 de dezembro de 2010 (2a.feira) ROTHELO
Estruturas de Dados com Jogos. Capítulo 2 Pilhas - Alocação Sequencial e Estática
Estruturas de Dados com Jogos Capítulo 2 Pilhas - Alocação Sequencial e Estática Seus Objetivos neste Capítulo Entender o que é e para que serve uma estrutura do tipo Pilha; Entender o significado de Alocação
Trabalho Prático. Descrição Considere os seguintes dados a respeito de uma pessoa:
Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Ciências de Computação Disciplina de Organização de Arquivos Profa. Dra. Cristina Dutra de Aguiar Ciferri Trabalho
TCC 00308: Programação de Computadores I Organização de programas em Python
TCC 00308: Programação de Computadores I 2017.1 Organização de programas em Python Vamos programar em Python! Como um programa é organizado? Quais são os tipos de dados disponíveis? Como variáveis podem
Métodos de implementação de linguagens. Kellen Pinagé
Métodos de implementação de linguagens Kellen Pinagé Sumário Métodos de implementação de linguagens Compilação Interpretação pura Híbrido Métodos de implementação de linguagens Principais componentes de
Questão 01 (Neilor Tonin) Aula Prática 3: Estrutura Condicional. Entrada. Saída. Exemplo de entrada e Saída. - Procedimento para a entrega:.
BCC201 Introdução à Programação (2016-01) Departamento de Computação - Universidade Federal de Ouro Preto - MG Professor: Reinaldo Fortes (www.decom.ufop.br/reinaldo) Estagiário docente: Washington Silva
PROGRAMAÇÃO DE COMPUTADORES I BCC Aula Prática 15
Exercício 1 PROGRAMAÇÃO DE COMPUTADORES I BCC701 2017-1 Aula Prática 15 No jogo Inventei, cada posição do tabuleiro é representada por suas coordenadas x e y e contém um número. O tabuleiro pode ser representado
PCI - Programação de Computadores I Trabalho Avaliativo - Semestral. Palavras Cruzadas
PCI - Programação de Computadores I Trabalho Avaliativo - Semestral Considerações! O trabalho semestral pode ser resolvido em dupla ou individual;! O(s) aluno(s) deve(m) ter total conhecimento sobre o
1/16 MAKEFILES Makefiles Programação II
1/16 MAKEFILES Definição 2/16 Definição O makefile - é um arquivo para configuração de compilação utilizado pelo programa make, - a ideia é simplificar e agilizar a compilação de programas. Vantagens e
Abaixo seguem os comandos e suas particularidades, bem como exemplos para o indicador de linha
Trabalho II de CI067 - Oficina de Computação 2º Semestre - 2018 Tema: Editor compactador de arquivos Data de Entrega: 1. Introdução O editor a ser implementado edit([arquivo]) edita arquivos de texto ASCII.
Algoritmos e Programação
Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes [email protected] 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;
