sexta-feira, 31 de outubro de 2014

Code.org - Programação para iniciantes

Algum tempo atrás estava navegando pela internet e me deparei com este site: http://learn.code.org/, achei bastante interessante e resolvi explorá-lo. Logo que comecei a frequentar o site já resolvi vários exercícios do mesmo. No site existem vários jogos, onde você muda de fase e a cada nível descobre novas ferramentas da programação, como por exemplo: ler, repetir, executar, se, senão, entre outras. No total são 20 desafios divididos em 20 fases cada, onde utilizam os personagens de desenhos animados (angry birds, plants versus zumbi, etc).
O Code.org transmite o conteúdo básico de lógica de programação com exercícios viciantes que ensinam da melhor forma possível. Recomendo a utilização do site principalmente para crianças e adolescentes do ensino fundamental que são iniciantes em programação.





“There are only 10 types of people in the world: Those who understand binary and those who don’t.”

sexta-feira, 24 de outubro de 2014

Biblioteca string.h

Biblioteca <string.h>
Como utilizar as principais funções
        A biblioteca string.h foi feita para facilitar o manuseio de string, tendo como suas principais funções a:
·       strlen (a função strlen, retorna um inteiro com dizendo quantos caracteres tem na string).
·        strcpy (a função strcpy copia uma string para outra string).
·        strcmp (esta função compara 2 string e retorna um inteiro. Se este inteiro for 0 quer dizer que as strings são iguais, se for negativo é porque a primeira e maior que a segunda e se for positivo é porque a segunda é maior que a primeira).
·         strcat (a strcat concatena 2 strings).

Como usá las
Para que as seguintes funções funcione  adicione a biblioteca string.h
#include <string.h>”.

        Strlen
Para usarmos a strlen faça a seguinte função:

int i;
char str[tam];
scanf(" %[^\n]",str);
i=strlen(str);
printf("%i\n",i);

pronto. A variável “i” recebera o número de caracteres que tem a sua string só que o próximo código ira fazer isso e é bem fácil de eu entender.

int i;
char str[tam];
scanf(" %[^\n]",str);
for(i=0;i<tam;i++){
   if(str[i]=='\0') break;
}
printf("%i",i);

este é uma código eficiente que simula a strlen.

Strcpy
Para poder usar a strcpy faça o seguinte:

char str1[tam],str2[tam];
scanf(“ %[^\n]",str1);
strcpy(str2,str1);
printf("%s\n",str2);

Veja que lemos a “str1” mas imprimimos a “str2”, isso porque a “str1” foi jogada na “str2”. Agora vamos reproduzir um código que faça algo parecido.

int i;
char str1[tam],str2[tam];
scanf(" %[^\n]",str1);
for(i=0;i<tam;i++){
str2[i]=str1[i];
}
printf("%s\n",str2);

Este código também faz o mesmo processo que a strcpy só que tera que ter uma lógica melhor para compreende-lo.

Strcmp
Para usarmos a strcmp faça:

int i;
char str1[tam],str2[tam];
scanf(“ % [^\n]",str1);
scanf(“  %[^\n]",str2);
i=strcmp(str1,str2);
if(i==0){
printf(“São iguais\n”);
}else(i!=0){
printf(“Não são iguais\n”);
}

Por mais que isso seja só um pouco do que a strcmp possa fazer, esse será o seu principal uso. Mas vamos fazer um código que simule isso.

int i,j;
int o=0,c=0;
char str1[tam],str2[tam];
scanf(" %[^\n]",str1);
scanf(" %[^\n]",str2);
for(i=0;str1[i]!='\0';i++){
c++;
}
for(j=0;str1[j]!='\0';j++){
o++;
}
if(o==c){
printf("São iguais\n");
}else if(o!=c){
printf("Não são iguais\n");
}

Observe que temos dois for para contar quantos caracteres tem na em cada string e depois comparamos ela, caso seja igual ele retornara “São iguais”, caso não ele retornara “Não são iguais”.

Strcat
E por ultimo usaremos a strcat para concatenarmos duas strings. Vamos usar da seguinte forma:

int i; char str1[tam],str2[tam]; scanf(" %s",str1); scanf(" %s",str2); strcat(str1," "); strcat(str1,str2); printf("%s\n",str1);

Observe que o código ficou bem simples mas o que faremos a seguir pode ter uma lógica mais difícil de compreender mas que pode ser mais eficiente que o código anterior.

int i,j;
char str1[tam],str2[tam],str3[tam+tam];
scanf(" %[^\n]",str1);
scanf(" %[^\n]",str2);
for(i=0;str1[i]!='\0';i++){
str3[i]=str1[i];
}
str3[i]=' ';
i++;
for(j=0;str2[j]!='\0';j++){
str3[i]=str2[j];
i++;
}
str3[i]='\0';
printf("%s\n",str3);

bem podemos ver que neste caso criamos a string “str3” para mantermos a integridade do valor da “str1 e str2”, lembrando que a cada string a mais a ser concatenada temos que aumentar o espaço da string que recebera as strings.

Bem pessoal ficamos por aqui com esta dica e até mais.
Lembre se “Os sonhadores são os salvadores do mundo” - James Allen.

sexta-feira, 3 de outubro de 2014

Strings sem dor de cabeça

Strings na linguagem C

Para entendermos como funciona uma string de caracteres, na linguagem c, é muito importante compreender como os caracteres são representados pelo computador, como a linguagem c é uma linguagem compilada e não interpretada temos que trabalhar com strings pensando na forma que o computador C a interpreta. A linguagem C considera os caracteres como números que vão de 0 até 127, enumerados segundo a tabela ASCII, assim:

char exemplo = 61;
printf("61 em C é : %c\n",exemplo );

O programa mostraria : 61 em C é igual a : a

Talvez você quererá atribuir números a um elemento char, então existe 2 formas de fazer isso:

    char exemplo = '1';   OU char exemplo = 31;

em ambos os casos mostram o valor 1.

Mais com o aumento dos nosso programas trabalhar com caracteres únicos tornar-se inviável, então podemos criar um vetor de caracteres denominados strings que nada mais é que um espaço de memoria que contem vários caracteres em fila, como por exemplo:

Athos                                      André                   peixe                     Cachorro

Então se pensarmos um pouco veremos que string nada mais é do que caracteres agrupados e que termina com o caractere  '\0', indicando o final da string. No exemplo abaixo declararmos uma string de 10 caracteres + um caractere terminador '\0', pois o primeiro índice inicia em 0.

char string[10];

No segundo exemplo o compilador sobrescreve o U pois o terminador '\0' é sempre colocado.

#include <stdio.h>

int main () {

char string[1]="EU";

printf("%s\n",string);

return 0;
}

Uma string possui índices e é com esse índices que iremos trabalhar: como por exemplo o meu nome.

0-F
1-e
2-r
3-n
           4-a           
5-n
6-d
7-o
  8-'\0'

Então se quisermos ler uma string temos que fazer o seguinte:

char string[ //defina o tamanho aqui];

int i;

while(i<//tamanho da string){
scanf(" %[^ \n]",string[i] );
}

Mais se quisermos ler varias strings  temos que criar uma matriz de caractere, e para isso precisamos de de dois índices, onde o primeiro representa a linha e o segundo representa a coluna:

                                                                          0123456789
0 fernando'\0'
1       athos'\0'
2       andré'\0'
3    leticia '\0' 

Como exemplo podemos fazer o seguinte:

int i,j;
char string [//aqui vc coloca o numero de palavras que sua matriz tem ] [// aqui vai o maior numero de carceres que vai na string];

for(i=0;i<linhas;i++){ scanf("%[^\n]",string[i]); // %[^\n] lê a string até que se aperte a tecla enter }

bons estudos!