1 introduÇÃo o c? de linguagem c.pdf · pow (): retorna o valor da base elevada ao expoente....

27
1 - INTRODUÇÃO: O QUE É C? C é uma linguagem de programação de computadores; Desenvolvida em 1972 por Dennis Ritchie no Bell Lab para uso no sistema operacional Unix; Foi amplamente aceita por oferecer aos programadores o máximo em controle e eficiência; A linguagem C foi criada com os objetivos principais em mente: o Facilitar a criação de programas extensos com menos erros, recorrendo ao paradigma da programação algorítmica ou procedimental; o Sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem; COMPILADORES E INTERPRETADORES Os termos compiladores e interpretadores referem-se à maneira como um programa é executado. Em teoria, qualquer linguagem de programação pode ser compilada ou interpretada. Interpretadores e compiladores são simplesmente programas sofisticados que operam sobre o código-fonte do seu programa. Interpretador lê o código-fonte do seu programa uma linha por vez, executando a instrução específica contida nessa linha. Compilador lê o programa inteiro e converte-o em um código-objeto, que é uma tradução do código- fonte do programa em uma forma que o computador possa executar diretamente. Quando um interpretador é usado, deve estar presente toda vez que você executar o seu programa. O processo é lento e ocorre toda vez que o programa for executado. Um compilador, ao contrário, converte seu programa em um código-objeto que pode ser executado diretamente por seu computador. Como o compilador traduz seu programa de uma só vez, tudo o que você precisa fazer é executar seu programa diretamente, geralmente apenas digitando seu nome. Assim, o tempo de compilação só é gasto uma vez, enquanto o código interpretado incorre neste trabalho adicional cada vez que o programa executa. COMPILADORES C Existem diversos compiladores C. A decisão sobre qual compilador utilizar pode ser baseada em vários fatores, como por exemplo: Qualidade do compilador; Rapidez; Padronização da linguagem; A interface com o usuário é agradável - possui ou não um IDE (Integrated Development Enviroment) Possui diversas opções de compilação; Sistema Operacional que o compilador funciona (gera códigos); Custo do compilador; Documentação disponível e Suporte; A LINGUAGEM C É CASE SENSITIVEUm ponto de suma importância: C é "case sensitive", ou seja, maiúsculas e minúsculas fazem diferença. Se declararmos uma variável com o nome ‘soma’ ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos (todas as palavras-chave) da linguagem C if e for, por exemplo, só podem ser escritos em minúsculas, pois senão o compilador não irá interpretá-los como sendo comandos, mas sim como variáveis. ESTRUTURA DE UM PROGRAMA EM LINGUAGEM C: Diretiva de Compilação; Definição de Tipos de Dados; Protótipos de Funções;

Upload: others

Post on 02-Nov-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

1 - INTRODUÇÃO: O QUE É C?

C é uma linguagem de programação de computadores;

Desenvolvida em 1972 por Dennis Ritchie no Bell Lab para uso no sistema operacional Unix;

Foi amplamente aceita por oferecer aos programadores o máximo em controle e eficiência;

A linguagem C foi criada com os objetivos principais em mente: o Facilitar a criação de programas extensos com menos erros, recorrendo ao paradigma da

programação algorítmica ou procedimental; o Sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de

realizar as características complexas da linguagem; COMPILADORES E INTERPRETADORES Os termos compiladores e interpretadores referem-se à maneira como um programa é executado. Em teoria, qualquer linguagem de programação pode ser compilada ou interpretada. Interpretadores e compiladores são simplesmente programas sofisticados que operam sobre o código-fonte do seu programa.

Interpretador lê o código-fonte do seu programa uma linha por vez, executando a instrução específica contida nessa linha.

Compilador lê o programa inteiro e converte-o em um código-objeto, que é uma tradução do código-fonte do programa em uma forma que o computador possa executar diretamente. Quando um interpretador é usado, deve estar presente toda vez que você executar o seu programa. O processo é lento e ocorre toda vez que o programa for executado. Um compilador, ao contrário, converte seu programa em um código-objeto que pode ser executado diretamente por seu computador. Como o compilador traduz seu programa de uma só vez, tudo o que você precisa fazer é executar seu programa diretamente, geralmente apenas digitando seu nome. Assim, o tempo de compilação só é gasto uma vez, enquanto o código interpretado incorre neste trabalho adicional cada vez que o programa executa. COMPILADORES C Existem diversos compiladores C. A decisão sobre qual compilador utilizar pode ser baseada em vários fatores, como por exemplo:

Qualidade do compilador;

Rapidez;

Padronização da linguagem;

A interface com o usuário é agradável - possui ou não um IDE (Integrated Development Enviroment)

Possui diversas opções de compilação;

Sistema Operacional que o compilador funciona (gera códigos);

Custo do compilador;

Documentação disponível e Suporte; A LINGUAGEM C É “CASE SENSITIVE” Um ponto de suma importância: C é "case sensitive", ou seja, maiúsculas e minúsculas fazem diferença. Se declararmos uma variável com o nome ‘soma’ ela será diferente de Soma, SOMA, SoMa ou sOmA. Da mesma maneira, os comandos (todas as palavras-chave) da linguagem C if e for, por exemplo, só podem ser escritos em minúsculas, pois senão o compilador não irá interpretá-los como sendo comandos, mas sim como variáveis.

ESTRUTURA DE UM PROGRAMA EM LINGUAGEM C: Diretiva de Compilação;

Definição de Tipos de Dados;

Protótipos de Funções;

Page 2: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Funções

Comentários;

#include <stdio.h> É uma diretiva de compilação. Toda diretiva de compilação inicia com #include. São comandos que instruem ao compilador a realização de tarefas antes de realizar a compilação. No arquivo stdio.h existem declarações de funções úteis para entrada e saída de dados, onde:

std = standard, que significa padrão, em inglês;

