PRG29002 - Programação I - Eng.Telecom 2019-2

De MediaWiki do Campus São José
Revisão de 11h00min de 15 de outubro de 2019 por Tisemp (discussão | contribs) (Aulas)
Ir para navegação Ir para pesquisar

1 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.

2 ATENDIMENTO PARALELO

SEGUNDA: 17h:00 às 18h00 QUINTA: 14h:00 às 15h:00.

LOCAL: Sala 2 de Professores de Telecomunicações.

3 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).

4 Links Interessantes

5 Aulas

5.1 31/07/2019: Introdução a algoritmos

5.1.1 Objetivos

  • Apresentação do Plano de Ensino;
  • Introdução a Fluxograma e pseudocódigo.

5.1.2 Material de Referência

Aula Introdutória sobre Lógica de Programação

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

5.3 Objetivos

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

5.4 Material de Referência

Lógica de Programação: Estruturas de Decisão

5.5 07/08/2019: Lógica de Programação - Estruturas de Repetição

5.6 Objetivos

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

5.7 Material de Referência

Lógica de Programação: Estruturas de Repetição

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

5.9 Objetivos

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

5.10 Material de Referência

Lógica de Programação: Estruturas de Repetição

5.11 14/08/2019: Lógica de Programação - Estruturas de Repetição (cont)

5.12 Objetivos

  • Estruturas de Decisão
  • Resolução de Exercícios

5.13 Material de Referência

Lógica de Programação: Estruturas de Repetição

5.14 15/08/2019: Introdução a Programação C

5.15 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().

5.16 Material de Referência

Introdução a Programação C

5.17 TAREFA

5.18 21/08/2019: Introdução a Linguagem C (exercícios)

5.19 Objetivos

Exercícios: Introdução a Linguagem C

5.20 Material e Referência

Introdução a Programação C

5.21 22/08/2019: Estruturas de Decisão

5.22 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

5.23 Material e Referência

Estrutura de Decisão

5.24 28/08/2019: Estruturas de Decisão

5.25 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

5.26 Material e Referência

Estrutura de Decisão

5.27 29/08/2019: Estruturas de Repetição

5.28 Objetivos

  • Estruturas de Repetição

5.29 Material e Referência

Estruturas de Repetição

5.30 04/09/2019: Estruturas de Repetição

5.31 Objetivos

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

5.32 Material e Referência

Estruturas de Repetição

5.33 05/09/2019: Estruturas de Repetição

5.34 Objetivos

  • Estruturas de Repetição (resolução de exercícios)

5.35 Material e Referência

Estruturas de Repetição

5.36 11/09/2019: Revisão para Avaliação

  • Resolução de exercícios.

5.37 Material e Referência

Estruturas de Repetição

5.38 12/09/2019: AVALIAÇÃO 1

5.39 18/09/2019: Vista de prova (Avaliação 1)

5.39.1 Objetivos

5.39.2 Material e Referência

Uso de IDE

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

5.40.1 Objetivos

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

5.40.2 Material e Referência

Funções

5.41 25/09/2019: Funções

5.41.1 Objetivos

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

5.41.2 Material e Referência

Funções

5.42 26/09/2019: Vetores

5.42.1 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;

5.42.2 Material e Referência

Vetores

5.43 02/10/2019: Arranjos Vetores (strings)

5.43.1 Objetivos

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

5.43.2 Material e Referência

Strings

5.44 03/10/2019: Vetores

  • Resolução de exercícios (1 - 11).

5.45 09/10/2019: Arranjos Multidimensionais

5.45.1 Objetivos

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

5.45.2 Material e Referência

Matrizes

5.46 10/10/2019: Arranjos Multidimensionais

5.46.1 Objetivos

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

5.46.2 Material e Referência

Matrizes

5.47 16/10/2019: Resolução de Exercícios: vetores e matrizes

5.47.1 Objetivos

5.47.2 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;
}

5.47.3 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);
}

5.47.4 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;
}

5.48 17/10/2019: AVALIAÇÃO 2

5.49 23/10/2019: Estruturas

5.50 24/10/2019: Ponteiros

5.51 30/10/2019: Apresentação do Projeto da Disciplina

5.52 31/10/2019: Vetor de Ponteiros

5.53 06/11/2019: Vetor de Ponteiros

5.54 06/11/2019: Acesso ao Sistema de Arquivos - parte 1

5.55 13/11/2019: Acesso ao Sistema de Arquivos - parte 2

5.56 14/11/2019: AVALIAÇÃO 3

5.57 20/11/2019: Desenvolvimento do Projeto

5.58 21/11/2019: Desenvolvimento do Projeto

5.59 27/11/2019: Desenvolvimento do Projeto

5.60 28/11/2019: Desenvolvimento do Projeto

5.61 04/12/2019: Apresentação do Projeto

5.62 05/12/2019: Apresentação do Projeto

5.63 11/12/2019: RECUPERAÇÕES

5.64 12/12/2019: Encerramento da Disciplina