Mudanças entre as edições de "PRG29002 - Programação I - Eng.Telecom 2023-2"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 410: Linha 410:
 
==24/10/2023: Correção Avaliação 2==
 
==24/10/2023: Correção Avaliação 2==
  
==26/10/2023: ==
+
==26/10/2023: Estruturas (cont')==
 +
 
 +
===Objetivos===
 +
*Definição de estruturas;
 +
*Estruturas como parâmetros;
 +
*Inicialização de estruturas;
 +
*Cópia de estruturas;
 +
*Exercícios com estruturas.
 +
 
 +
===Material e Referência===
 +
[https://wiki.sj.ifsc.edu.br/index.php/AULA_13_-_Programa%C3%A7%C3%A3o_1_-_Engenharia Estruturas]
  
 
==31/10/2023: ==
 
==31/10/2023: ==

Edição das 15h12min de 25 de julho de 2023

PROFESSOR

Professor: Tiago Semprebom
Email: tisemp@ifsc.edu.br
diretório web:: tele.sj.ifsc.edu.br/~tisemp

IMPORTANTE: o direito de recuperar uma avaliação em que se faltou somente existe mediante justificativa reconhecida pela coordenação. Assim, deve-se protocolar a justificativa no prazo de 48 horas, contando da data e horário da avaliação, e aguardar o parecer da coordenação. O não cumprimento desse procedimento implica a impossibilidade de fazer a recuperação, e assim a reprovação na disciplina.


ATENÇÃO: todos os estudantes devem se apropriar do Regulamento Didático-Pedagógico (RDP) do IFSC.

ATENDIMENTO PARALELO

TERÇAS: 17h às 18h. QUINTAS: 11h às 12h.

LOCAL: Sala 2 de Professores de Telecomunicações / Gabinete da Direção-Geral.

MONITORIA

  • Aluno(a): Fulano de Tal
  • e-mail: xxxxxxxxx@aluno.ifsc.edu.br
  • Horários:

Segunda-feira: 13:30 - 15:30
Terça-feira: 13:30 - 16:30
Quarta-feira: 13:00 - 16:00
Quinta-feira: 16:00 - 17:30
Sexta-feira: 11:30 - 14:00

  • Local de Atendimento: Sala de monitoria (ao lado do banheiro masculino do térreo).

Links Interessantes

Aulas

27/07/2023: Introdução a algoritmos

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

01/08/2023: Lógica de Programação - Estruturas de Decisão

Objetivos

  • Introdução a Fluxograma e Pseudocódigo.
  • Estruturas de Decisão.

Material de Referência

03/08/2023: Viagem ao JIFSC (Blumenau/SC)

  • Exercícios.

08/08/2023: Lógica de Programação - Estruturas de Repetição

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

10/08/2023: Lógica de Programação - Estruturas de Repetição (cont)

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

18/08/2023: Introdução a Programação C

Objetivos

  • 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

Introdução a Programação C

Tarefa

17/08/2023: Introdução a Linguagem C (exercícios)

Objetivos

Exercícios: Introdução a Linguagem C.

Material e Referência

Introdução a Programação C

22/08/2023: Estruturas de Decisão

Objetivos

  • 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

Estrutura de Decisão

24/08/2023: Estruturas de Decisão

Objetivos

  • 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

Estrutura de Decisão

29/08/2023: Estruturas de Repetição

Objetivos

  • Estruturas de Repetição.

Material e Referência

Estruturas de Repetição

31/08/2023: Estruturas de Repetição

Objetivos

  • Estruturas de Repetição (continuação)

Material e Referência

Estruturas de Repetição

05/09/2023: Estruturas de Repetição

Objetivos

  • Resolução de exercícios (revisão Avaliação 1).

Material e Referência

Estruturas de Repetição

07/09/2023: Feriado Nacional

  • Independência do Brasil.

12/09/2023: AVALIAÇÃO 1

  • Local: laboratório de informática.

14/09/2023: Vista de prova (Avaliação 1)

Objetivos

Material e Referência

Uso de IDE

19/09/2023: Conceito de Funções e Parâmetros

  • Prof. Tiago estará em BSB, haverá aula com segundo docente da disciplina.

Objetivos

  • Funções e parâmetros
  • Variáveis Locais e Globais

Material e Referência

Funções

21/09/2023: Funções

  • Prof. Tiago estará em BSB, haverá aula com segundo docente da disciplina.

Objetivos

  • Resoluções de exercícios sobre Funções.

Material e Referência

Funções

26/09/2023: Vetores

Objetivos

  • Compreender o conceito de vetores;
  • Definir e inicializar vetores do tipo int, float e double no C;
  • Passar vetores como parâmetro sem usar o conceito de ponteiros.

Material e Referência

Vetores

28/09/2023: Arranjos Vetores (strings)

Objetivos

  • Vetores de char e strings;
  • Processamento de Strings.

Material e Referência

Strings

03/10/2023: Arranjos Multidimensionais

Objetivos

  • Definindo matrizes no C;
  • Operações com matrizes e passagem de parâmetros tipo matriz;
  • Matrizes com caracteres;
  • Exercícios.

Material e Referência

Matrizes

05/10/2023: Arranjos Multidimensionais

Objetivos

  • Matrizes com caracteres (strings);
  • Exercícios.

Material e Referência

Matrizes

10/10/2023: Resolução de Exercícios: vetores e matrizes

Objetivos

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. 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
//desenvolvido pelo aluno: Jeferson Jair (2019-1)

#include <stdio.h>

int contar_espaco(char x[], char y[]){

    int i, cont=0;

    for(i=0; x[i]!=0 ;i++){
       y[i]=x[i];
       if(x[i]==' ')
         cont++;
    }
    y[i++]=0;
    return cont;
}

int main(){

   char a[40] = "Instituto Federal do Santa Catarina";
   char b[40];

   printf("String b = %s com um total de %d espaços\n", b, contar_espaco(a,b));

   return 0;
}
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 */
}
 
int 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);  
  return 0;
}

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;
}
 
int 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);
  printf("Média: %.2f\n", media);
  return 0;
}

12/10/2023: Feriado Nacional

  • Padroeira do Brasil (Nossa Senhora Aparecida).

17/10/2023: Estruturas

Objetivos

  • Definição de estruturas;
  • Estruturas como parâmetros;
  • Inicialização de estruturas;
  • Cópia de estruturas;
  • Exercícios com estruturas.

Material e Referência

Estruturas

19/10/2023: AVALIAÇÃO 2

  • Local: laboratório de informática.

24/10/2023: Correção Avaliação 2

26/10/2023: Estruturas (cont')

Objetivos

  • Definição de estruturas;
  • Estruturas como parâmetros;
  • Inicialização de estruturas;
  • Cópia de estruturas;
  • Exercícios com estruturas.

Material e Referência

Estruturas

31/10/2023:

02/11/2023: Feriado Nacional

  • Finados.

07/11/2023:

  • Prof. Tiago estará no REDITEC (Natal/RN), haverá aula com segundo docente da disciplina.

09/11/2023:

  • Prof. Tiago estará em REDITEC (Natal/RN), haverá aula com segundo docente da disciplina.

14/11/2023:

16/11/2023:

21/11/2023:

23/11/2023:

28/11/2023:

30/11/2023:

05/12/2023:

  • Haverá aula com segundo docente da disciplina.

07/12/2023:

  • Haverá aula com segundo docente da disciplina.

12/12/2023:

14/12/2023:

19/12/2023: Recuperações finais da disciplina