io = Input/Output, entrada e saída. Então: stdio = entrada e saída padronizada.

As declarações expressam as partes do programa, podendo dar significado a um identificador, alocar memória, definir conteúdo inicial, definir funções. As funções especificam as ações que um programa executa quando roda. Uma função importante e obrigatória em todo programa em C é a função main (cuja tradução é principal). Esta será sempre a primeira função do programa a ser executada.

main ( ) { <comandos> } O corpo (conteúdo) da função é delimitado por chaves { }. O código que estiver dentro das chaves será executado sequencialmente quando a função for chamada.

2 – VARIÁVEIS E CONSTANTES: Variáveis e constantes são os elementos básicos que um programa manipula.

Variáveis São pequenos pedaços alocados na memória do computador para guardar informações que mudam no decorrer do programa.

Constantes São pequenos pedaços alocados na memória do computador para guardar informações que NÃO mudam no decorrer do programa. TIPOS DE DADOS TIPOS BÁSICOS: Os dados podem assumir cinco tipos básicos em C que são:

char: Caractere: O valor armazenado é um caractere. Caracteres geralmente são armazenados em códigos (usualmente o código ASCII).

int: Número inteiro é o tipo padrão e o tamanho do conjunto que pode ser representado normalmente depende da máquina em que o programa está rodando.

float: Número em ponto flutuante de precisão simples. São conhecidos normalmente como números reais.

double: Número em ponto flutuante de precisão dupla void: Este tipo serve para indicar que um resultado não tem um tipo definido. Uma das aplicações

deste tipo em C é criar um tipo vazio que pode posteriormente ser modificado para um dos tipos anteriores.

VARIÁVEIS NOMES DAS VARIÁVEIS Existem algumas regras básicas que regulam a o batismo de variáveis. Estas regras básicas são:

Todo nome só pode conter letras e dígitos; O caractere "_" é contado como uma letra; Todo primeiro caractere deve ser sempre uma letra;

Page 3: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Letras maiúsculas e minúsculas são consideradas caracteres diferentes; Palavras reservadas não podem ser usadas como nome de variáveis.

o Palavras reservadas: auto / break / case / char / const / continue / default / do / double / else /

extern / for / float / short / struct / union / unsigned / void / while É boa política escolher nomes que significam alguma coisa e indiquem a função da variável. Exemplo: valor, soma, total, nome, raio. DECLARAÇÃO DE VARIÁVEIS: Para serem usadas, as variáveis precisam ser declaradas de modo que o compilador possa reservar espaço na memória para o valor a ser armazenado. FORMA DE DECLARAÇÃO DE VARIÁVEIS: <tipo> <nome_var>; ou <tipo> <nome_var1>, <nome_var2>, ..... ,<nome_varn>; É importante não esquecer que quando se declara uma variável, um espaço num determinado endereço na memória é alocado para armazenar um dado que obrigatoriamente tem que ser do mesmo tipo que o da variável. Toda e qualquer variável deve ser declarada e sua declaração deve ser feita antes de sua utilização no programa. Exemplos: int i; int a, b, c; double salario; ATRIBUIÇÃO DE VALORES ÀS VARIÁVEIS Após ser declarada, a variável pode receber valores. O operador de atribuição "=" indica que o valor à direita será atribuído à variável.

Durante a declaração da variável int i = 0, j = 10; float raio = 2.54; char c = 'd'; VARIÁVEIS LOCAIS E GLOBAIS Uma variável local é aquela declarada dentro do corpo de uma certa função e somente pode ser utilizada por aquela função e nenhuma outra mais. Já a variável global, que poderá ser utilizada por todas as funções existentes em seu programa, é declarada fora, antes do início do corpo da função principal do programa main(). Exemplos: #include <stdio.h> int a; main () { a = 3; }

Page 4: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

CONSTANTES Constantes são usadas em expressões para representar vários tipos de valores. Em “C” existem regras rígidas para determinar como devem ser escritos estes valores. A seguir iremos mostrar as regras para escrever constantes. CONSTANTES INTEIRAS São valores numéricos sem ponto decimal, precedidos ou não por um sinal. Não é possível separar o sinal do valor numérico. Exemplo:

1997; -3; +5; 0; -32000;

CONSTANTE EM PONTO FLUTUANTE São também conhecidos como constantes reais. Cada constante de ponto flutuante é considerada ser do tipo double. Uma constante em ponto flutuante é normalmente representada com ponto decimal, precedidas ou não de um sinal, podendo ser seguidas por um expoente. Quando a constante é seguida por um expoente a notação é conhecida como "científica". Exemplos:

+23.45 123.4567

CONSTANTES EM CARACTERES Uma constante em caractere é um único caractere escrito entre ', como em 'a', podendo participar normalmente de expressões aritméticas. O valor que entra na expressão é o do código usado para representar o caractere. Em adição, uma constante de tamanho igual a um byte pode ser usada para definir um constante deste tipo, escrevendo, por exemplo, '\ddd', onde ddd é uma constante com um até três dígitos octais. Exemplos:

'a' caractere a;

'A' caractere A;

'\0141' Constante octal correspondente ao caractere 'a';

CONSTANTES EM CADEIAS DE CARACTERES Em alguns casos, vamos usar a palavra cadeia para significar cadeia de caracteres (string em inglês). Uma constante do tipo cadeia de caracteres é uma sequência de qualquer número de caracteres. Exemplo: "alo mundo!!!"

Page 5: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

3 - OPERADORES: Operadores Relacionais

= Atribuição

!= Diferente

<= Menor igual

>= Maior igual

== Igual

% Resto da divisão entre inteiros

Operadores Lógicos

&& And (e)

|| Or (ou)

! Not (não)

