Skip to content

Latest commit

 

History

History
102 lines (87 loc) · 2.47 KB

README.org

File metadata and controls

102 lines (87 loc) · 2.47 KB

CATP #08

Segue a especificação dos exercícios:

  1. Indique o resultado impresso na tela caso a linguagem utilize Escopo estático e Escopo Dinâmico.
    int x = 3;
    void inc (int n) {
        x += n;
    }
    
    void print (void) {
        printf (``%d'', x);
    }
    
    void primeiro (void) {
        inc (9);
        print ();
    }
    
    void segundo (void) {
        int x = 6;
        inc (7);
        print ();
    }
    
    void main (int argc, char **argv) {
        inc (-4);
        primeiro ();
        print ();
        segundo ();
        print ();
    }
        
  2. Informe quais variáveis são estáticas e quais são dinâmicas do código do exercício anterior.
  3. Repita o exercício anterior considerando o seguinte trecho de código:
    int x = 0;
    void foo (int a){
      static int b = 0;
      int c = a * 2;
      b++;
    }
    void main (void){
      int d = 10;
      float *e = malloc (sizeof(float));
      foo(d);
      free(e);
    }
        
  4. Indique aonde seriam alocadas as variáveis do código do exercício inicial, considerando o segmento de código, segmento de dados, pilha e monte.
  5. Repita o exercício anterior para o código do exercício anterior anterior.
  6. Uma pessoa desenvolveu o seguinte programa com o objetivo de imprimir na tela o dia da semana por extenso. Para tanto, o programa utiliza a função de sistema denominada time(), que retorna quantos segundos se passaram entre a hora atual e 01/01/1970. Tal resultado é analisado pela função localtime(), que analisa o resultado dado por time() e preenche uma estrutura de dados (tblock) contendo informações sobre a data e a hora local do sistema. Ao executar, a pessoa percebeu que o comportamento do programa é errático, hora funcionando e hora não funcionando, apresentando resultados estranhos. Analise o programa e explique os motivos para tal comportamento ocorrer. Apresente soluções.
    #include<stdio.h>
    #include<conio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<time.h>
    
    char* diaSemana(){
      char diaExt[][4] = { "dom", "seg", "ter", "qua", "qui", "sex", "sab" } ;
      time_t timer;
      struct tm *tblock;
      timer = time(NULL);
      tblock = localtime(&timer);
      return diaExt[tblock->tm_wday];
    }
    main(){
      char* dia;
      dia = diaSemana();
      clrscr();
      printf("%d %s\n", dia, dia);
    }