Você está na página 1de 36

Disciplina Linguagem de Programação

Tema Vetor/Matriz

Aula 04
Professor Cassiana Fagundes da Silva
Conversa Inicial

Olá aluno! Pronto para começar a nossa quarta aula da disciplina Linguagem de Programação?

Nos temas propostos para a aula de hoje, iremos entender do que se trata os chamados strings,
além de aprender como escrever funções e procedimentos no intuito de criar programas modulares
através destes conceitos.

No material online você poderá acessar o vídeo preparado pela professora Cassiana com a
apresentação dos temas que estudaremos na aula de hoje!

Pronto para começar? Vamos lá!


Contextualizando

Como já vimos nos encontros anteriores, a linguagem de programação em C tem a capacidade de


manipular facilmente os seus tipos de dados básicos, como por exemplo: int, float e double. No
entanto, apresenta algumas limitações no que diz respeito ao tratamento de vetores e strings, não
fazendo o seu processamento diretamente. Para entendermos melhor, iremos aprofundar conceitos
sobre os strings e funções.
Objetivos da Aula

Gerar no aluno o conhecimento necessário para que possa entender e classificar os seguintes
temas:

 Strings

 Funções
Strings

As strings podem ser definidas como vetores de chars e são consideradas o uso mais comum para os
vetores. Fique sempre atento para o fato de que as strings têm o seu último elemento como um '\0'.

A declaração geral para uma string é:

char nome_da_string [tamanho];


A biblioteca padrão do C possui diversas funções que manipulam strings. Estas funções são úteis, pois
não se pode, por exemplo, igualar duas strings. Confira o exemplo:

string1=string2; /* NAO faca isto */

Para que uma igualdade de string funcione faz-se necessário que estas sejam igualadas elemento a
elemento. Clique no botão a seguir para conferir um exemplo de programa que serve para igualar duas
strings (isto é, copia os caracteres de uma string para o vetor da outra):

#include <stdio.h>

int main ()

{
int count;

char str1[100],str2[100];

// Aqui o programa lê str1 que será copiada para str2

for (count=0;str1[count];count++)

str2[count]=str1[count];

str2[count]='\0';

// Aqui o programa continua

}
A condição no loop for é baseada no fato de que a string que está sendo copiada termina em '\0'.
Quando o elemento encontrado em str1[count] é o '\0', o valor retornado para o teste condicional, que
é falso (nulo). Desta forma a expressão que vinha sendo verdadeira (não zero) continuamente,
torna‐se falsa.

A partir de agora, iremos apresentar as funções mais básicas de manipulação de strings, preste
bastante atenção!
Gets()

Esta função lê uma string do teclado. Sua #include <stdio.h>

forma geral é: int main ()

{
gets (nome_da_string);
char string[100];
Confira o exemplo ao lado que demonstra
printf ("Digite o seu nome: ");
o funcionamento da função gets():
gets (string);

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

return(0);

}
strcpy( )

A função strcpy() copia a string‐origem para a string‐destino. Seu funcionamento é semelhante


ao da rotina apresentada na tela anterior. As funções apresentadas nestas seções estão no arquivo
cabeçalho string.h.

Sua forma geral é:

strcpy (string_destino,string_origem);

Confira a seguir, o exemplo do uso desta função.

#include <stdio.h>

#include <string.h>

int main ()

{
char str1[100],str2[100],str3[100];

printf ("Entre com uma string: ");

gets (str1);

strcpy (str2,str1); /* Copia str1 em str2 */

strcpy (str3,"Voce digitou a string "); /* Copia "Voce digitou a

string" em str3 */

printf ("\n\n%s%s",str3,str2);

return(0);

}
strcat()

A string de origem permanecerá inalterada e será anexada ao fim da string de destino.

strcat (string_destino,string_origem);

Confira a seguir o exemplo de uso:

#include <stdio.h>

#include <string.h>

int main ()

char str1[100],str2[100];

printf ("Entre com uma string: ");

gets (str1);
strcpy (str2,"Voce digitou a string ");

strcat (str2,str1); /* str2 armazenara' Voce digitou a string + o conteudo de str1 */

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

return(0);

}
strlen()

A função strlen() retorna o comprimento Confira o exemplo de uso:


