Mudanças entre as edições de "PRG29002-2020-1-Manha"

De MediaWiki do Campus São José
Ir para navegação Ir para pesquisar
Linha 950: Linha 950:
  
 
     } while (opcao != 3);
 
     } while (opcao != 3);
 +
}
 +
</syntaxhighlight>
 +
 +
 +
 +
<syntaxhighlight lang=c>
 +
#include <stdio.h>
 +
 +
typedef struct{
 +
    char rua[100];
 +
    int numero;
 +
} tipo_endereco;
 +
 +
tipo_endereco ifsc;
 +
 +
/*
 +
* implementar uma função para atualizar o número de uma estrutura
 +
* passada como parametro.
 +
* A função retorna o ponteiro para a estrutura atualizada
 +
*/
 +
tipo_endereco *atualizar_num(tipo_endereco *p, int num)
 +
{
 +
 +
}
 +
int main()
 +
{
 +
    tipo_endereco *p;
 +
    p = atualizar_num(&ifsc, 100);
 +
    printf("Num = %d\n", p->numero);
 +
    return 0;
 
}
 
}
 
</syntaxhighlight>
 
</syntaxhighlight>

Edição das 10h09min de 17 de setembro de 2020

PROFESSOR

  • Eraldo Silveira e Silva

ATENDIMENTO PARALELO

SEGUNDA: 14h30 às 15h30 QUARTA: 10h às 11h

LOCAL: Sala 1 de Professores de Telecomunicações ou em algum dos laboratórios de TELE/CAD

MONITORIA

  • Aluna:
  • Horários:

Links Interessantes

AULA 1 - Dia 11/02/2020

Objetivos

  • Apresentar o plano de ensino
  • Discutir a forma de avaliação
  • Introdução a Lógica de Programação

Material de Referência

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


AULA 2 - 13/02/2012

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 - 18/02/2020

Objetivos

  • Floxograma: Estruturas de Repetição

Material de Referência

Estruturas de Repetição


AULA 4 - 20/02/2020

Objetivos

  • Exercícios de Lógica de Porogramação.

Exercício Proposto 1

  • Faça um fluxograma para entrar com N números e com um número de referência (REF). Mostrar quantos números estão abaixo desta referência.

Exercício Proposto 2

  • Faça um fluxograma para entrar com N números e com dois números de referência (REF1 e REF2). Mostrar a média dos números que estão entre estas referÊncias (inclusive). OBS: Considere que REF2 sempre será maior que REF1, para simplificar a solução. OBS2: LEMBRAR que não pode ser realizada uma divisão por ZERO. Proteger esta operação com uma estrutura de decisão.

Exercício Proposto 3

  • Faça um fluxograma para calcular a média de uma prova realizada com N alunos. N será fornecido no início do algoritmo. Mostrar quantos alunos estão com nota acima de 6. Mostrar também quantos alunos precisam recuperar esta prova (abaixo ou igual a 5). OBS: Considere que as notas das provas são números inteiros de 0 a 10.

Exercício Proposto 4

  • Modificar o exercício anterior para que seja também mostrada a maior nota da prova. SUGESTÂO: criar uma variável auxiliar MAIOR e iniciá-la com ZERO. Comparar cada nota com o valor desta variável. Se ela form maior, substituir o valor de MAIOR pela nota.

Material de Referência

Estruturas de Repetição


AULA 5 27/02/2020

Objetivos

  • Exercícios de Lógica de Programação.

Exercício Proposto 1

Faça um fluxograma para computar a média de números fornecidos como entrada. Caso o número fornecido seja ZERO o sistema deve fazer o cálculo da média, mostrá-la e encerrar.


Exercício Proposto 2

