Mostrando postagens com marcador Engenharia de Software. Mostrar todas as postagens
Mostrando postagens com marcador Engenharia de Software. Mostrar todas as postagens

domingo, 26 de abril de 2015

Linguagem C - Matriz unidimensional - Exemplo 1

O objetivo desse programa em C é preencher uma matriz unidimensional inteira (int) qualquer e imprimir seus números distintos na tela (ou seja, sem repeti-los).
Nível de dificuldade: 3 (difícil)
O código (verde) está explicado com comentários (em azul), pronto para ser copiado e colado no seu ambiente de edição favorito:
#include <stdio.h>

int main( void)
{
    int i; int j;
    int iguais; /* para contar quantos numeros do numerosjalidos [] sao iguais a detemrinado numero em determinada posicao do                     vetornumeros[]*/
    int posicaonumerosjalidos=0; /* inteiro auxiliar que guarda a posicao no vetor do numerosjalidos[] */
    int vetornumeros[9];   /* o vetor com todos os números */
    int numerosjalidos[9]; /* o vetor que vai ter todos os numeros do vetornumeros[] e na mesma ordem,
so que sem repetir nenhum numero*/

            /* Esse programa tem como funcao receber numeros de um vetor de numeros e imprimir a tela esses numeros sem repeti-los e na ordem em que entraram no vetor */

    printf ("declare agora os numeros do vetor de numeros: \n");

    for (i=0;i<=9;i++)
        {
            printf ("\nEntre com o valor do numero na posicao %d no vetor de numeros: ",i);
            scanf ("%d", &vetornumeros[i]);
        }

     

    numerosjalidos[0]=vetornumeros[0];


    for (i=0;i<=9;i++)
        {
            iguais=0;
            for (j=0;j<=posicaonumerosjalidos;j++) /* hora de fazer a varredura (loop ou laco de repeticao) */
            {
                if  (vetornumeros[i]==numerosjalidos[j])
                {
                    
                    iguais++;
                }
              
            }
            if (iguais == 0 )
            {

                numerosjalidos[posicaonumerosjalidos +1] = vetornumeros[i];

                posicaonumerosjalidos++;
             
            }
               
        }
    for (i=0;i<=posicaonumerosjalidos;i++)
        {
            printf ("\n Numero posicao %d eh: %d",i,numerosjalidos[i]);

        }
    printf ("\n\n Seu programa terminou! \n",i,numerosjalidos[i]);
    system ("pause");

}


terça-feira, 24 de março de 2015

Engenharia de Software - Debugging - Interpretando um editor hexadecimal

Interpretando informações básicas exibidas por um editor hexadecimal

Coluna 1 (esquerda) – Valor da posição representada em hexadecimal do primeiro byte da segunda coluna desta linha.
Coluna 2 (meio) - Contém bytes do arquivo aberto, em ordem, representados em hexadecimal por 2 numerais hexadecimais cada byte.
Coluna 3 (direita) - Contém caracteres ASCII, cada caractere está associado a um byte da coluna 2, muito útil para alterar textos, como pode ser observado na figura 1.a abaixo

Com o auxílio da figura 1.a abaixo e do texto abaixo, podemos ver exemplos que ajudam a entender:

- Linha 00000030 (marcada com retângulo verde), o valor 00000030 está em hexadecimal e é referente à posição do primeiro byte desta linha na segunda coluna (retângulo à direita, com valor “EE”) o valor EE está em hexadecimal, ele é um byte, porque 4 bits dao 16 possibilidades de valor, o que caracteriza um numeral hexadecimal, logo 2 numerais hexadecimais formam 8 bits, que é um byte.
- Linha 00000010, veja o primeiro byte (primeiro retângulo vermelho desta linha), mais adiante na mesma linha veja o caractere ASCII marcado com o segundo retângulo vermelho, ele é a representação do byte marcado pelo primeiro retângulo. Observe o mesmo na linha 00000020.
- Linha 00000120, veja os retângulos vermelhos dessa linha, e agora observe que o caractere “r” é formado pelos bits representados pelo valor hexadecimal “72” (lembrando mais uma vez 2 numeros hexadecimais são 8 bits, ou 1 byte e um caractere ASCII é um byte)





Figura 1.a 
Fonte: http://www.codeproject.com/KB/miscctrl/488296/partition_explain1.jpg