Mudanças entre as edições de "PRG29002-2018-2"
Linha 784: | Linha 784: | ||
=AULA 26 - 25/10/2018= | =AULA 26 - 25/10/2018= | ||
− | * | + | *Alocação dinâmica de memória; |
*Discussão inicial sobre o projeto | *Discussão inicial sobre o projeto | ||
=AULA 27 - 1/11/2018= | =AULA 27 - 1/11/2018= | ||
− | * | + | *Acesso a arquivos no C |
+ | *Uso de IDE | ||
=AULA 28 - 6/11/2018= | =AULA 28 - 6/11/2018= | ||
− | * | + | *Tópicos adicionais: outros tipos no C |
+ | *precedência de operadores | ||
+ | *uso de múltiplos arquivos nos projetos | ||
=AULA 29 - 8/11/2018= | =AULA 29 - 8/11/2018= | ||
− | * | + | *Exercícios de preparação para avaliação |
− | |||
− | |||
=AULA 30 - 13/11/2018= | =AULA 30 - 13/11/2018= | ||
+ | |||
+ | *Avaliação III | ||
=AULA 31 - 20/11/2018= | =AULA 31 - 20/11/2018= | ||
+ | |||
+ | *Desenvolvimento do Projeto | ||
=AULA 32 - 22/11/2018= | =AULA 32 - 22/11/2018= | ||
+ | |||
+ | *Desenvolvimento do Projeto | ||
=AULA 33 - 27/11/2018= | =AULA 33 - 27/11/2018= | ||
+ | |||
+ | *Desenvolvimento do Projeto | ||
=AULA 34 - 29/11/2018= | =AULA 34 - 29/11/2018= | ||
+ | |||
+ | *Desenvolvimento do Projeto | ||
=AULA 35 - 4/12/2018= | =AULA 35 - 4/12/2018= | ||
− | + | *Apresentação/Defesa do Projeto | |
− | * Apresentação/Defesa do Projeto | ||
=AULA 36 - 6/12/2018= | =AULA 36 - 6/12/2018= |
Edição das 10h11min de 17 de outubro de 2018
PROFESSOR
- Eraldo Silveira e Silva
ATENDIMENTO PARALELO
SEGUNDA: 11h às 12h QUARTA: 13h30 às 14h30.
LOCAL: Sala 1 de Professores de Telecomunicações ou em algum dos laboratórios de TELE/CAD
MONITORIA
- Aluna: Sarom
- Horários:
- Segunda-feira 16h15 - 18h45 (2,5 horas)
- Quarta-feira 11h30 - 14h00 (2,5 horas)
- Quinta-feira 13h30 - 17h30 (4 horas)
- Sexta-feira 11h30 - 14h30 (3 horas)
Links Interessantes
AULA 1 - 26/07/2018
Objetivos
- Apresentação do Plano de Ensino;
- Introdução a Fluxograma e pseudocódigo.
Material de Referência
Aula Introdutória sobre Lógica de Programação
AULA 2 - 31/07/2018
Objetivos
- Introdução a Fluxograma e pseudocódigo.
- Estruturas de Decisão
Material de Referência
Lógica de Programação: Estruturas de Decisão
AULA 3 - 2/08/2018
Objetivos
- Introdução a Fluxograma e pseudocódigo.
- Estruturas de Decisão
Material de Referência
Lógica de Programação: Estruturas de Repetição
AULA 4 - 7/08/2018
Objetivos
O aluno devera ser capaz de:
- descrever o processo de compilação;
- diferenciar código fonte, objeto e executável;
- compilar, executar pequenos programa em C usando o gcc;
- declarar e usar variáveis locais inteiras e reais;
- usar as funções de entrada e saída: scanf() e printf.
Material de Referência
TAREFA
- Estudar AULA 2 e 3 de Apostila de C - UFMG
AULA 5 - 9/08/2018
Objetivos
O aluno deverá ser capaz de:
- Utilizar os operadores relacionais e lógicos na programação C
- um pouco mais sobre variáveis: tipo char
- Utilizar o comando de decisão if else
- Utilizar o comando switch
Material e Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 6 - 14/08/2018
- Continuação da aula anterior.
Objetivos
O aluno deverá ser capaz de:
- Utilizar os operadores relacionais e lógicos na programação C
- um pouco mais sobre variáveis: tipo char
- Utilizar o comando de decisão if else
- Utilizar o comando switch
Material e Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 7 - 16/08/2018
Objetivos
- Estruturas de Repetição
Material e Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 8 - 21/08/2018
Objetivos
- Estruturas de Repetição: break, loop
- Uso de biblioteca matemática;
- Uso do Nemiver
Material e Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 9 - 23/08/2018
Objetivos
- Estruturas de Repetição: lista de exercícios de preparação para avaliação proposta no SIGA A
Material e Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 10 - 28/08/2018
- Avaliação 1 - Proposta no SIGA A
AULA 11 - 29/08/2018
- Vetores (arranjos unidimensionais)
Material de Referência
AULA 12 - 04/08/2018
Objetivos
- Continuação Vetores e Strings
- Funções
Material de Referência
https://wiki.sj.ifsc.edu.br/index.php/AULA_8_-_Programa%C3%A7%C3%A3o_1_-_Engenharia
AULA 13 - 6/09/2018
- Recuperação da Avaliação 1 -
AULA 14 - 11/9/2018
Objetivos
- Correção da Recuperação (Alternativas)
- Funções e parâmetros
- Variáveis Locais e Globais
Material de Referência
AULA 15 - 13/9/2018
Objetivos
- Vetores de inteiros, floats etc (arranjos unidimensionais)
Material de Referência
AULA 16 - 18/9/2018
Objetivos
- Exercício da Prova
- Vetores de inteiros, floats etc (arranjos unidimensionais)
- Matrizes
Exercício da Prova
1) Implementar um programa C com os requisitos abaixo:
- O programa deve ler N números inteiros;
- Deve ser mostrado a quantidade de números que estão na faixa (-100,100).
- Deve ser realizada a média dos números que estão na faixa acima.
solução |
---|
#include <stdio.h>
main()
{
int i,N, num,cont;
float media, soma_ac;
printf("Entre com a quantidade de números a serem fornecidos\n");
scanf("%d", &N);
soma_ac=0;
cont=0;
j=0;
for(i=0;i<N;i++) {
printf("Entre com um numero\n");
scanf("%d",&num);
if ((num>=-100) && (num<=100)) {
soma_ac = soma_ac + num;
cont++;
}
}
media = soma_ac/cont;
printf("quantidade de numeros = %d\n", cont);
printf("media = %.2f\n", media);
}
|
2) Refazer o exercício armazenando os valores da faixa indicada em um vetor. Fazer a média dos números da faixa usando os dados armazenados no vetor.
solução |
---|
#include <stdio.h>
#define TAM_MAX 300
void mostrar_vet(int x[], int tamanho)
{
int i;
printf("Imprime vetor\n");
for (i=0;i<tamanho;i++)
printf("x[%d] = %d \n", i, x[i]);
printf("==== FIM VETOR ====\n");
}
int main()
{
int i,N, num,cont,
vetor[TAM_MAX]; /* vetor superdimensionado para comportar até 300 elementos */
float media, soma_ac;
printf("Entre com a quantidade de números a serem fornecidos\n");
scanf("%d", &N);
if (N>TAM_MAX) {
printf ("Vetor não comporta o número especificado\n");
return 1; /* um código de erro poderia ser retornado aqui */
}
cont=0;
/* primeiro loop para leitura dos dados */
for(i=0;i<N;i++) {
printf("Entre com um numero\n");
scanf("%d",&num);
if ((num>=-100) && (num<=100)) {
vetor[cont]=num;
cont++;
}
}
printf("quantidade de numeros = %d\n", cont);
/* segundo loop para processar os dados */
soma_ac=0;
for(i=0;i<cont;i++)
soma_ac = soma_ac + vetor[i];
/* media dos números armazenados no vetor */
media = soma_ac/cont;
mostrar_vet(vetor, cont);
printf("media = %.2f\n", media);
return 0;
}
|
3) Refazer o exercício criando uma função para receber um vetor e seu tamanho e retornar a média. Substituir o segundo loop pela função.
Material de Referência
AULA 17 - 20/9/2018
Objetivos
Material de Referência
AULA 18 - 25/9/2018
Exercícios de Preparação para Avaliação 1
Exercício 1
Elaborar uma função que recebe como parâmetro um vetor contendo uma string e um vetor com dados não identificados.
- A função deve copiar a string do primeiro vetor para o segundo, invertendo a mesma.
- A função também deve retornar a quantidade de caracteres 'i' na string. Exemplo:
#include <stdio.h>
int copiar_string(char vet1[100], char vet2[100])
{
/* implementar aqui */
}
main()
{
char aux1[100]="ifsc", aux2[100]="instituto",aux3[100];
int len;
len=copiar_string(aux1,aux3);
printf("%s %d\n", aux3,len);
len=copiar_string(aux2,aux3);
printf("%s %d\n", aux3,len);
}
A saída deve ser:
csfi 1 otutitsni 2
solução sugerida pelos alunos Alehandro e Arthur (em breve) |
---|
Exercício 2
Elaborar uma função que recebe um vetor de inteiros e sua dimensão como parâmetro. Ela deverá retornar a quantidade de números pares do vetor.
#include <stdio.h>
int conta_par(int vet[], int len)
{
/* implementar aqui */
}
main()
{
int x[10]={1,2,5,9,4,3,2,4,10,23};
printf("Quantidade de pares = %d\n", conta_par(x,10));
}
Exercício 3
Elaborar uma função que recebe uma matriz quadrada 5x5 de "floats" passada como parâmetro. A função deve retornar a média da diagonal. Teste a função chamando-a a partir do programa principal.
AULA 19 - 02/10/2018
Objetivos
- Estruturas no C;
Material de Referência
AULA 20 - 04/10/2018
Objetivos
- Estruturas no C;
Material de Referência
AULA 21 - 09/10/2018
Objetivos
- Introdução aos ponteiros no C.
Material de Referência
AULA 22 - 11/10/2018
Objetivos
- Vetor de Ponteiros, Ponteiros para estruturas e Vetor de Ponteiros. Passagem de Parâmetro na linha de comando.
Material de Referência
AULA 23 - 16/10/2018
- correção da avaliação II
- revisão e exercícios para recuperação.
Correção da Avaliação - Dia
Questão 1
Implementar uma função C que recebe dois vetores de char como parâmetro. No primeiro vetor se encontra uma string qualquer. A função deve copiar esta string para o segundo vetor MAS deve eliminar todos os espaços em branco. A função deve retornar a quantidade de espaços em branco eliminados. Segue o esqueleto e uma saída para a situação colocada no main.
#include <stdio.h>
int eliminar_espaco(char x[], char y[])
{
}
main()
{
}
Solução:
solução |
---|
#include <stdio.h>
int eliminar_espaco(char x[], char y[])
{
int i, /* index do vetor fonte */
j, /* index do vetor de destino */
cont;
i=0;
j=0;
cont=0;
while(x[i]!='\0') {
if (x[i]==' ') {
cont++; /* contar ocorrências do espaço */
} else {
y[j]=x[i]; /* copiar normalmente */
j++; /* incrementar para avançar o index de y após a cópia */
}
i++; /* sempre avançar o index de x */
}
y[j]='\0';
return cont; /* retornar a contagem de espaços */
}
main()
{
char vetor1[100]=" Instituto Federal de Santa Catarina ",
vetor2[100];
int espacos;
espacos = eliminar_espaco(vetor1, vetor2);
printf("vetor final = %s - total espaços = %d\n", vetor2, espacos);
}
|
Questão 2
Implementar uma função que recebe um vetor de floats e sua dimensão como parâmetros. A função deve retornar a média entre o MENOR e o MAIOR número armazenado no vetor. Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf).
Solução 1:
Nesta solução armazenaremos o primeiro elemento do vetor em duas variáveis de apoio: maior e menor. Na sequência, percorreremos o valor examinando cada posição e testando se o que está armazenado ali é maior(ou menor) que o armazenado nas variáveis de apoio. A troca de valores é realizada se confirmado esta situação.
solução |
---|
#include <stdio.h>
#define TAM 5
float media_maior_menor(float vet[], int len)
{
float media,
maior, /* maior corrente */
menor; /* menor corrente */
int i;
maior = menor = vet[0]; /* considerado que len sempre maior que 0 */
for (i=1;i<len;i++) {
if (menor > vet[i]) /* testa se o a posição i de vet é menor que o MENOR corrente */
menor = vet[i];
if (maior < vet[i]) /* testa se o a posição i de vet é menor que o MENOR corrente */
maior = vet[i];
}
printf("maior igual a %f e menor igual a %f\n", maior, menor);
media = (maior + menor)/2;
return media;
}
main()
{
float x[TAM]={-1.5, 100.7, 94.5,-15.3,7.5};
float media;
media = media_maior_menor(x, TAM);
printf("media = %f\n", media);
}
|
Questão 3
Implementar uma função que recebe duas matrizes de floats 5x5 como parâmetros. A função deve comparar as duas matrizes e retornar o número de elementos que são diferentes. Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf).
OBSERVAÇÃO: TODAS as funções e os testes da mesma (no main) deverão estar um arquivo único que deverá ser “uploaded” (carregado) na tarefa associada a avaliação no SIGAA.
Solução:
solução |
---|
#include <stdio.h>
#define TAM 5
int quant_diferentes(float vet1[TAM][TAM], float vet2[TAM][TAM])
{
int i,
j,
cont=0; /* contador de elementos diferentes */
for (i=0;i<TAM;i++)
for (j=0;j<TAM;j++) {
if (vet1[i][j] != vet2[i][j])
cont++;
}
return cont;
}
main()
{
float x[TAM][TAM] = { 1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
},
y[TAM][TAM] = {
9 ,6, 3, 4 ,5,
1 ,2, 3, 7 ,5,
1 ,9, 3, 4 ,5,
1 ,2, 3, 4 ,15,
5 ,11, 3, 4 ,5,
};
printf ("Num diferentes = %d\n", quant_diferentes(x,y));
}
|
Correção da Avaliação - Noite
Questão 1
Implementar uma função C que recebe dois vetores de char como parâmetro. No primeiro vetor se encontra uma string qualquer. A função deve copiar esta string para o segundo vetor MAS deve substituir cada espaço em branco por dois caracteres '?'. A função deve retornar a quantidade de espaços em branco substituídos. Segue o esqueleto e uma saída para a situação colocada no main.
#include <stdio.h>
int substituir_espaco(char x[], char[y])
{
}
main()
{
char x[100]="Instituto Federal de Santa Catarina",
y[100];
int num_espacos;
num_espacos = substituir_espaco(x, y);
printf("string sem espaços = %s e números de substituições = %d", y, num_espacos);
}
solução |
---|
#include <stdio.h>
int substituir_espaco(char x[], char y[])
{
int i, /* index do vetor fonte */
j, /* index do vetor de destino */
cont;
i=0;
j=0;
cont=0;
while(x[i]!='\0') {
if (x[i]==' ') {
cont++; /* contar ocorrências do espaço */
y[j]='?';
j++;
y[j]='?';
j++;
} else {
y[j]=x[i]; /* copiar normalmente */
j++; /* incrementar para avançar o index de y após a cópia */
}
i++; /* sempre avançar o index de x */
}
y[j]='\0';
return cont; /* retornar a contagem de espaços */
}
main()
{
char x[100]=" Instituto Federal de Santa Catarina ",
y[100];
int num_espacos;
num_espacos = substituir_espaco(x, y);
printf("string sem espaços = %s\ne números de substituições = %d\n", y, num_espacos);
}
|
Questão 2
Implementar uma função que recebe um vetor de inteiros e sua dimensão como parâmetros. A função deve retornar a média de TODOS os números ímpares NÃO NEGATIVOS contidos no vetor. Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf)
solução |
---|
#include <stdio.h>
float media_num_impar(int x[], int len)
{
int i,soma,cont;
soma=0;
cont=0;
for (i=0;i<len;i++){
if (x[i]>0 && x[i]%2==1) {
soma = soma + x[i];
cont++;
}
}
return (float)soma/cont; /* aqui teria um problema de truncamento se não houver casting*/
}
main()
{
int alfa[5]={-5,-3,7,10,11};
float media;
media = media_num_impar(alfa, 5);
printf("media ímpares não negativos do vetor = %f\n", media);
}
|
Questão 3
Implementar uma função que recebe uma matriz de floats 5x5 como parâmetro. A função deve computar a média de todos os números que fazem parte de linhas PARES e colunas ÍMPARES (considerando sempre que a primeira linha é a 0 e a primeira coluna é 0). Uma demonstração do uso da função deve ser apresentado no programa principal (função main) usando variáveis inicializadas (NÃO USAR scanf)
solução |
---|
#include <stdio.h>
#define TAM 5
float media_lin_col(float vet[TAM][TAM])
{
int i,j;
float media_soma=0;
int cont=0;
for (i=0;i<TAM;i++)
for (j=0;j<TAM;j++) {
if((i%2==0)&&(j%2==1)) {
media_soma = media_soma + vet[i][j];
cont++;
}
}
media_soma = media_soma/cont;
return media_soma;
}
main()
{
float x[TAM][TAM] = { 1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
1 ,2, 3, 4 ,5,
};
float media;
media = media_lin_col(x);
}
|
AULA 24 - 18/10/2018
- Recuperação Avaliação II
AULA 25 - 23/10/2018
Objetivos
- Continuação de Vetor de Ponteiros e Ponteiro Para Estruturas
Referências
AULA 26 - 25/10/2018
- Alocação dinâmica de memória;
- Discussão inicial sobre o projeto
AULA 27 - 1/11/2018
- Acesso a arquivos no C
- Uso de IDE
AULA 28 - 6/11/2018
- Tópicos adicionais: outros tipos no C
- precedência de operadores
- uso de múltiplos arquivos nos projetos
AULA 29 - 8/11/2018
- Exercícios de preparação para avaliação
AULA 30 - 13/11/2018
- Avaliação III
AULA 31 - 20/11/2018
- Desenvolvimento do Projeto
AULA 32 - 22/11/2018
- Desenvolvimento do Projeto
AULA 33 - 27/11/2018
- Desenvolvimento do Projeto
AULA 34 - 29/11/2018
- Desenvolvimento do Projeto
AULA 35 - 4/12/2018
- Apresentação/Defesa do Projeto
AULA 36 - 6/12/2018
- Apresentação/Defesa do Projeto
AULA 37 - 11/12/2018
- AULÃO PARA RECUPERAÇÂO - Exercícios
AULA 38 - 13/12/2018
- Recuperação final
AULA 39 - 18/12/2018
- REAPRESENTAÇÂO PROJETO FINAL (recuperação projeto)