Para as variáveis, devem ser feitas no início do programa (ou de um bloco) as declarações (de tipo) de variáveis. Declarada uma variável, toda vez que ela for referenciada em qualquer comando do programa, o computador vai trabalhar com o conteúdo de seu endereço, que é o valor da variável. Uma variável não pode ter o mesmo nome de uma palavra-chave de C, como por exemplo: main, count, int, float, char, short, return, case, void. As variáveis só podem armazenar informações ou dados sempre de um mesmo tipo (inteiro, real, caractere ou char). OPERADORES ARITMÉTICOS:

Aritmético Operação Prioridade

+ Adição 5

- Subtração 5

% Resto da divisão 4

* Multiplicação 3

/ Divisão 3

++ Incremento 2

-- Decremento 2

+ Manutenção do sinal 1

- Inversão do sinal 1

Sendo que varia de 1 para a prioridade máxima a 5.

FUNÇÕES MATEMÁTICAS Necessário o uso da biblioteca math.h Trigonométricas sin (): Retorna o valor do seno. Recebe como argumento o valor dos graus em double. cos (): Retorna o valor do cosseno. Recebe como argumento o valor dos graus em double. tan (): Retorna o valor da tangente. Recebe como argumento o valor dos graus em double. Logaritmicas log (): Retorna o valor do logaritmo na base 2. Exige um argumento do tipo double. log10 (): Retorna o valor do logaritmo na base 10. Exige um argumento do tipo double.

Page 6: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Potências pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente. Por exemplo: se quisermos saber o resultado da operação 210, faríamos pow (2, 10). sqrt (): Retorna o valor da raiz quadrada. Recebe como argumento um double do qual ele deve extrair a raiz. Exemplo: a = a + b; a = 4 * 2 + 3; Observação: a++ é similar a a = a + 1; b-- é similar a b = b - 1;

4-FUNÇÕES DE ENTRADA E SAÍDA 4.1-FUNÇÃO PRINTF Através da função pré-definida printf(), cujo protótipo está contido também no arquivo stdio.h, poderemos imprimir na tela informações. Sintaxe: printf( “Expressão” , lista de argumentos);

Expressão Mensagens que serão exibidas

Lista de argumentos Pode conter identificadores de variáveis, expressões aritméticas ou lógicas e valores constantes. IMPRESSÃO DE TIPOS DE DADOS

Código Tipo Elemento armazenado

%c Char Um Único Caractere

%d ou %i Int Um Inteiro

%f Flout Um Número em Ponto Flutuante

%lf Double Ponto Flutuante com Dupla Precisão

%e Flout ou Double Um Número na Notação Científica

%s ........................... Uma Cadeia de Caracteres

Exemplo: #include <stdio.h> main() { printf(“Alo Galera!!”); } #include <stdio.h> main() { printf(“%s está a %d milhões de milhas do sol”, ”Vênus”, 67); }

Page 7: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

#include <stdio.h> main( ) { printf(“Valor inteiro atribuído foi %d para o caractere %c e um float foi de %f “, 99, ‘a’, 1.45); } #include <stdio.h> main() { printf(“Se quisesse imprimir uma string : %s”, “Minha Vida em Jogo”); } IMPRESSÃO DE CÓDIGOS ESPECIAIS

Código Ação

\n Leva o cursor para a próxima linha

\t Executa uma tabulação

\b Executa um retrocesso

\f Leva o cursor para a próxima página

\a Emite um sinal sonoro (beep)

\” Exibe o caractere "

\\ Exibe o caractere \

%% Exibe o caractere %

#include <stdio.h> main() { printf(“Default: %f \n”, 3.1415169265); printf(“Uma casa: %.1f \n”, 3.1415169265); printf(“Duas casas: %.2f \n”, 3.14); printf(“Três casas: %3.f \n”, 3.141); } Embora o número digitado possua 10 casas decimais imprimirá respectivamente, 6, 1, 2 e 3 casas decimais. 4.2 - FUNÇÃO SCANF() Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão (teclado). A lista de argumentos deve consistir nos endereços das variáveis. A linguagem C oferece um “operador de endereço” e referenciado pelo símbolo "&". Operador de endereço &: Antes de cada variável para indicar o endereço de memória no qual o conteúdo da variável estará armazenado. Este é uso obrigatório quando tratamos variáveis do tipo numérica (inteira ou real). Sintaxe: scanf(“expressão”, argumentos); Exemplo: int m; scanf (“%d”, &m); /* %d indicativo do tipo, neste caso do tipo inteiro. */ /* &m operador utilizado para obter o endereço de memória da variável. */

Page 8: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Exemplo: int main () { int idade; Printf(“Digite a sua idade: ”); Scanf(“%d”, &idade); Printf(“A sua idade é %d ”, idade); Return 0; } 4.3 Função Gets() A função gets() lê uma string do teclado. Sua forma geral é:

gets (nome_da_string); Exemplo: #include <stdio.h> main () { char nome[30]; printf ("Digite o seu nome: "); gets (nome); printf ("\n\n Ola %s", nome); } CONVERSÃO DE TIPOS DE DADOS Muitas vezes nós queremos carregar o valor de uma variável de um determinado tipo para uma variável de outro tipo. Para isso é preciso converter o valor que está na variável. A conversão é feita colocando o tipo desejado antes do valor queremos converter. Exemplo: #include <stdio.h> main() { char inteiro; float real = 10.5; inteiro = (char)real; printf("%d", inteiro); }

5 - COMANDO CONDICIONAL – IF/ELSE 5.1 - COMANDO CONDICIONAL IF O comando if é uma estrutura de decisão que permite ou não que uma sequência de comandos seja executada (ou não executada), dependendo do resultado de uma condição pré-estabelecida. Sintaxe: if (<expressão>) { <sequência de comandos> } Ou if (<expressão>) <único comando>; A expressão sempre será avaliada logicamente (verdadeiro ou falso), correspondendo ao FALSO o valor zero (==0) e os demais ao VERDADEIRO (!=0).

