Mudanças entre as edições de "PRG29002-2018-2"
Linha 530: | Linha 530: | ||
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). | 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: | + | 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. | ||
+ | |||
+ | {{collapse top|solução}} | ||
<syntaxhighlight lang=c> | <syntaxhighlight lang=c> | ||
Linha 567: | Linha 571: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
+ | {{collapse bottom}} | ||
===Questão 3=== | ===Questão 3=== |
Edição das 14h26min de 15 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
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:
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
- exercícios de preparação para avaliação
AULA 28 - 6/11/2018
- Avaliação III
AULA 29 - 8/11/2018
- Tópicos adicionais: outros tipos no C
- precedência de operadores
- uso de múltiplos arquivos nos projetos