da string fornecida. O terminador nulo não é #include <stdio.h>
contado. Isto quer dizer que, de fato, o
#include <string.h>
comprimento do vetor da string deve ser um a
int main ()
mais que o inteiro retornado por strlen().
{
Sua forma geral é:
int size;

strlen (string); char str[100];

printf ("Entre com uma string: ");

gets (str);

size=strlen (str);
printf ("\n\nA string que voce digitou tem tamanho return(0);
%d",size);
}
strcmp( )

A função strcmp() compara a string 1 com a string 2 e retorna:

 Valor positivo string1 > string2


 Valor negativo string1 < string2
 string1 == string2
 !=0 string1 != string2

Sua forma geral é:

strcmp (string1,string2);
Confira o exemplo!

#include <stdio.h>

#include <string.h>

int main(void)

char s1[41],s2[41];

printf("String 1: ");

scanf(“%s”,s1);

printf("String 2: ");

scanf(“%s”,s2);

if (strcmp(s1,s2) == 0)
printf("String 1 é IGUAL a String 2");

else

if (strcmp(s1,s2) > 0)

printf("String 1 é MAIOR a String 2");

else

printf("String 1 é MENOR a String 2");

No material online, você poderá acompanhar a aula da professora Cassiana, ela irá nos explicar tudo
sobre o tema string, aproveite para revisar tudo que estudamos até agora! Não perca!
Funções

Funções, também chamadas de rotinas ou subprogramas, são a essência da programação


estruturada. São segmentos de programa que executam uma determinada tarefa específica.

Algumas funções já são providenciadas pelas bibliotecas-padrão do C, como por exemplo: sqrt()
para cálculo de raiz quadrada, printf() para imprimir uma mensagem na tela, scanf() para ler um
valor digitado pelo usuário, strcmp() que compara duas strings, entre tantas outras. Entretanto, é
possível que o programador escreva suas próprias rotinas. Estas são as chamadas de funções de
usuário ou rotinas de usuário, deste modo pode‐se segmentar um programa grande em vários
programas menores. Esta segmentação é chamada de modularização e permite que cada segmento
seja escrito, testado e revisado individualmente sem alterar o funcionamento do programa como um
todo. Permite ainda que um programa seja escrito por vários programadores ao mesmo tempo, cada
um escrevendo um segmento separado.
Uma função de usuário constitui‐se de um bloco de instruções que definem os procedimentos
efetuados pela função, um nome pelo qual a chamamos e uma lista de argumentos passados a função.
Chamamos este conjunto de elementos de definição da função.

Uma função no C tem a seguinte forma geral:

tipo_de_retorno nome_da_função (declaração_de_parâmetros)

corpo_da_função

}
Atenção:

O tipo_de_retorno é o tipo de variável que a função vai retornar, neste caso no fim da função
deve existir um comando return (detalhado posteriormente). O default é o tipo int, ou seja, uma
função para qual não declaramos o tipo de retorno é considerada como retornando um inteiro. Caso a
função não retorne valor algum, o tipo de retorno deve ser especificado como void.
Confira a forma geral da lista da declaração de parâmetros:

tipo nome1, tipo nome2, ... , tipo nomeN

O tipo deve ser especificado para cada uma das N variáveis de entrada. É na declaração de
parâmetros que informamos ao compilador quais serão as entradas da função (assim como
informamos a saída no tipo-de-retorno), e é no corpo da função que as entradas são processadas, as
saídas são geradas, entre outras ações.

O código disponível na tela seguinte é uma função definida pelo usuário para calcular a média
aritmética de dois números reais!
float media2 (float a, float b)

{ Neste exemplo, define-se uma função


chamada media2 que recebe dois argumentos
float med;
tipo float: a e b. A média destes dois valores é
med = (a + b) / 2.0; calculada e armazenada na variável med
return(med); declarada localmente na função, ou seja, esta
variável existe apenas na função media2.

}
A função retorna, para o programa que a #include <stdio.h>

chamou, um valor também do tipo float: o int main()