Page 9: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Exemplo: Definir qual é o menor número digitado pelo usuário: int main() { int a, b, menor; printf(“Digite dois números inteiros”); scanf(“%d %d”, &a, &b); menor = a; if a > b menor = b; printf(“O menor número digitado foi %d”, menor); return 0; } 5.2 - COMANDO CONDICIONAL – IF ELSE O comando if pode decidir entre duas sequências de comandos qual vai ser a executada. Sintaxe: if (<expressão>) /* caso a expressão verificada retorne verdadeiro*/ { <sequência de comandos> } Else /* caso a expressão verificada retorne falso*/ { <sequência de comandos> } Exemplo: Verificar a paridade de um número. #include <stdio.h> int main() { int x; printf("Digite um número inteiro: "); scanf("%d", &x); if (x % 2 == 0) printf("%d e' par \n", x); else printf("%d e' impar \n", x); } #include <stdio.h> int main() { if <condição 1> { <sequencia de comandos 1> if <condição 2> { < sequencia de comandos 2> } else { < sequencia de comandos 2>

Page 10: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

} } else { < sequencia de comandos 1> if <condição 3> { < sequencia de comandos 3> } } } Exemplo: int main() /* a função irá retornar um valor inteiro ao final da execução*/ { int idade; printf("Informe sua idade: "); scanf("%d", &idade); if (idade < 20) { if (idade < 13) printf("Infantil."); else printf("Adolescente"); } else if (idade < 50) printf("Adulto"); else printf("Idoso"); return 0; } Observe que as chaves não foram utilizadas nesse exemplo do segundo e do terceiro else uma vez que dentro do else há apenas uma condição quando há mais que uma torna-se necessária a utilização de chaves. Função strcmp A função utilizada para comparar o conteúdo de uma string é a strcmp() que está definida na biblioteca string.h. Obs: strcmp() compara o conteúdo, ou seja, se as palavras são iguais, e não se tem o mesmo tamanho. Sintaxe: strcmp(palavra1,palavra2); Onde palavra1 e palavra2 são variáveis do tipo string que devem ser comparadas. A função strcmp() pode retornar um valor nulo (zero), positivo ou negativo. Quando as palavras comparadas são iguais, a função retorna 0. Quando as palavras comparadas são diferentes e a primeira é maior, a função retorna um valor positivo, caso contrário, a função retorna negativo, sendo que no alfabeto a “menor” letra é “a”, e a maior, “z”. strcmp(maior,menor) == 1 strcmp(“bb”,”aa”) == 1 strcmp(menor,maior) == -1 strcmp(“aa”,”bb”) == -1 strcmp(grande,grande) == 0 strcmp(“bb”,”bb”) == 0 strcmp(pequeno,pequeno) == 0 strcmp(“aa”,”aa”) == 0

Page 11: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Exemplo: main() { char tamanho[7]; printf(“Digite o tamanho :”); scanf(“%s”, &tamanho); if (strcmp(tamanho, “pequeno”) == 0) printf(“informação correto!”); else

printf(“tamanho incompatível!”); } Função strlen A função strlen() retorna o comprimento da string fornecida. O terminador nulo não é contado. Isto quer dizer que, de fato, o comprimento do vetor da string deve ser um a mais que o inteiro retornado por strlen(). Sintaxe: strlen (string); Exemplo: #include <stdio.h> #include <string.h> main () { int size; char str[100]; printf ("Entre com uma string: "); gets (str); size=strlen (str); printf ("\n\nA string que voce digitou tem tamanho %d", size); } Função strcat Esta função é utilizada para concatenar (unir / juntar) duas strings. A segunda string será adicionada no final da primeira string indicada. Lembre-se que a soma dos valores de caracteres da str1 + str2 não podem exceder o tamanho da str1. Podemos também substituir str2 por um conjunto de caracteres manualmente. Sintxe: strcat (str1,str2); Exemplo: #include<stdio.h> #include<string.h> main() { char str1[40],str2[10]; strcpy(str1,"TESTE"); strcpy(str2," INICIAL"); strcat(str1,str2); printf("%s",str1); }

Page 12: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Resultado na tela: TESTE INICIAL

TRABALHANDO COM CARACTERES, A BIBLIOTECA CTYPE Um dos fatores importantes de uma boa programação é saber lidar com os caracteres, principalmente, tratando-se da linguagem C que é case sensitive (diferencia maiúsculas de minúsculas). Veremos uma biblioteca que lida exatamente com caracteres individuais, a biblioteca ctype.h. Dentre as funções encontradas nesta biblioteca há aquelas que modificam o estado da letra (maiúsculas e minúsculas) e até mesmo funções que servem para descobrir se o que foi digitado é um ponto, vírgula, número, espaço, ctrl, etc. Primeiramente, vamos as mais comuns que são para converte um caractere em letra maiúscula ou minúscula.

toupper esta função recebe um argumento que deve ser um caractere e retorna o caractere correspondente em formato maiúsculo, se o caractere já for maiúsculo, a função não o modifica.

tolower esta função recebe um argumento que deve ser um caractere e retorna o caractere correspondente em formato minúsculo, se o caractere já for minúsculo, a função não o modifica.

isalnum verifica se o caractere ou inteiro passado como parâmetro é alfanumérico. Isso inclui todos os números e as letras do alfabeto, tanto maiúsculas quanto minúsculas.

isalpha verifica se o caracter ou inteiro passado como parâmetro é alfabético. Isso inclui todas as letras do alfabeto, tanto maiúsculas quanto minúsculas.

isdigit verifica se o caracter ou inteiro passado como parâmetro é um digito. Isso inclui todos os números.

ispunct verifica se o caracter ou inteiro passado como parâmetro é uma pontuação. Isso inclui qualquer tipo de pontuação como . , ? ! ^ ' { } ~ : ;. Porém, não é capaz de verificar se uma letra é acentuada.

isspace verifica se o caracter ou inteiro passado como parâmetro é um espaço em branco.