Modifique a solução para o exercício anterior de forma que o sistema ignore entradas que estejam na faixa OU . (recordar notação de intervalos aqui: https://www.infoescola.com/matematica/intervalo/)

Exercício Proposto 3

Considere um sistema de controle de acesso que abre uma porta através de uma senha alfanumérica. Ao ser ligado o sistema pergunta qual a senha desejada para ser utilizada. O usuário deve fornecer a senha que deseja usar e na sequência um código fornecido na caixa do produto, de forma a validar o processo. Se o código fornecido for errado então ele será perguntado novamente até que seja fornecido corretamente.

Na sequência, o sistema abre a porta normalmente para a senha colocada. Entretanto, se em algum momento o usuário errar por 3 vezes, o sistema é bloqueado fornecendo uma mensagem "ENTRE COM O CÒDIGO DO PRODUTO" para desbloquear, permanecendo no aguardo para o fornecimento deste código. . Se fornecido corretamente o sistema é desbloqueado e volta a funcionar normalmente, caso contrário volta a perguntar pelo CÓDIGO do produto.

Exercício Proposto 4

A fórmula de um termo de uma PG (progressão Geométrica) é dado por:

ou

Sem usar fórmulas de SOMA de termos faça um fluxograma para calcular a média dos 10 primeiros termos, dado e . Supor que não são fornecidos "ZEROS" para estes valores.


Exercício Proposto 5

Flexibilize a solução do problema anterior para computar a média dos N primeiros termos, onde N é inicialmente fornecido.

Exercício Proposto 6

Elabore um fluxograma para receber como entrada dois números (suponha inteiro positivos). Computar o fatorial do maior número.

AULA 6 03/03/2020

Objetivos

  • Introdução a Programação C

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA 7 05/03/2020

Objetivos

  • Introdução a Programação C
  • Declaração de Variáveis
  • Comandos de Decisão

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA 8 09/03/2020

Objetivos

  • Introdução a Programação C
  • Declaração de Variáveis
  • Comandos de Decisão (continuação)

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA 9 12/03/2020

Objetivos

  • Comandos de Decisão (continuação)
  • variável tipo char e discussão sobre a sujeira do teclado

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_4_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

https://wiki.sj.ifsc.edu.br/index.php/AULA_5_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA 11 26/03/2020

Objetivos

  • Comandos de repetição while e do while

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia


AULA 12 31/03/2020

Objetivos

  • Comandos de repetição while e do while
  • Comando for

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA 13 2/04/2020

Objetivos

  • Comando for

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia


AULA VIRTUAL 14 7/04/2020

Objetivos

  • Revisão de comandos de repetição
  • Variações do exercício de sorteio do while()
  • Exercícios 5 6 da wiki nível inicial

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA VIRTUAL 14 7/04/2020

Objetivos

  • Exercícios

Exercício para resolução em sala - Extra Wiki

  1. Exercícios 1 e 2 de nível médio da wiki: aula de comandos de repetição.
  2. Implemente um programa para geração de 6 números da megasena (de 1 a 60). Note que os números não podem se repetir.

Não usar vetor. Armazenar os valores gerados em variáveis de nome num1, num2,...num6. OBS: como ainda não aprendemos vetores teremos que a cada geração verificar se não coincide com o número anterior.Uma seugestão seria:

int  main() {
  int i,num1,num2,num3,num4,num5,num6;

  /* gerar primeiro número e armazenar em num1 */

  for (i=2;i<=6;i++) { /* gerar próximos 5 números */
     switch (i) {
        2: /*fazer um loop com do while ou while para gerar num2 confrontando com num1 */
           break;
        3: /*fazer um loop com do while ou while para gerar num3 confrontando com num1 e num2 */
          
         : etc
     }

  }
}

AULA VIRTUAL 15 14/04/2020

Objetivos

  • Funções

Material de Referência

AULA VIRTUAL 16 23/04/2020

Objetivos

  • Explicação do Exercício
  • Funções (continuação)
    • Conceito de Função
    • Como definir e declarar função;
    • O papel da função em implementar sub-problemas
    • Exercício

Material de Referência

AULA VIRTUAL (Esta aula não terá encontro síncrono) 28/04/2020

Objetivos

  • Funções (continuação) - Ver os vídeos dos exercícios abaixo.
    • Conceito de Função
    • Como definir e declarar função;


AULA VIRTUAL 30/04/2020

Objetivos

  • Continuação Funções
    • Conceito de Variáveis Globais e Locais;
    • Inicialização de Variáveis
  • Exercícios

Material de Referência


AULA/reunião VIRTUAL 19/05/2020

Objetivos

  • Discutir como encaminhar a matéria

Revisão da Matéria - até dia 29/05

  • assistir vídeos/aulas wiki revisão - links a serem colocados como tarefas no siga a;
  • assistir vídeos explicativos tarefa A1.1
  • fazer dois exercícios a serem entregues dia 29/05

Instalação do CLion

semana que vem...

Revisão de Funções

semana que vem

AULA/reunião VIRTUAL 21/05/2020

Objetivos

  • Revisão Comando if else: exercício Maior entre 3 números
  • Resolução Exercício 1 da Tarefa A1.1

Comando if-else - Problema Maior


AULA VIRTUAL Síncrona 26/05/2020

Objetivos

  • Revisão Comandos de Repetição
  • Resolução Exercício 1 da Tarefa A1.2

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_6_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA VIRTUAL Síncrona 2/06/2020

Objetivos

  • Introdução a arrays unidimensionais no C
  • Arrays de inteiros e de floats
  • Exercício de ler 5 números e computar quantos estão acima da média.

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia#ARRAYS_unidimensionais_.28vetores.29

AULA VIRTUAL Síncrona 4/06/2020

Objetivos

  • Introdução a arrays unidimensionais no C (Continuação)
  • Arrays de inteiros e de floats
  • Exercício de ler 5 números e computar quantos estão acima da média.

Exercício

Implementar uma função que recebe um vetor de float com tamanho 10 como parâmetro. A função deve retornar a média dos números armazenados no vetor. Teste a função no "main". Crie um vetor local inicializado.

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_9_-_Programa%C3%A7%C3%A3o_1_-_Engenharia#ARRAYS_unidimensionais_.28vetores.29


/*
 Implementar uma função que recebe um
 vetor de float com tamanho 10 como parâmetro.
 A função deve retornar a média dos números positivos armazenados no vetor.
 Teste a função no "main". Crie um vetor local inicializado.
 Problema: divisão por zero...
 */

#include <stdio.h>

float calcular_media_positivos(float vetor[10])
{
    int i,cont=0;
    float soma_ac, media;

    for(i=0;i<10;i=i+1){
        if(vetor[i]>0) {
            soma_ac = soma_ac + vetor[i];
            cont = cont + 1;
        }
    }
    media = soma_ac/cont;

    return(media);
}

int main()
{
    float alfa[10] = {3.5,2.7,9.7,8.5,2,9,4.7,3,2,3};
    float beta[10] = {6.5,8.7,3.7,8.5,1,9,4.7,3,2,3};
    float media_final;

    media_final = (calcular_media_positivos(alfa) + calcular_media_positivos(beta))/2;
    printf("media = %f\n", media_final);
}

AULA VIRTUAL Síncrona 9/06/2020

Objetivos

  • Arrays unidimensionais no C (Continuação)
  • Arrays de char e Strings NULL terminadas

Material de Referência

Exercício de Base da Aula

  1. Fazer um programa para computar o número de caracteres de uma cadeia (string) lida pelo teclado.Use o comando while;
  2. Fazer uma variação para um array iniciado;
  3. Fazer uma variação implementando uma função que retorna o número de caracteres.

AULA VIRTUAL Síncrona 16/06/2020

Objetivos

  • Arrays de char e Strings NULL terminadas (Continuação)

Material de Referência

Exercício de Base da Aula

  1. Implementar um programa C para criar um array de char iniciado com um nome do time de futebol de sua preferência. O programa deve "printar" o nome do time, o número de caracteres do nome e o número de ocorrência de vogais.
  2. Implementar uma função para para capitalizar uma string inserida pelo teclado. A função deve retornar o número de caracteres que foram capitalizados.
  3. Implementar uma função para concatenar duas strings que estão armazenadas em dois vetores separados. Criar um terceiro vetor para comportar a concatenação.

AULA VIRTUAL Síncrona 18/06/2020

Objetivos

  • Funções da Biblioteca para Operação com Strings
  • Exercícios de Operação sobre strings

Exercícios 1 em Sala Virtual

Elaborar uma função C para computar o tamanho de uma string conforme esqueleto mostrado baixo.

#include <stdio.h>

int str_len(char str [])
{

  //retorna o tamanho da string armazenada em str[]
}

int main()
{
    char x[100] = "IFSC-";
    char y[100] = "Telecom SJ";
    int tam;

    tam = str_len(x);
    printf("x - > %s com tamanho %d\n", x, tam);

    tam = str_len(y);
    printf("y - > %s com tamanho %d\n", y, tam);
    return 0;
}

Exercícios 2 em Sala Virtual

Construir um função para concatenar duas strings conforme esqueleto mostrado abaixo. A funçã deve retornar o tamanho total da string concatenada.

#include <stdio.h>
#include <string.h>

int str_cat(char str1 [],char str2 [])
{

  //retorna o tamanho da string armazenada em str[]
}

int main()
{
    char x[100] = "IFSC-";
    char y[100] = "Telecom SJ";
    int tam;

    tam = str_cat(x,y);
    printf("x - > %s com tamanho %d\n", x, tam);

    return 0;
}

Material de Referência

AULA VIRTUAL Síncrona 23/06/2020

Objetivos

  • Exercício de Comparação de Strings
  • Introdução a arranjos multidimensionais no C

EXERCÍCIO DE COMPARAÇÃO ENTRE DUAS STRINGS

Introdução a Arranjos Multidimensionais - Wiki desta aula

Exercício em Sala

  1. Implementar um programa para calcular a média de todos elementos da matriz C (exemplo inicial da wiki).
  2. Fazer uma função que recebe duas matrizes 2x3 como parâmetros e retorna a média entre todos elementos da matriz soma destas matrizes.

AULA VIRTUAL Síncrona 25/06/2020

Objetivos

AULA VIRTUAL Síncrona 2/07/2020

Objetivos

  • Arranjo Multidimensional: Vetor de Strings

Referência para eta aula

Exercício em sala

Implementar um programa para "abrir uma porta" para um usuário que se encontra em uma tabela de usuários. Faça uma versão com (i) uma função implementada por você para comparar strings (ii) a função strcmp() da biblioteca


AULA VIRTUAL Síncrona 7/07/2020

Objetivos

  • Arranjo Multidimensional: Exercício de Vetor de Strings

Exercício (ver Arranjos Multidimensionais)

  1. Implementar controle de acesso para múltiplos usuários e com senha associada a cada um deles.
  2. Implementar um contador de acesso para cada usuário.


AULA VIRTUAL Síncrona 9/07/2020

Objetivos

  • Arranjo Multidimensional: Exercício de Vetor de Strings - (continuação)


Exercício (ver Arranjos Multidimensionais)

  1. Implementar controle de acesso para múltiplos usuários e com senha associada a cada um deles.
  2. Implementar um contador de acesso para cada usuário.

AULA VIRTUAL Síncrona 4/08/2020

Objetivos

  • Estruturas: Parte 1

Referências

AULA VIRTUAL Síncrona 6/08/2020

Objetivos

  • Estruturas: Parte 1

Referências

AULA VIRTUAL Síncrona 11/08/2020

Objetivos

  • Exercícios sobre Estruturas- Questionário A3.1 - SIGA A

AULA VIRTUAL Síncrona 13/08/2020

Objetivos

  • Introdução Ponteiros no C
  • Exercícios - Questionário A3.1 - SIGA A

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_17_-_Programa%C3%A7%C3%A3o_1_-_Engenharia

AULA VIRTUAL Síncrona 18/08/2020

Objetivos

  • Avisos:
    • Novos exercícios funções e strings (preparação avaliação)
    • Avaliação 1 - Recuperação - Semana dia 31/8 - a marcar
    • A2 - Dia 27/08
    • Ficar atento aos exercícios do SIGAA
  • Ponteiros para char e ponteiros para vetores

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_17_-_Programa%C3%A7%C3%A3o_1_-_Engenharia


AULA VIRTUAL Síncrona 20/08/2020

Objetivos

  • Conceito de Vetor de Ponteiros
  • Passagem de parâmetros na linha de comando
  • Ponteiro para estruturas

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_19_-_Programa%C3%A7%C3%A3o_1_-_Engenharia#Ponteiros_para_qualquer_.22coisa.22...

AULA VIRTUAL Síncrona 25/08/2020

Objetivos

  • Exercícios de Preparação para Avaliação 2 (ver TAREFAS SIGAA)
  • Distribuição de Projetos e Etapa 1

Material de Referência


AULA VIRTUAL Síncrona 27/08/2020

Objetivos

Avaliação 2


AULA VIRTUAL Síncrona 1/09/2020

Objetivos

  • Etapa 1 do Projeto - Encaminhamento

Material de Referência

https://wiki.sj.ifsc.edu.br/index.php/AULA_Proposta_de_Projetos_-_Programa%C3%A7%C3%A3o_1_-_Engenharia#Projeto_final


AULA VIRTUAL Síncrona 3/09/2020

Objetivos

  • Construção de Programas C usando Múltiplos Arquivos

Material de Referência

AULA VIRTUAL Síncrona 8/09/2020

Objetivos

  • Construção de Programas C usando Múltiplos Arquivos

Material de Referência

Data de Avaliação

  • Aval3: 18/09 - na mesma data REC Aval1
    • Assunto: Estruturas e Ponteiros
  • Rec Aval2 e Aval3: 02/Out
    • Assunto Aval2: Funções e Arranjos

AULA VIRTUAL Síncrona 8/09/2020

Objetivos

  • Desenvolvimento do Projeto - Etapa 2

Procedimento

  • Discutir e e encaminhar a etapa 2 com cada equipe.

AULA VIRTUAL Síncrona 15/09/2020

Objetivos

  • AVAL 3 - Semana que vem!!!
  • Breve revisão do Conceito de Ponteiros
  • Ponteiro Para Estruturas

Lembrando: aulas para a Aval.3

Estruturas
Ponteiros
Vetor de Ponteiros e Ponteiro Para Estruturas


Material de Referência

Exercício sobre Gerenciamento de REGISTRO (structs) COM "LACUNAS LIVRES"

Link Vídeo Explicativo

Reimplementar o programa abaixo, modificando as funções adicionar_usuario e remover_usuario() para que usem a função retornar_ptr_item_livre_tab_usuarios() no lugar de retornar_item_livre_tab_usuarios().

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>


/* Autores: Professores PRG1 - IFSC -SJ   */
/******************************************/
/*
*Para fins didáticos, demonstramos como gerenciar um
vetor de structs marcando registros livres através de um flag
* Note que existem formas mais eficientes de fazer busca em tabelas (ver PRG 2)
*/
/******************************************/

#define LIVRE 0
#define OCUPADO 1

#define TAM_USER 10
#define TAM_NOME 20

/******************************************/
/* Protótipos de funções  - colocar em .h */
/******************************************/

void gerenciar_usuarios();
void adicionar_usuario();
void remover_usuario();
void iniciar_tabela();
int retornar_item_livre_tab_usuarios();


/******************************************/
/* Variáveis Globais                      */
/******************************************/

/* a fazer */

struct tipo_usuario{
    char nome[TAM_NOME];
    int idade;
    char flag;    /* se 0 registro livre - se 1 ocupado */
} tab_usuarios[TAM_USER];

/******************************************/

int main()
{
    iniciar_tabela(); /* liberar todos os registros */
    gerenciar_usuarios();
}

/*
  Esta função inicia a tabela com todos registros livres
  Aqui seria uma boa oportunidade para ler dados de um arquivo e iniciar a tabela
*/
void iniciar_tabela()
{
    int i;

    for (i=0;i<TAM_USER;i++){
        tab_usuarios[i].flag=LIVRE;
    }
}

/*
  retorna -1 se não existe item livre na tabela
  ou retorna o índice onde existe item livre
*/
int retornar_item_livre_tab_usuarios()
{
    int i=0;

    while(i<TAM_USER && tab_usuarios[i].flag==OCUPADO) {
        i++;
    }
    if (i==TAM_USER)
        i=-1;
    return i;
}

/*
  retorna -1 se não existe item livre na tabela
  ou retorna o índice onde existe item livre
*/
struct  tipo_usuario *retornar_ptr_item_livre_tab_usuarios()
{
    int i=0;
    struct tipo_usuario *p =  &tab_usuarios[0];

    while(i<TAM_USER && p->flag==OCUPADO) {
        i++;
        // p = &tab_usuarios[i];
        p++;
    }
    if (i==TAM_USER)
        p = NULL;
    return p;
}

/*
 * Esta função insere usuário na tabela. NOTE que ela não testa se o
 * usuário já se encontra na mesma... Poderia ser criada uma função para isto...
 */
void adicionar_usuario()
{
    int ret;
    ret = retornar_item_livre_tab_usuarios();
    if (ret==-1)
        printf("Não existe espaço\n");
    else {
        printf("Entre com usuario\n");
        scanf("%s", tab_usuarios[ret].nome);
        tab_usuarios[ret].flag = OCUPADO;
    }
}

void remover_usuario()
{
    char buffer[TAM_NOME];
    int i=0;

    printf("Qual o nome do usuário a remover?\n");
    scanf ("%s", buffer);
    for (i=0;i<TAM_USER;i++){
        if (tab_usuarios[i].flag == OCUPADO && strcmp(buffer, tab_usuarios[i].nome)==0) {
            break;
        }
    }

    if (i<TAM_USER) {/* usuário encontrado */
        tab_usuarios[i].flag = LIVRE;
        printf("usuario %s removido da posição %d\n", tab_usuarios[i].nome, i);
    } else {
        printf("Usuário não se encontra na tabela\n");
    }

}

/***************************************************/
/* Esta funções deveriam estar em arquivo separado */
/***************************************************/
void gerenciar_usuarios()
{
    int opcao;

    do {
        system("clear");
        printf("**********************************\n");
        printf("Menu Nível 2 - Gerenciar Usuários\n\n");
        printf("1. Adicionar Usuário\n");
        printf("2. Remover Usuário\n");
        printf("3. Sair do Gerenciar Usuários\n");
        printf("**********************************\n");
        scanf("%d",&opcao);
        switch (opcao) {
            case 1: adicionar_usuario();
                break;
            case 2: remover_usuario();
                break;
            case 3: printf("Finalizando Gerenciar Usuários...\n");
                sleep(1); /* tempo somente para fins de visualização */
                break;
            default: printf("Opção inexistente. Tente novamente...\n");
                sleep(1); /* tempo somente para fins de visualização */
                break;
        }

    } while (opcao != 3);
}


#include <stdio.h>

typedef struct{
    char rua[100];
    int numero;
} tipo_endereco;

tipo_endereco ifsc;

/*
 * implementar uma função para atualizar o número de uma estrutura
 * passada como parametro.
 * A função retorna o ponteiro para a estrutura atualizada
*/
tipo_endereco *atualizar_num(tipo_endereco *p, int num)
{

}
int main()
{
    tipo_endereco *p;
    p = atualizar_num(&ifsc, 100);
    printf("Num = %d\n", p->numero);
    return 0;
}

SUPORTE DURANTE A SITUAÇÂO DE CRISE

Instalando o Linux na VirtualBox

Conforme comentando em aula, o Linux pode ser instalado sobre uma máquina VIRTUAL em um sistema (hospedeiro) Windows ou Linux. Pode-se selecionar (ver condições de uso) uma distribuição gratuita do Linux e de uma Máquina Virtual. Ver abaixo procedimento para instalação. SEMPRE salve seus dados antes de qualquer operação sobre o sistema Windows ou Linux ou MacOS. NÃO recomendo DUAL BOOT pois pode (ainda que com baixa probabilidade) danificar o sistema hospedeiro.

  • Fazer Download do arquivo ISO em [2] versão Ubuntu 18.04.3 LTS. Escolher a opção Desktop. Confira se o seu PC é 64 bits (os mais novos são).
  • Instalar a VirtualBox (já está instalada no nosso Lab). Baixar de [3] e selecionar para a máquina hospedeira alvo. Selecione o sistema hospedeiro (o seu sistema) correto.
  • O procedimento abaixo é para instalação de uma máquina virtual sobre o hospedeiro Linux Ubuntu mas para o Windows é bastante similar. Se tiver dúvidas pesquise no google como fazer a instalação sobre o Windows. Note que o VirtualBox é instalado como aplicativo tanto no Windows como Ubuntu.

Caso a distribuição que tenha instalado não possua o GCC, pode instalá-lo usando na linha de comando (para a familília Debian/Ubuntu):

 $ sudo apt install g++

Note que $ é o prompt (não faz parte do comando).

Compilador C no Android

Eu instalei e testei sem problemas (mas não posso garantir nada)) no meu Android, o compilador C "Coding C" (a partir do Play Store). Para testar pequenos programas pode ser uma solução interessante. Ele permite compilar offline, ou seja, não precisa usar a rede.

DevC++ no Windows

Como comentei em aula, em situação normal não recomendo usar um compilador C sobre o Windows diretamente. Como estamos em situação emergencial, uma opção seria instalar o DevC++diretamente no Ubuntu.

Vi um tutorial em : http://linguagemc.com.br/tutorial-de-instalacao-do-dev-c/ Não testei...