Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2015-2"
Ir para navegação
Ir para pesquisar
(→Aulas) |
|||
(34 revisões intermediárias pelo mesmo usuário não estão sendo mostradas) | |||
Linha 11: | Linha 11: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top| AULA 2 - [[AULA 2 - Programação 1 - Engenharia | Dia | + | {{collapse top| AULA 2 - [[AULA 2 - Programação 1 - Engenharia | Dia 7/10/2015 - Lógica de Programação: Expressões - Estruturas de Decisão]]}} |
{{collapse bottom}} | {{collapse bottom}} | ||
Linha 23: | Linha 23: | ||
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top|AULA 6 - Programação 1 - Engenharia | + | {{collapse top|AULA 6 - Programação 1 - Engenharia - Dia 21/10/15 -Exercícios}} |
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top|AULA 7- Programação 1 - Engenharia | + | {{collapse top|AULA 7- Programação 1 - Engenharia - Dia 26/10/15 -Exercícios}} |
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top|AULA 8- [[AULA 6 - Programação 1 - Engenharia | Dia | + | {{collapse top|AULA 8- [[AULA 6 - Programação 1 - Engenharia | Dia 28/10/14 -Estruturas de Repetição no C]]}} |
{{collapse bottom}} | {{collapse bottom}} | ||
− | {{collapse top|AULA 9- [[Exercícios Preparação para Avaliação I | Dia 04/ | + | {{collapse top|AULA 9- [[Exercícios Preparação para Avaliação I | Dia 04/11/2015 - Exercícios Preparação para Avaliação I]]}} |
{{collapse bottom}} | {{collapse bottom}} | ||
Linha 48: | Linha 48: | ||
:[[PRG29002-2015-2-Aval1A]] | :[[PRG29002-2015-2-Aval1A]] | ||
:[[PRG29002-2015-2-Aval1B]] | :[[PRG29002-2015-2-Aval1B]] | ||
+ | |||
+ | :[[PRG29002-2015-2-REC]] | ||
{{collapse top|AULA 15 - [[AULA 10 - Programação 1 - Engenharia | Dia 23/11/15 - Vetores no C]]}} | {{collapse top|AULA 15 - [[AULA 10 - Programação 1 - Engenharia | Dia 23/11/15 - Vetores no C]]}} | ||
Linha 135: | Linha 137: | ||
b) Inserir uma funcionalidade para armazenar nomes e pontuação de usuários. Ao final de cada programa mostrar a tabela de usuários com pontuação. Dica: criar 2 tabelas: uma de strings e outra de inteiros. A primeira para armazenar os nomes de usuários e a segunda para armazenar a pontuação. | b) Inserir uma funcionalidade para armazenar nomes e pontuação de usuários. Ao final de cada programa mostrar a tabela de usuários com pontuação. Dica: criar 2 tabelas: uma de strings e outra de inteiros. A primeira para armazenar os nomes de usuários e a segunda para armazenar a pontuação. | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 21-[[AULA ?? - Programação 1 - Engenharia 14/12/2015 - Estruturas }} | ||
{{collapse bottom}} | {{collapse bottom}} | ||
Linha 144: | Linha 149: | ||
<ol> | <ol> | ||
<li> | <li> | ||
− | Implementar uma função | + | Implementar uma função que desenha uma figura no terminal e cujo ''esqueleto'' é: |
+ | <syntaxhighlight lang=c> | ||
void plotar_fig(int margem, int lado, char car1) | void plotar_fig(int margem, int lado, char car1) | ||
− | + | </syntaxhighlight> | |
Exemplo de uso: | Exemplo de uso: | ||
+ | <syntaxhighlight lang=c> | ||
plotar_fig(6,5,'A') | plotar_fig(6,5,'A') | ||
+ | </syntaxhighlight> | ||
A figura deverá ser desenhada da forma (onde aparece 'b' é espaço em branco): | A figura deverá ser desenhada da forma (onde aparece 'b' é espaço em branco): | ||
+ | <syntaxhighlight lang=c> | ||
bbbbbbA | bbbbbbA | ||
Linha 164: | Linha 173: | ||
bbbbbbAAAAA | bbbbbbAAAAA | ||
+ | </syntaxhighlight> | ||
− | + | Os parâmetros indicam: | |
(1) 'margem' - número de espaços em branco da última linha | (1) 'margem' - número de espaços em branco da última linha | ||
(2) 'lado' - número de caracteres 'car1' na úlima linha e | (2) 'lado' - número de caracteres 'car1' na úlima linha e | ||
(3) 'car1' - o caracter da figura. | (3) 'car1' - o caracter da figura. | ||
</li> | </li> | ||
+ | <li> | ||
+ | Implementar uma função que recebe como parâmetros um vetor de inteiros e o seu tamanho. A função deve retornar a média entre todos os números armazenados no vetor. | ||
+ | Exemplo: | ||
+ | <syntaxhighlight lang=c> | ||
+ | float media_vet(int vetor[], int tamanho) | ||
+ | { | ||
+ | |||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | float media; | ||
+ | int x[10] = {1,8,6,5,9,14,2,3,10,0}; | ||
+ | |||
+ | media = media_vet(x,10); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | |||
+ | <li> | ||
+ | Implementar uma função que recebe como parâmetros um vetor de inteiros e o tamanho deste vetor. A função deve retornar o maior número armazenado neste vetor. Exemplo: | ||
+ | <syntaxhighlight lang=c> | ||
+ | int maior_vet(int vetor[], int tamanho) | ||
+ | { | ||
+ | |||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | int maior; | ||
+ | int x[10] = {1,8,6,5,9,14,2,3,10,0}; | ||
+ | |||
+ | maior = maior_vet(x,10); /* o valor retornado deve ser 14 */ | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> Implementar uma função que recebe uma matriz 2x3 de floats. Ela deve retornar a média entre todos os elements da matriz. Exemplo: | ||
+ | <syntaxhighlight lang=c> | ||
+ | float media_mat(float matriz[2][3]) | ||
+ | { | ||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | float x[2][3] = { | ||
+ | {2.6,-7.4,3.9}, | ||
+ | {8.6,9.4,5.1} | ||
+ | }; | ||
+ | float media; | ||
+ | media = media_mat(x); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> | ||
+ | Considere uma tabela global com nomes (user ids) armazenados. Implementar uma função para buscar um user_id na tabela. A função deve retornar 0 se foi encontrado o tem e -1 se não foi encontrado. | ||
+ | <syntaxhighlight lang=c> | ||
+ | char tabela_userid[5][10] = { | ||
+ | "alfa", | ||
+ | "delta", | ||
+ | "gama", | ||
+ | "epson", | ||
+ | "beta" | ||
+ | }; | ||
+ | int procurar_userid(char user_id[]) | ||
+ | { | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> | ||
+ | Implementar uma função que recebe dois vetores de inteiros e retorna a maior média dentre os seus componentes. | ||
+ | <syntaxhighlight lang=c> | ||
+ | float calc_media(int vet1[], int tam1, int vet2[], int tam2) | ||
+ | { | ||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | int x[5]={2,6,3,4,9}; | ||
+ | int y[7]={4,2,8,1,0,3,8}; | ||
+ | float media; | ||
+ | |||
+ | media = calc_media(x,5,y,7); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | <li> | ||
+ | Implementar uma função que calcula a média de todos os elementos de um vetor de inteiros maiores que um determinado número passado como parâmetro. | ||
+ | <syntaxhighlight lang=c> | ||
+ | float calc_media(int vet1[], int tam1, int numero) | ||
+ | { | ||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | int x[5]={1,4,6,3,5}; | ||
+ | float media; | ||
+ | |||
+ | media = calc_media (x,5,3); /*retorna a media de todos os elementos maiores que 3*/ | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
+ | <li> | ||
+ | Implementar uma função que recebe duas strings como parâmero e | ||
+ | retorna 0 se último caracter destas strings são diferentes, 1 se iguais. Exemplo: | ||
+ | <syntaxhighlight lang=c> | ||
+ | int comp_ult(char vet1[], char vet2[]) | ||
+ | { | ||
+ | } | ||
+ | main() | ||
+ | { | ||
+ | int ret; | ||
+ | char x[]="alfa"; | ||
+ | char y[]="beta"; | ||
+ | |||
+ | ret=comp_ult(vet1,vet2); | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | </li> | ||
</ol> | </ol> | ||
+ | |||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|Dia 21/12/2015 - AULA 22 - Avaliação de Laboratório }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|Dia 23/12/2015 - AULA 23 - Correção da Avaliação }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|Dia 1/2/2016 - AULA 24 Revisão de Estruturas }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|Dia 1/2/2016 - AULA 25 [[AULA 17 - Programação 1 - Engenharia | Dia 1/2/2016 - Ponteiros ]] }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 26 [[AULA 19 - Programação 1 - Engenharia | Dia 15/1/2016 - Vetor de Ponteiros e Ponteiro Para Estruturas]]}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 27 [[AULA 20 - Programação 1 - Engenharia | Dia 22/2/2016 - Alocação Dinâmica de Memória]]}} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 28 [[AULA 21 - Programação 1 - Engenharia | Dia 24/2/14 - Exercícios e Listas ligadas simples]] }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 29 [[AULA 25 - Programação 1 - Engenharia | Dia 29/2/2016 - Múltiplos Arquivos]] }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 30 Dia 2/3/2016 - Desenvolvimento do Projeto }} | ||
+ | |||
+ | =PROJETO FINAL - Requisitos Iniciais= | ||
+ | |||
+ | *Sistema de Controle de Acesso de ambiente | ||
+ | *Os usuários devem ter userid e senha e devem estar organizados através de uma fila; | ||
+ | *O usuário admin tem direitos adicionais de | ||
+ | **acrescentar e remover usuário; | ||
+ | **desbloquear usuário | ||
+ | *deve ser previsto o bloqueio de usuário após certo número de acessos: configurar na linha de comando | ||
+ | *o sistema deve conter 3 arquivos fonte (.c) e três headers (.h): o main.c, main.h, user.c, user.h, admin.c e admin.h. Um Makefile deve ser construído para compilar o programa. | ||
+ | |||
+ | Adicional para equipe com 3: | ||
+ | |||
+ | *O sistema deve permitir que o administrador configure o período inicial e final de acesso | ||
+ | |||
+ | SUGESTÕES | ||
+ | |||
+ | *Pseudo-código para a função para adicionar usuário (arquivo admin.c) | ||
+ | <syntaxhighlight lang=c> | ||
+ | |||
+ | int add_user() | ||
+ | { | ||
+ | Ler userid do usuário a ser inserido | ||
+ | Verificar se o usuário já está na lista de usuários /* chamar função auxiliar */ | ||
+ | Se o usuário já estiver na lista | ||
+ | Editar o usuário | ||
+ | Senão { | ||
+ | Criar uma estrutura para o usuário | ||
+ | Popular a estrutura com os dados do usuário | ||
+ | Inserir o usuário na Lista | ||
+ | } | ||
+ | } | ||
+ | </syntaxhighlight> | ||
+ | |||
+ | *Pseudo código do tratar_usuario | ||
+ | |||
+ | <syntaxhighlight lang=c> | ||
+ | void tratar_usuario(char *userid) | ||
+ | { | ||
+ | Verifica se existe um usuário com o userid na lista /* chamar função de apoio que retorna NULL ou um ponteiro para o usuário */ | ||
+ | Se não existir | ||
+ | Informa usuário inexistente | ||
+ | Senão { | ||
+ | Se usuário estiver bloqueado | ||
+ | Informa que ele está bloqueado | ||
+ | Senão { | ||
+ | Pede para entrar com a senha | ||
+ | Se senha ok | ||
+ | abre a porta | ||
+ | Senão | ||
+ | Msg de senha incorreta | ||
+ | } | ||
+ | } | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|Dia 7/3/2016 - AULA 31 - Avaliação II de Laboratório }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | |||
+ | {{collapse top|AULA 32 [[AULA 22 - Programação 1 - Engenharia | 9/3/2016 - Tratamento de Arquivos - Parte I]] }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 33 - 14/3/2016 - Desenvolvimento do Projeto }} | ||
+ | {{collapse bottom}} | ||
+ | |||
+ | {{collapse top|AULA 34 - 16/3/2016 - Recuperação }} | ||
{{collapse bottom}} | {{collapse bottom}} |
Edição atual tal como às 19h56min de 16 de março de 2016
Plano de Ensino
Aulas
AULA 1 - Dia 5/10/2015 - Aula Inaugural |
---|
AULA 5 - Dia 19/10/15 -Estruturas de Decisão |
---|
AULA 6 - Programação 1 - Engenharia - Dia 21/10/15 -Exercícios |
---|
AULA 7- Programação 1 - Engenharia - Dia 26/10/15 -Exercícios |
---|
AULA 10 - Dia 9/11/2015 -Funções no C |
---|
AULA 11- Dia 11/11/2015 |
---|
AULA 12 - Dia 16/11/2015 - Vetores no C |
---|
AULA 13 - Dia 18/11/2015 - Avaliação 1 |
---|
AULA 15 - Dia 23/11/15 - Vetores no C |
---|
AULA 14 - Dia 25/11/15 - Correção da Avaliação I] |
---|
AULA 16 - Dia 30/11/15 - Vetores no C |
---|
AULA 18 - Dia 7/12/2015 - Exercícios |
---|
AULA 19 - Dia 9/12/2015 - Exercícios - Continuação Batalha Naval |
---|
AULA 20 - Dia 12/12/2015 - Exercícios - Continuação Batalha Naval | ||||
---|---|---|---|---|
Adendos: a) Inserir uma função após o tiro para fornecer uma dica do número de navios que se encontra nas casas imediatamente vizinhas ao tiro realizado.
b) Inserir uma funcionalidade para armazenar nomes e pontuação de usuários. Ao final de cada programa mostrar a tabela de usuários com pontuação. Dica: criar 2 tabelas: uma de strings e outra de inteiros. A primeira para armazenar os nomes de usuários e a segunda para armazenar a pontuação. |
{{collapse top|AULA 21-[[AULA ?? - Programação 1 - Engenharia 14/12/2015 - Estruturas }}
|}
AULA 21- Dia 16/12/2015 - Estruturas |
---|
Exercícios adicionais de preparação para avaliação 1 de Laboratório |
---|
|
Dia 21/12/2015 - AULA 22 - Avaliação de Laboratório |
---|
Dia 23/12/2015 - AULA 23 - Correção da Avaliação |
---|
Dia 1/2/2016 - AULA 24 Revisão de Estruturas |
---|
Dia 1/2/2016 - AULA 25 Dia 1/2/2016 - Ponteiros |
---|
AULA 30 Dia 2/3/2016 - Desenvolvimento do Projeto |
---|
PROJETO FINAL - Requisitos Iniciais
Adicional para equipe com 3:
SUGESTÕES
int add_user()
{
Ler userid do usuário a ser inserido
Verificar se o usuário já está na lista de usuários /* chamar função auxiliar */
Se o usuário já estiver na lista
Editar o usuário
Senão {
Criar uma estrutura para o usuário
Popular a estrutura com os dados do usuário
Inserir o usuário na Lista
}
}
void tratar_usuario(char *userid)
{
Verifica se existe um usuário com o userid na lista /* chamar função de apoio que retorna NULL ou um ponteiro para o usuário */
Se não existir
Informa usuário inexistente
Senão {
Se usuário estiver bloqueado
Informa que ele está bloqueado
Senão {
Pede para entrar com a senha
Se senha ok
abre a porta
Senão
Msg de senha incorreta
}
}
|
Dia 7/3/2016 - AULA 31 - Avaliação II de Laboratório |
---|
AULA 33 - 14/3/2016 - Desenvolvimento do Projeto |
---|
AULA 34 - 16/3/2016 - Recuperação |
---|