islower verifica se o caracter ou inteiro passado como parâmetro é uma letra minúscula

isupper verifica se o caracter ou inteiro passado como parâmetro é uma letra maiúscula

iscntrl verifica se o caracter ou inteiro passado como parâmetro é um caracter de comando. Isso inclui CTRL, ALT, ENTER, BACKSPACE, etc.

isxdigit verifica se o caracter ou inteiro passado como parâmetro é compatível com um número hexadecimal. Isso inclui todos os número (0 - 9) e qualquer letra entre A e F (não importa se minúsculo ou maiúsculo). EXEMPLO: #include <stdio.h> #include <stdlib.h> #include <ctype.h> main() {

int letra; printf(" Digite uma letra: "); letra = getchar(); printf("\n\nA letra que voce digitou e:\n"); if (isalnum (letra))

printf("\nalfanumerico"); if (isalpha (letra))

printf("\nletra"); if (isdigit (letra))

printf("\nnumero"); if (ispunct (letra))

printf("\npontuacao"); if (isspace (letra))

printf("\num espaco em branco");

Page 13: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

if (islower(letra)) printf("\nminusculo");

if (isupper(letra)) printf("\nmaiusculo");

if (iscntrl(letra)) printf("\nbotao de controle");

if (isxdigit(letra)) printf("\ncapaz para escrita em hexadecimal");

}

DESVIOS Desvios são instruções que desviam a sequência de execução dos comandos para outro ponto especificado do programa. Desvio goto Esta instrução é chamada de desvio de fluxo. A instrução desvia o programa para um rótulo (posição identificada) no programa. Sintaxe: A sintaxe da instrução goto é a seguinte: goto rotulo; ... rotulo: < comando>; Exemplo: #include <stdio.h> #include <stdlib.h> main() { int num; inicio: printf("Digite valores:"); scanf("%d", &num); if (num <= 0) goto inicio; num = num + 1; fim: printf("Valor com Incremento: %d", num); system ("pause"); }

FUNÇÕES - DEFINIÇÃO Conjunto de comandos agrupados em um bloco que recebe um nome e através deste pode ser ativado. Por que usar Funções?

Para permitir o reaproveitamento de código já construído;

Para evitar que um trecho de código que seja repetido várias vezes dentro de um mesmo programa;

Para permitir a alteração de um trecho de código de uma forma mais rápida. Com o uso de uma função é preciso alterar apenas dentro da função que se deseja;

Para que os blocos do programa não fiquem grandes demais e, por consequência, mais difíceis de entender;

Page 14: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Para facilitar a leitura do programa-fonte de uma forma mais fácil;

Para separar o programa em partes (blocos) que possam ser logicamente compreendidos de forma isolada.

Parâmetros Estes parâmetros possibilitam que se definida sobre quais dados a função deve operar. Para definir os parâmetros de uma função o programador deve explicitá-los como se estive declarando uma variável, entre os parênteses do cabeçalho da função. Caso precise declarar mais de um parâmetro, basta separá-los por vírgulas. Exemplo: A seguir temos a função SOMA que possui dois parâmetros, sendo o primeiro um float e o segundo um int. void SOMA(float a, int b) // basta separar por vírgulas { float result; // a declaração de variáveis é igual ao que se faz na função main result = a+b; printf("A soma de %2.2f com %d é %2.3f\n”, a, b, result); } Os parâmetros da função na sua declaração são chamados parâmetros formais. Na chamada da função os parâmetros são chamados parâmetros atuais. Os parâmetros são passados para uma função de acordo com a sua posição. Ou seja, o primeiro parâmetro atual (da chamada) define o valor o primeiro parâmetro formal e assim por diante. Os nomes dos parâmetros na chamada não tem relação com os nomes dos parâmetros na definição da função. Exemplo: #include <stdio.h> int soma(int a, int b) // Função soma. Basta separar os parâmetros por vírgulas { int result; // a declaração de variáveis é igual ao que // se faz na função main result = a+b; printf("A soma de %d com %d é %d\n", a, b, result); } main() { int a; int b; a = 10; b = 12; soma(a, b); } #include <stdio.h> int soma(int a, int b) // Função soma. Basta separar os parâmetros por vírgulas { int valor; valor = a+b; return valor; }

Page 15: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

main() { int a; int b; int result; a = 10; b = 12; result = soma(a, b); // Chamada da função SOMA(12.3,10) printf("A soma de %d com %d é %d\n", a, b, result); }

6 - COMANDO SWITCH: Utilizado quando uma determinada variável pode ser igual a diferentes valores que se deseja avaliar a variável é testada sucessivamente contra uma lista de variáveis inteiras ou de caracteres. Depois de encontrar uma coincidência, o comando ou o bloco de comandos é executado. Se nenhuma coincidência for encontrada o comando default será executado. O default é opcional. A sequência de comandos é executada até que o comando break seja encontrado. (tradução de switch-escolha, de case-caso, de break-senão, de default-fim escolha). Sintaxe: switch (variável) { case constante1: <comandos> break; case constante2: <comandos> break; default: <comandos> } Exemplos: main() { int epoca; printf("Digite o trimestre do ano em que estamos: "); scanf("%d", &epoca); switch (epoca)

{ case 1: printf("verão"); break; case 2: printf("outono"); break; case 3: printf("inverno"); break; case 4: printf("primavera"); break; default: printf("período inválido"); }

}

Enum

Page 16: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

É um tipo de dado definido pelo usuário que define uma variável que vai receber apenas um conjunto restrito de valores. Na realidade, um enum é um conjunto de valores inteiros representados por identificadores. Sintaxe: enum < nome > { < constante1 > , < constante2 > , · · · , < constanteN > , } Um exemplo clássico é usar uma enum para armazenar os meses do ano. Vejamos como funciona: enum meses_do_ano { Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro} Por padrão o primeiro valor de uma enum é inicializado com zero. Mas é possível determinar o valor inicial, basta declarar o primeiro valor para o identificador, e os valores seguintes serão automaticamente calculados com um incremento de uma unidade. Então podemos atribuir o valor 1 para janeiro como abaixo: enum meses_do_ano { Janeiro=1, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro} Alguns compiladores são capazes de verificar quando um valor que não está na lista da enum está sendo atribuído, porém outros não são, logo isto fica a cargo do programador. Exemplo: #include <stdio.h> #include <conio.h> enum meses_do_ano {Janeiro = 1, Fevereiro, Marco, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro}meses; main { printf("Digite o numero do mes: "); scanf("%d",&meses); switch(meses) { case Janeiro: printf("%d - Janeiro", meses); break; case Fevereiro: printf("%d - Fevereiro", meses); break; case Marco: printf("%d - Marco", meses); break; case Abril: printf("%d - Abril", meses); break; case Maio: printf("%d - Maio", meses); break; case Junho: printf("%d - Junho", meses); break; case Julho: printf("%d - Julho", meses);

Page 17: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

break; case Agosto: printf("%d - Agosto", meses); break; case Setembro: printf("%d - Setembro", meses); break; case Outubro: printf("%d - Outubro", meses); break; case Novembro: printf("%d - Novembro", meses); break; case Dezembro: printf("%d - Dezembro", meses); break; } else printf("Valor INVALIDO!!!\n"); }

