lista de Estrutura de Dados II

2
Universidade Federal do Piauí – UFPI Campus Senador Helvídio Nunes de Barros – CSHNB Curso de Sistemas de Informação Bloco: III Disciplina: Estruturas de Dados Professora: Juliana Oliveira de Carvalho Acadêmico:..................................................................................................Matrícula:............................ SEGUNDA LISTA DE EXERCÍCIOS DE ESTRUTURAS DE DADOS 1. Faça um programa em C que use pilha dinâmica para converter e calcular o valor de uma expressão matemática do modo pós-fixa para infixa. E depois mostre na tela o resultado da expressão e como a expressão fica no modo pós-fixa. 2. Escalonador é uma parte do Sistema Operacional que escolhe de uma fila de prontos o próximo processo a ocupar o processador. Suponha que nosso escalonador mantenha 3 filas dinâmicas, de acordo com a prioridade do processo. Cada processo possui as seguintes informações: o seu número, o tempo de processamento que o mesmo necessita em segundos e a prioridade do mesmo para que ele possa ser inserido na fila de acordo com a sua prioridade. O processador deve sempre executar primeiro os processos da fila de maior prioridade e somente passar para outra fila quando todos os processos da fila atual tiver sido executado pelo menos 2 vezes, ou ficar vazia. Quando o processador retira o primeiro processo da fila para usar o processador, o mesmo só pode ficar 1s utilizando o processador, terminado este tempo o escalonador diminui de 1 o tempo de processamento deste processo e verifica seu valor. Se o valor do tempo de processamento atual for 0, o processo é finalizado, ou seja, retirado da fila, caso contrário, será verificado quantas vezes o processo passou nesta fila para decidir em qual fila o mesmo será inserido. Se o processo passou somente 1 vez será colocado ao final da mesma fila, se passou 2 vezes será colocado ao final da próxima fila de prioridade abaixo da atual. Caso ele já esteja na última fila, ou seja, na fila de menor prioridade, o processo será inserido ao final desta fila até que o mesmo termine independente do número de vezes que já passou por ela. Faça um programa em C que tenha um menu de opções para inserir processos em uma fila do escalonador, para o escalonador escolher o processo(caso não existia nenhum processo na fila emitir uma mensagem), para mostrar os processos das filas, para mostrar o próximo processo que irá utilizar o processador, mostrar quantos processos tem em cada fila, para mostrar quanto tempo falta para executar os processos de uma determinada fila e para mostrar quanto tempo de processamento ainda falta para chegar em um determinado processo e mostrar quanto tempo de processamento ainda restam para terminar cada fila e todas as filas. 3. Faça um programa em C que simule processos na memória do computador para isso, com as seguintes opções de menu: 1. Cadastrar dados da memória e da página: definir o tamanho da memória em bytes; o tamanho de cada página da memória, também em bytes. 2. Inserção na Lista de Processos: inserir os dados do processo em uma lista ordenada e duplamente encadeada, contendo as seguintes informações: número do processo, o tamanho em páginas do processo, último acesso ao processador em unidades de tempo (0 caso ainda não tenha acessado, ou seja, no ato da inserção, e valores inteiros para os próximos acesso pode manter um contador para todas vezes que executar um processo aumentar em 1 a unidade de tempo de último acesso), e por fim se o mesmo foi ou não modificado. 3. Executar um processo: verificar se o mesmo já está na memória, através da lista de processos. Se estiver na memória executar processo significará atualizar dados. Atualizar dados significa mudar último acesso e informar se se o processo sofreu ou não modificado/atualização. Se o processo não estiver na memória, ou seja na lista de processos, verificar se o mesmo cabe na memória, somando

Transcript of lista de Estrutura de Dados II

Page 1: lista de Estrutura de Dados II

Universidade Federal do Piauí – UFPICampus Senador Helvídio Nunes de Barros – CSHNBCurso de Sistemas de Informação Bloco: IIIDisciplina: Estruturas de DadosProfessora: Juliana Oliveira de CarvalhoAcadêmico:..................................................................................................Matrícula:............................

SEGUNDA LISTA DE EXERCÍCIOS DE ESTRUTURAS DE DADOS

1. Faça um programa em C que use pilha dinâmica para converter e calcular o valor de uma expressãomatemática do modo pós-fixa para infixa. E depois mostre na tela o resultado da expressão e como aexpressão fica no modo pós-fixa.

2. Escalonador é uma parte do Sistema Operacional que escolhe de uma fila de prontos o próximo processo aocupar o processador. Suponha que nosso escalonador mantenha 3 filas dinâmicas, de acordo com aprioridade do processo.

Cada processo possui as seguintes informações: o seu número, o tempo de processamento que o mesmonecessita em segundos e a prioridade do mesmo para que ele possa ser inserido na fila de acordo com a suaprioridade.

O processador deve sempre executar primeiro os processos da fila de maior prioridade e somente passarpara outra fila quando todos os processos da fila atual tiver sido executado pelo menos 2 vezes, ou ficarvazia.

