Proposta de Aulas de Introdução a Programação C

De MediaWiki do Campus São José
Ir para: navegação, pesquisa

Aulas

Aula Inaugural - Conceito de Algoritmos, Fluxogramas e Pseudocódigo. Teste de Mesa.
Lógica de Programação: Expressões - Estruturas de Decisão
Lógica de Programação: Estruturas de Repetição/Subprogramas
Introdução a Programação C
Estruturas de Decisão no C
Estruturas de Repetição no C
Uso de IDE com o C
Funções no C
Arranjos no C - Vetores de int e float/double
Arranjos no C - Vetores de Char
Funções da Biblioteca do C para manipulação de strings e mais Exercícios
Arranjos Multidimensionais
Estruturas
Ponteiros
Vetor de Ponteiros e Ponteiro Para Estruturas
Alocação Dinâmica de Memória
Tratamento de Arquivos - Parte I
Tratamento de Arquivos - Parte II
Tratamento de Arquivos - Parte III
Múltiplos Arquivos - Uso do Make
Operações com Bits
Unions, tipos enumerados
Propostas de Projetos

Aulas de exercícios

AULA 19 - Dia 9/12/2015 - Exercícios - Continuação Batalha Naval
AULA 20 - Dia 12/12/2015 - Exercícios - Continuação Batalha Naval

Adendos:

a) Inserir uma função após o tiro para fornecer uma dica do número de navios que se encontra nas casas imediatamente vizinhas ao tiro realizado.

solução 1 - Testar
int TestarVizinhanca(int x, int y)
{
 int cont=0;
 
 if(x>0) {
    if (y>0) { 
 		if (ZonaGuerra[x-1][y-1]>0 && ZonaGuerra[x-1][y-1]<4)
    		cont++;
    }
 	if (ZonaGuerra[x-1][y]>0 && ZonaGuerra[x-1][y]<4)
    	cont++;
    if(y<9) {
 		if (ZonaGuerra[x-1][y+1]>0 && ZonaGuerra[x-1][y+1]<4)
    		cont++;
    }  
 }
 
 if (y>0) {   
 	if (ZonaGuerra[x][y-1]>0 && ZonaGuerra[x][y-1]<4)
    	cont++;
 }
 if(y<9) {   
 	if (ZonaGuerra[x][y+1]>0 && ZonaGuerra[x][y+1]<4)
    	cont++;
 }
 
 if (x<9) {
    if (y>0) {
 		if (ZonaGuerra[x+1][y-1]>0 && ZonaGuerra[x+1][y-1]<4)
    		cont++;
    }
 	if (ZonaGuerra[x+1][y]>0 && ZonaGuerra[x+1][y]<4)
    	cont++;
    if(y<9) {     	
 		if (ZonaGuerra[x+1][y+1]>0 && ZonaGuerra[x+1][y+1]<4)
    		cont++;
    }      
 }   
}
solução 2 - Testar
int TestarVizinhanca(int x, int y)
{
  int i,j,cont;
  
  for (i=x-1;i<x+2;i++) {
     for (j=y-1;j<y+2;j++) {
           if (!(i==-1 || i==10 || j==-1 || j==10 || (i==x && j==y)))
           	if (ZonaDeGuerra[i][j]>0 && ZonaDeGuerra[i][j]<4)
               		cont++;
      }
  }
  return cont;
}

b) Inserir uma funcionalidade para armazenar nomes e pontuação de usuários. Ao final de cada programa mostrar a tabela de usuários com pontuação. Dica: criar 2 tabelas: uma de strings e outra de inteiros. A primeira para armazenar os nomes de usuários e a segunda para armazenar a pontuação.


Exercícios adicionais de preparação para avaliação 1 de Laboratório
  1. Implementar uma função que desenha uma figura no terminal e cujo esqueleto é:
     void plotar_fig(int margem, int lado, char car1)
    

    Exemplo de uso:

      plotar_fig(6,5,'A')
    

    A figura deverá ser desenhada da forma (onde aparece 'b' é espaço em branco):

    bbbbbbA
    
    bbbbbbAA
    
    bbbbbbAAA
    
    bbbbbbAAAA
    
    bbbbbbAAAAA
    

    Os parâmetros indicam:

      (1) 'margem' - número de espaços em branco da última linha 
      (2) 'lado' -  número de caracteres 'car1' na úlima linha e 
      (3) 'car1' - o caracter da figura.  
    
  2. Implementar uma função que recebe como parâmetros um vetor de inteiros e o seu tamanho. A função deve retornar a média entre todos os números armazenados no vetor. Exemplo:
    float media_vet(int vetor[], int tamanho)
    {
    
    }
    main()
    {
      float media;
      int x[10] = {1,8,6,5,9,14,2,3,10,0};
      
      media = media_vet(x,10);
    }
    
  3. Implementar uma função que recebe como parâmetros um vetor de inteiros e o tamanho deste vetor. A função deve retornar o maior número armazenado neste vetor. Exemplo:
    int maior_vet(int vetor[], int tamanho)
    {
    
    }
    main()
    {
      int  maior;
      int x[10] = {1,8,6,5,9,14,2,3,10,0};
      
      maior = maior_vet(x,10); /* o valor retornado deve ser 14 */
    }
    
  4. Implementar uma função que recebe uma matriz 2x3 de floats. Ela deve retornar a média entre todos os elements da matriz. Exemplo:
    float media_mat(float  matriz[2][3])
    {
    }
    main()
    { 
      float x[2][3] = {
                         {2.6,-7.4,3.9},
                         {8.6,9.4,5.1}
                      };
      float media;
      media = media_mat(x);
    }
    
  5. Considere uma tabela global com nomes (user ids) armazenados. Implementar uma função para buscar um user_id na tabela. A função deve retornar 0 se foi encontrado o tem e -1 se não foi encontrado.
    char tabela_userid[5][10] = {
      "alfa",
      "delta",
      "gama",
      "epson",
      "beta"
    };
    
    int procurar_userid(char user_id[])
    {
    }
    
  6. Implementar uma função que recebe dois vetores de inteiros e retorna a maior média dentre os seus componentes.
    float calc_media(int vet1[], int tam1, int vet2[], int tam2)
    {
    }
    main()
    {
      int x[5]={2,6,3,4,9};
      int y[7]={4,2,8,1,0,3,8};
      float media;
      
      media = calc_media(x,5,y,7);
    }
    
  7. Implementar uma função que calcula a média de todos os elementos de um vetor de inteiros maiores que um determinado número passado como parâmetro.
    float calc_media(int vet1[], int tam1, int numero)
    {
    }
    main()
    {
      int x[5]={1,4,6,3,5};
      float media;
      
      media = calc_media (x,5,3); /*retorna a media de todos os elementos maiores que 3*/
    }
    
  8. Implementar uma função que recebe duas strings como parâmero e retorna 0 se último caracter destas strings são diferentes, 1 se iguais. Exemplo:
     int comp_ult(char vet1[], char vet2[])
     {   
     }
     main()
     {
       int ret;
       char x[]="alfa";
       char y[]="beta";
       
       ret=comp_ult(vet1,vet2); 
     }
    
AULA 28 Outros