7 - COMANDO WHILE: Uma maneira possível de executar um laço é utilizando o comando while. Ele permite que o código fique sendo executado numa mesma parte do programa de acordo com uma determinada condição.

O comando pode ser vazio, simples ou bloco.

Ele é executado desde que a condição seja verdadeira.

Testa a condição antes de executar o laço. Sintaxe: while(condição) { <comandos>; } Exemplo: int main() { int i; i=0; while (i<=10) { printf("Número %d\n", i); i++; } return 0; }

Page 18: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Exercícios: 1-Passar para linguagem C: a) Inicio inteiro: num, quadrado; imprima (“Digite um número inteiro: ”); leia (num); enquanto num ≠ 0 faça quadrado ← num * 2; imprima (“O quadrado de ”, num, “eh”, quadrado); imprima (“Digite um número inteiro: ”); leia (num); fim enquanto; fim. b) inicio inteiro: soma, cont, num; /*cont representa o contador*/ real: media; /* soma o acumulador*/ /* imprime uma msg e lê o 1o. numero inteiro*/ imprima (“Digite um número inteiro: ”); leia (num); cont = 0; soma = 0; enquanto num ≠ 0 faça cont = cont + 1 /*contador*/ soma = soma + num; /*acumulador*/ imprima (“Digite um número inteiro: ”); leia (num); fim enquanto; media = soma/cont; imprima (“A media eh ”,media); fim. 3-Faça um programa que imprime os multiplos de 4 entre 100 e 400 #include <stdio.h> #include <stdlib.h> main () { int i; i=100; while ((i>=100)&&(i<=400)) { if (i%4==0) { printf ("O numero %d e multiplo de 4.\n",i); } i++; } system ("pause"); }

Page 19: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

4- Elaborar um programa que efetue a leitura sucessiva de valores numéricos e apresente no final o total do somatório, a média e o total de valores lidos. O programa deve fazer as leituras dos valores enquanto o usuário estiver fornecendo valores positivos. Ou seja, o programa deve parar quando o usuário fornecer um valor negativo. #include <stdio.h> #include <stdlib.h> #include <conio.h> #include <math.h> main() { int x, media=0, numero=0, conta=0; float soma = 0; // a variavel soma tem que ser float porque se não for a media // só da como resultado um número inteiro. while (numero >= 0) { printf("Informe um valor positivo: "); scanf("%d", &numero); if (numero > 0) { soma=soma+numero; conta = conta + 1; } } printf("A soma eh %3.0f e a media eh %5.2f\n",soma, (soma/conta)); // %3.0f formata o numero float com 3 inteiros e zero decimal system("pause"); } 5- Fazer um programa que receba um valor n no teclado e determine o maior. A condição de término do programa é quando o usuário digitar zero. #include<stdio.h> #include<stdlib.h> #include<string.h> main() { int NUM; int maior; printf("\n DIGITE UM NUMERO INTEIRO: "); scanf("%d",&NUM); maior = NUM; while(NUM!=0) { if(NUM>maior) maior=NUM; printf("\n DIGITE OUTRO NUMERO(PARA ENCERRAR DIGITE 0) : "); scanf("%d",&NUM); } printf("\n O MAIOR NUMERO E: %d",maior); printf("\n\n"); system("pause"); }

Page 20: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

8 - COMANDO FOR: O comando for é de alguma maneira encontrado em todas linguagens procedurais de programação. Em sua forma mais simples, a inicialização é um comando de atribuição que o compilador usa para estabelecer a variável de controle do loop. A condição é uma expressão de relação que testa a variável de controle do loop contra algum valor para determinar quando o loop terminará. O incremento define a maneira como a variável de controle do loop será alterada cada vez que o computador repetir o loop. Primeira vez que executa o for: • Inicialização; • Condição; • VERDADEIRO: Bloco de comandos; • FALSO: sai do for; Demais vezes: • Incremento; • Condição; • VERDADEIRO: Bloco de comandos; • FALSO: sai do for; Sintaxe: For (inicialização; condição; incremento) <comandos>;

Exemplo: int main () { int i, idade; for (i=0; i<=5; i++) { printf (“ Digite uma idade”); scanf (“%d”, &idade); printf (“A idade digitada foi %d \n”); } return 0; } Exercício: 1-Fazer um programa que imprima 10 números de matricula fornecidos um a um pelo usuário.