valor da variável med. Este retorno de valor é {

feito pela função return() que termina a float num_1, num_2, media;
execução da função e retorna o valor de med
printf (”Digite dois números:”);
para o programa que a chamou. Definida a
scanf(”%f %f”, &num_1, &num_2);
função, poderá ser usada dentro de um
media = media2(num_1, num_2); /* chamada a
programa qualquer.
função */

Confira um exemplo de chamada da printf(”\nA media destes números e´ %f”, media);


função media2() dentro de um programa
}
principal.
Todas as funções, exceto aquelas que são declaradas como sendo do tipo void, devolvem um
valor. O valor é devolvido (retornado) pela função através do comando return. Funções que não
retornam nenhum valor (void) são puramente procedimentos. O programa abaixo possui uma função
void que limpa toda a tela em modo texto.

#include <stdio.h>

void limpa_tela (void)

int c, l;

for (l = 1; l <= 25; l++)


{

for (c = 1; c <= 80; c++)

printf("%c",32); /* 32 é o código do caracter espaço */ printf(“\n”);

int main(void)

limpa_tela();

}
Conforme mencionado anteriormente, todo valor retornado por uma função é feito através do
uso de um comando return. Este comando tem a seguinte forma geral:

return valor_de_retorno; ou return;

Quando se chega a uma declaração return a função é encerrada imediatamente e, se o valor de


retorno é informado, a função retorna a este valor. É importante lembrar que o valor de retorno
fornecido tem que ser compatível com o tipo de retorno declarado para a função.

Uma função pode ter mais de uma declaração return. Isto se torna claro quando
pensamos que a função é terminada quando o programa chega à primeira declaração
return.
Confira um exemplo de programa que possui dois comandos return, porém apenas um será
executado de acordo com as regras de programação realizadas.

#include <stdio.h>

int EPar (int a)

if (a%2) /* Verifica se a e divisivel por dois */

return 0; /* Retorna 0 se nao for divisivel */

else return 1; /* Retorna 1 se for divisivel */

int main ()

{
int num;

printf ("Entre com numero: ");

scanf ("%d",&num);

if (EPar(num))

printf ("\n\nO numero e par.\n");

else

printf ("\n\nO numero e impar.\n");

return 0;

}
É importante notar que, como as funções retornam valores, podemos aproveitá-los para fazer
atribuições, ou mesmo para que estes valores participem de expressões.

Agora, acompanhe a videoaula, disponível no material online e preparada pela professora


Cassiana para este tema? Preste bastante atenção para não ficar com dúvidas!
Na Prática

Agora, vamos aproveitar para conferir se você fixou os conteúdos dos temas
estudados na aula de hoje?

Responda às questões a seguir e, se tiver dúvidas, retorne ao conteúdo e refaça os testes depois!
QUESTÃO 1 - Em relação à função strcat é correto afirmar:

a. Devolve o comprimento de uma string.


b. Copia uma string para outra.
c. Concatena string.
d. Todas as afirmativas estão corretas.
QUESTÃO 2 - Em relação à função é correto afirmar:

a. Uma função pode ser invocada a partir de outras funções.

b. É possível a criação de laços infinitos, colocando na condição do laço uma condição que seja
sempre verdadeira.

c. Pode ser manipulada diretamente, pois não são um tipo básico da linguagem.

d. Todas as afirmativas são incorretas.


Gabarito da questão 1:

Alternativa C

Gabarito da questão 2:

Alternativa A
Síntese

Na aula de hoje pudemos conhecer e entender alguns aspectos que fazem parte da linguagem de
programação. Vimos conceitos de strings e aprendemos a escrever funções e procedimentos visando a
criação de programas modulares.

Até mais!
Referências Bibliográficas

DAMAS, Luis. Linguagem em C. 10ª ed. Trad. João Araujo Ribeiro, Orlando Bernardo Filho. Rio de
Janeiro: LTC, 2013.

LISBOA, Erico Fagundes Anicet Lisboa. Linguagem C. Rio de Janeiro, 2011. (Apostila). Disponível em:
<http://www.dainf.ct.utfpr.edu.br/~pbueno/Arquivos/ApostilaEricoLisboa.pdf>.

Santos, Henrique José dos. Linguagem de Programação C. (Apostila). Disponível em:


<http://www.dainf.ct.utfpr.edu.br/~adolfo/Disciplinas/ComputacaoI/Material/LinguagemProgrC.pdf>.

Você também pode gostar