Quando o processador retira o primeiro processo da fila para usar o processador, o mesmo só pode ficar 1sutilizando o processador, terminado este tempo o escalonador diminui de 1 o tempo de processamentodeste processo e verifica seu valor. Se o valor do tempo de processamento atual for 0, o processo éfinalizado, ou seja, retirado da fila, caso contrário, será verificado quantas vezes o processo passou nestafila para decidir em qual fila o mesmo será inserido. Se o processo passou somente 1 vez será colocado aofinal da mesma fila, se passou 2 vezes será colocado ao final da próxima fila de prioridade abaixo da atual.Caso ele já esteja na última fila, ou seja, na fila de menor prioridade, o processo será inserido ao final destafila até que o mesmo termine independente do número de vezes que já passou por ela.

Faça um programa em C que tenha um menu de opções para inserir processos em uma fila do escalonador,para o escalonador escolher o processo(caso não existia nenhum processo na fila emitir uma mensagem),para mostrar os processos das filas, para mostrar o próximo processo que irá utilizar o processador, mostrarquantos processos tem em cada fila, para mostrar quanto tempo falta para executar os processos de umadeterminada fila e para mostrar quanto tempo de processamento ainda falta para chegar em umdeterminado processo e mostrar quanto tempo de processamento ainda restam para terminar cada fila etodas as filas.

3. Faça um programa em C que simule processos na memória do computador para isso, com as seguintesopções de menu:

1. Cadastrar dados da memória e da página: definir o tamanho da memória em bytes; o tamanhode cada página da memória, também em bytes.

2. Inserção na Lista de Processos: inserir os dados do processo em uma lista ordenada e duplamenteencadeada, contendo as seguintes informações: número do processo, o tamanho em páginas doprocesso, último acesso ao processador em unidades de tempo (0 caso ainda não tenha acessado,ou seja, no ato da inserção, e valores inteiros para os próximos acesso pode manter um contadorpara todas vezes que executar um processo aumentar em 1 a unidade de tempo de último acesso), epor fim se o mesmo foi ou não modificado.

3. Executar um processo: verificar se o mesmo já está na memória, através da lista de processos. Seestiver na memória executar processo significará atualizar dados. Atualizar dados significa mudarúltimo acesso e informar se se o processo sofreu ou não modificado/atualização. Se o processo nãoestiver na memória, ou seja na lista de processos, verificar se o mesmo cabe na memória, somando

Page 2: lista de Estrutura de Dados II

os tamanhos de cada processo da lista, caso caiba pedir para o usuário inseri-lo na memória, casocontrário, pedir ao usuário para remover um processo e depois inseri-lo na memória.

4. Mostrar todos os processos na Lista de Processos: mostre todos os processos com suasrespectivas informações.

5. Remoção da Lista de Processos: ordem de prioridade para remoção:

• primeiro: remova o primeiro processo que couber o processo que se deseja inserir, que nãotenha sido acessado no último instante de tempo e não tenha sido modificado.

• Segundo: remova o primeiro processo que couber o processo que se deseja inserir, que tenhasido acessado no último instante de tempo e não tenha sido modificado.

• Terceiro: remova o primeiro processo que couber o processo que se deseja inserir, que tenhasido acessado no último instante de tempo e tenha sido modificado. Neste caso enviar umamensagem dizendo que o processo que está sendo retirado deve ser gravado no disco.

• Quarto: remova quantos processos forem necessários para inserir o novo processo. Lembre-seque se o processo que está sendo removido foi modificado, deve ser emitida uma mensageminformando que o mesmo deve ser gravado em disco.

4. Um polinômio em três variáveis (x, y, z) pode ser representado por uma lista circular, onde cada nó deverepresentar um termo e deve conter: a potência do termo, o coeficiente desse termo. Faça um programa emC que possua as seguintes opções:a) Cadastrar polinômios: para cada polinômio cadastrado tenha uma lista circular, manter um vetor

contendo os ponteiros inicias de cada polinômio, além de um código para identificar o polinômiodesejado.

b) Somar dois polinômios cadastrados, permita ao usuário escolher os polinômios.c) Multiplicar dois polinômios cadastrados, permita ao usuário escolher os polinômios.d) Avaliar um dos polinômios cadastrados em função de valores dados para x, y e z, permita ao usuário

escolher o polinômio.e) Imprimir a representação de um dos polinômios cadastrados, permita ao usuário escolher o polinômio.f) Imprimir a representação de todos os polinômios cadastrados.g) Calcular a derivada parcial de um dos polinômios cadastrados em relação a qualquer uma das

variáveis, permita ao usuário escolher o polinômio e a variável.

Equipe: os programas podem ser feitos em dupla, mas os relatórios são individuais. Se osprogramas forem feitos em dupla, a dupla deve ser identificada no envio do código.Data de Entrega: data primeira prova escritaEntregar: Código Fonte, Relatório(Conforme Modelo em PDF)Forma de Entrega: pelo SIGAA, caso tenha algum problema enviar por e-mail([email protected]).Entrevista Individual: agendar horário com a Professora.Processo da Entrevista: para cada aluno será sorteado 2 programas, dentre os entregues pelo aluno,para que o mesmo explique os 2 programas.