9 - VETORES (ARRAYS): Em diversas situações os tipos básicos de dados (int, float, char, ....) não são suficientes para representar a informação que se deseja armazenar. Exemplo, uma palavra: “AULA”. Existe a possibilidade de construção de novos tipos de dados a partir da composição (ou abstração) de tipos de dados primitivos. Esses novos tipos têm um formato denominado ESTRUTURA DE DADOS, que define como os tipos primitivos estão organizados.

Page 21: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Mas se além da média quisesse fazer um programa em C para imprimir as notas lidas juntamente com a média da turma. Quando uma determinada Estrutura de Dados for composta de variáveis com o mesmo tipo primitivo, temos um conjunto homogêneo de dados. Essas variáveis são chamadas de variáveis compostas homogêneas. As variáveis compostas homogêneas unidimensionais são utilizadas para representar arranjos unidimensionais de elementos de um mesmo tipo, em outras palavras, são utilizadas para representar vetores. Sintaxe: tipo_primitivo identificador[qtde_elementos]; Exemplo: int dados[5]; // vetor com 5 (0 a 4) elementos do tipo int

Sempre começará a contar a primeira posição do zero. Para fornecer os elementos de cada posição do vetor é declarado da seguinte forma: Exemplo: float valores[4]={1.2, 3.6, 4.5, 2.8}; valores:

1.2 3.6 4.5 2.8

0 1 2 3 Exemplo: Se fosse float dados[3]={1.2}; Ou seja há menos valores do que o número de elementos do array, os elementos restantes são inicializados automaticamente com o valor zero. dados:

1.2 0 0 0

0 1 2 3

Page 22: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

Importante: Os vetores não são inicializados automaticamente. Declarar mais elementos do que defino causa erro de sintaxe. Omitindo o tamanho do vetor ele terá o mesmo número de elementos digitados. int n[ ] = {1, 2, 3, 4, 5}; Ou seja, 5 elementos, 5 posições, índices do vetor variam de 0 a 4. Cada um dos elementos de um vetor é referenciado individualmente por meio de um número inteiro entre colchetes após o nome do vetor. Exemplo: X = valores[1]; (8.9) Y = valores[3]; (4.5)

2.3 8.9 3.6 4.5

0 1 2 3 Ambas as formas atribuem um valor ao elemento 0 (zero) do vetor valores: Exemplo: i=0; valores[0] = 6.7; ou valores[i] = 6.7; Exemplo: O programa a seguir inicializa os dez elementos de um array s com os valores: 2, 4, 6, ..., 20 e o imprime. #include <stdio.h> #define TAMANHO 10 int main() { int s[TAMANHO], j; for (j=0; j<= TAMANHO - 1; j++) { s[j] = 2 + 2 * j; printf("Elemento %d tem valor de %d \n”, j, s[j]); } return 0; } Exercícios: 1-Informar quais são os elementos referenciados pelas expressões a seguir. mat

3.5 2.1 7.9 9.1 3.0 6.2 8.4 3.9 2.7 4.3

a) mat[2] b) mat[0] c) mat[10] d)mat[6]

2- Qual é a diferença entre os números “4” das duas instruções abaixo?

int mat[4]; mat[4] = 5;

3- Quais serão os valores dos elementos do vetor x que serão impressos no final da execução do trecho de programa seguinte: int main()

Page 23: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

{ int i, x[5]; for (i=0; i<=5; i++) x[i] = 2; for (i = 0; i<=5; i++) x[i] = x[i] * i; for (i=0;i<=5;i++) printf("%d\n", x[i]); return 0; }

10 - MATRIZES(VETORES MULTIDIMENSIONAIS): Como os vetores, as matrizes são estruturas de dados homogêneas. Podem ser construídas dos diversos tipos básicos primitivos (float, int, char). A Principal diferença em relação aos vetores (unidimensionais): possui uma ou mais dimensões adicionais, mas na maioria dos casos: utiliza-se matrizes bidimensionais. São utilizadas quando os dados homogêneos necessitam de uma estruturação com mais de uma dimensão. Exemplos: Programar um jogo de xadrez (o tabuleiro é naturalmente bidimensional),estrutura para guardar caracteres de um livro (três dimensões: 2 para representar os caracteres de uma página e uma terceira para indicar as páginas),problemas matemáticos matriciais. A sintaxe para declaração de uma variável deste tipo é semelhante à declaração dos vetores. Considera-se, porém a quantidade de elementos da outra dimensão: tipo_primitivo identificador[qde_el_linha] [qde_el_col]; Exemplo: int mat[2][3]; {uma matriz de números inteiros com 3 linhas e 2 colunas, essa matriz possui 6 elementos} Neste caso os índices variam de 0 a 2 para linhas e de 0 a 1 para colunas. 0 1 2

1.7 4.9 2.8

5.3 9.1 7.4

Pode-se fornecer valores de cada elemento de uma matriz na declaração, da mesma forma que nos vetores. Exemplo: float num[4][2] = {{3.6, 2.7},{5.0, 4.1},{7.9, 9.8}{5.3, 2.4},{7.4, 2.1}}; Ou seja, fornecem-se os valores linha a linha. Observações: As matrizes não são inicializadas automaticamente. Se houver menos valores do que o número de elementos da matriz, os elementos restantes são inicializados automaticamente com o valor zero. 5.6 7.8 8.9 7.9 1.2 4.9 5.9 9.7 4.7 2.4 3.1 6.8 int num[5][3] = {{32, 64, 27}}; int n[4][4] = {{0}}; //todos elementos são nulos.

Page 24: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

A seguinte declaração causa um erro de sintaxe: int n[2][6] = {{32, 64, 27, 18, 95, 14},{12,15,43,17,67,31}}; Uma vez que há mais elementos do que espaços de memória alocados. Os elementos das matrizes são referenciados individualmente por meio de índices (iniciando de zero) entre colchetes Exemplos: mat Dada a matriz acima tem-se: A = mat[1][2]; B = mat[0][0]; A instrução abaixo atribui um valor ao elemento linha zero e coluna um da matriz mat: i=0; j=1 mat[0][1] = 15; ou valores[i][j]=15; Exercícios: 1- Quais são os elementos do vetor referenciados pelas expressões abaixo? mat a) mat[2][0] b) mat[1][1] c) mat[3][1] 2- Qual é a diferença entre os números “3” das duas instruções abaixo ? int mat[6][3]; mat[6][3] = 5; 3- A instrução seguinte é correta para inicializar uma matriz ? int mat[2][2] = {1, 2},{3,4}; 4- Quais serão os valores dos elementos da matriz x no final da execução do trecho de programa seguinte: for (i=0; i<=3; i++) for (j = 0; j<=3; j++) x[i][j]=i*(j+1); for (i = 0; i<=3; i++) x[i][2] = x[2][i]; 5- Desenvolva um programa para ler e somar duas matrizes quadradas de dimensão 2. Imprima o resultado da soma. 3 8 5 9 2 1 3.2 4.1 2.7 5.9 0.6 9.0 11-Vetores de Caracteres (Cadeias de caracteres ou string): 11.1-Caracteres em C: Uma cadeia de caracteres é uma sequência de caracteres (char) justapostos e são fundamentais no desenvolvimento de programas computacionais. Exemplos de cadeias de caracteres (representadas internamente num programa): Mensagem de e-mail; Texto de um programa; Nome e endereço em cadastro de clientes, alunos, etc... Sequência genética. Um gene (ou o DNA de algum organismo) é composto de sequências dos caracteres A, T, G e C (nucleotídeos). Entrada/Saída de caracteres em C:

Page 25: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

ch = getchar(); armazena um caractere digitado em ch até que ENTER seja pressionado; putchar(ch); Imprime o caractere armazenado na variável ch na tela do computador Exemplo: int main() { char ch; ch = getchar(); putchar(ch); return 0; } Observação: Por mais que se escreva uma frase extensa só será imprimido a primeira letra digitada. Exemplo: Um programa que peça para que você digite uma letra ou um número e informa se o que fora digitado fora ou não um número. int main( ) { char c; printf("Digite uma letra ou numero: "); c = getchar(); if((c >= '0') && (c<='9')) printf("Eh um numero"); else printf("Nao eh um numero"); return 0; } 11.2-Cadeias de caracteres (strings): Cadeias de caracteres, em C, são representadas por vetores do tipo char terminadas, obrigatoriamente, pelo caractere nulo: ‘\0‘ (\zero). Portanto, deve-se reservar uma posição para este caractere de fim de cadeia. Exemplos: char cidade[4] = {'R', 'i', 'o', ‘\0'}; char disc[40] = {'A','l','g', 'o', 'r', 'i', 't', 'm', 'o', '\0'}; Equivale: char cidade[4] = "Rio"; char disc[40] = "Algoritmo"; Para ilustrar a declaração e a inicialização de strings, consideremos as seguintes declarações: char s1[] = "" ; //2 aspas sem espaços entre elas char s2[] = "Rio de Janeiro"; char s3[81]; char s4[81] = "Rio"; s1 armazena uma string vazia. Tem um único elemento: ‘\0’; s2 representa um vetor com 15 elementos (caracteres);(rio de janeiro contando os espaços 14 mais um para o ‘\0’; s3 representa uma cadeia de caracteres com até 80 caracteres e não é inicializada;(lembrando que a última posição é sempre do ‘\0’; s4 também é dimensionada para conter até 80 caracteres e é inicializada com a cadeia

Page 26: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

“Rio”. Leitura de cadeias de caracteres (scanf). int main() { char s[20]; printf("Digite uma string: "); scanf("%s",s); //sem & antes de s printf("String digitada: %s",s); return 0; } Lembrando que // insere um comentário sem ser impresso na tela ou alterar de alguma forma o algoritmo. Neste caso, a leitura será feita até encontrar um caractere branco: espaço (' '), tabulação (‘\t') ou nova linha (‘\n'). Assim, se digitarmos “Rio de Janeiro“, s conterá apenas “Rio“; Não é necessário o & antes da variável s em scanf. 11.3-Leitura/Impressão de cadeias de caracteres (gets/puts). int main() { char s[20]; printf("Digite uma string: "); gets(s); printf("String digitada: "); puts(s); return 0; } Neste caso, se digitarmos “Rio de Janeiro“, s conterá “Rio de Janeiro“; gets(s): lê a string s a partir do teclado; puts(s): imprime uma string na tela seguida de nova linha. Uma outra forma de imprimir uma cadeia de caracteres, caractere por caractere: int main() { char s[30]; //o tamanho poderia ser outro int i; printf("Digite uma string: "); gets(s); //imprime cada caractere da cadeia lida for(i=0; s[i]!='\0'; i++) printf("%c",s[i]); return 0; } * O for acima equivale a printf("%s",s); Exemplo: o programa a seguir calcula e imprime o comprimento (numero de caracteres) de uma cadeia: int main() { char s[30]; int i, n = 0; printf("Digite uma string: "); gets(s);

Page 27: 1 INTRODUÇÃO O C? de Linguagem C.pdf · pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo double, o primeiro é a base e o segundo o expoente

for(i=0; s[i]!='\0'; i++) n++; printf("\n O tamanho de \"%s\" eh: %d",s,n); return 0; } Exemplo: O programa a seguir faz uma cópia de uma cadeia, fornecida pelo usuário para outra: int main() { char dest[50], //string destino orig[50]; //string origem int i; printf("Digite uma string: "); gets(orig); //copia cada caractere de orig para dest for(i=0; orig[i]!='\0'; i++) dest[i] = orig[i]; //coloca o caractere nulo para marcar o fim da string dest[i] = '\0'; puts(dest); return 0; } Exercícios: 1-Fazer um programa que leia o nome do usuário e o número de matricula e imprima.