Apostila de introdução a linguagem C

Apostila de introdução a linguagem C

(Parte 1 de 2)

Universidade Federal de Juiz de Fora

Faculdade de Engenharia e Arquitetura Programa de Educação Tutorial

Apostila deApostila deApostila deApostila de
Introdução àIntrodução àIntrodução àIntrodução à
Linguagem CLinguagem CLinguagem CLinguagem C

Por Marcela Rocha Tortureli de Sá Bolsista do grupo PETCivil

Agradecimentos:

Agradeço em especial à Professora Ana Paula Couto com quem tive aula e após ter finalizado a cadeira me ajudou na formulação desta apostila.

1-Introdução:página 03
2-Sintaxe:página 04
2-Variáveis:página 05
3-Operadores:página 05
4-Comandos de Entrada e Saída:página 07
4.1-Comando de Imprensão printf:página 07
4.2-Leitura de dados - scanf():página 09
5-Comando Condicional – if/else:página 10
5.1-Comando condicional if:página 10
5.2-Comando Condicional – if else:página 10
6-Comando Switch:página 12
7-Comando while:página 13
8-Comando For:página 14
9-Vetores (arrays):página 15
10-Matrizes(vetores multidimensionais):página 18
1-Vetores de Caracteres(Cadeias de caracteres ou string):página 20
1.1-Caracteres em C:página 20
1.2-Cadeias de caracteres (strings):página 21
1.3-Leitura/Impressão de cadeias de caracteres (gets/puts)página 2

1-Introdução:

O que é C?

C é uma linguagem de programação de computadores: É possível usá-la para criar um conjunto de instruções para que o computador possa executar. Isso significa que você pode usá-la para criar listas de instruções para um computador seguir. A linguagem C é uma das milhares de linguagens de programação atualmente em uso. 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. Existe há várias décadas e ganhou ampla aceitação por oferecer aos programadores o máximo em controle e eficiência.

A linguagem C foi criada com o objetivo principal em mente: facilitar a criação de programas extensos com menos erros, recorrendo ao paradigma da programação algorítmica ou procedimental. [, mas sobrecarregando menos o autor do compilador, cujo trabalho complica-se ao ter de realizar as características complexas da linguagem.]

Motivação:

Por ser uma linguagem poderosa, robusta, flexível e madura, conhecer todos os seus detalhes, “truques” e “armadilhas” requer um estudo criterioso e profundo. Mas o C é uma linguagem de sintaxe simples e elegante que permite rápido entendimento pelo programador iniciante. Desde sua criação, o C tornou-se uma linguagem popular tanto entre programadores profissionais quanto entre os iniciantes. É a linguagem de programação preferida para o desenvolvimento de sistemas e softwares de base, apesar de também ser usada para desenvolver programas de computador. No meio acadêmico, é amplamente utiliza para desenvolvimento de pesquisas científicas e como instrumento de aprendizado para o desenvolvimento de algoritmos.

A linguagem C é amplamente utilizada no meio acadêmico. Somente para exemplificar o quanto a linguagem C é difundida, podemos citar alguns softwares escritos em C: Matlab, Windows, Kernel do Linux, Nedit (editor de texto), Octave (similar do Matlab em código aberto), o servidor de vídeo RI, Skype (escrito em C/C++) e Network Simulator (NS2).

2-Sintaxe:

A sintaxe são regras detalhadas para cada construção válida.

Para que o programa criado seja executado de maneira correta, é necessário seguir a sintaxe própria da linguagem. Identificadores: É o nome dado pelo programador a um objeto, que será utilizado para que este possa ser manipulado durante o programa.

Exemplo: a, tamanho, idade, SomaVetores,

Ao declarar um identificador você dá um tipo que determina como os valores de dados serão representados, que valores podem expressar, e que tipo de operações você pode executar com estes valores. È importante ressaltar que em C letras maiúsculas diferem das minúsculas (a linguagem é Case Sensitive).

Tipos definem as propriedades dos dados manipulados em um programa. Variáveis ficam armazenadas de acordo com suas propriedades de informação.

Int – para armazenamento de qualquer número inteiro negativo, nulo ou positivo. Ocupa 2 bytes (long int 4 bytes) de memória. Exemplo:- 5, 0, 2

Float – para armazenar qualquer número real negativo, positivo ou nulo. Ocupa 4 bytes (doublé 8 bytes) de memória. Exemplo:- 1.78, 98, 0

Char – usada para se armazenar quaisquer letras e números (conjunto de caracteres alfanuméricos). Ocupa 1 byte de memória. Exemplo: ”A”,”B”

As declarações expressam as partes do programa, podendo dar significado a umidentificador, 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 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 ( )

2-Variáveis:

É um local na memória principal, isto é, um endereço que armazena um conteúdo (informação) que pode ser modificado.

Em C, não é possível ter variáveis que comecem com dígito e espaços não são permitidos. Exemplos de nomes de variáveis indevidas: 2w, peso do aluno, sal/hora.

Observação:Em C usualmente são utilizadas variáveis em minúsculo e constantes em maiúsculos.

3-Operadores:

= atribuição

!= diferente

<= Menor igual

>= Maior igual

== igual

% Resto da divisão entre inteiros

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, cout, 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).

Forma de declaração de variáveis em linguagem C:

<tipo> <nome_var>; ou

<tipo> <nome_var1>, <nome_var2>,,<nome_varn>;

Exemplo: int numero,soma;

É 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.

Operador de atribuição: <variavel> = <expressão>; Exemplos: a = 5;

Operadores Aritméticos:

4 Resto da divisão Binário %

1 Inversão do sinal Unário - 1 Manutenção do sinal Unário +

2 Decremento Unário --

2 Incremento Unário ++

3 Divisão Binário / 3 Multiplicação Binário *

5 Subtração Binário -

5 Adição Binário + Prioridade Operação Tipo Aritméticos

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

Exemplo: a=a+b;

Observação:

a++ é similar a a = a + 1; b-- é similar a b = b -1;

Outros Operadores:

4-Comandos de Entrada e Saída 4.1-Comando de Imprensão printf

Através da função pré-definida printf(), cujo protótipo está contido também no arquivo stdio.h. Sua sintaxe é a seguinte:

printf( “Expressão” , lista de argumentos );

Sintaxe: <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 float um número em ponto flutuante

%lf double ponto flutuante com dupla precisão

%e float ou double um número na notação científica

%s ......... uma cadeia de caracteres

Primeiro Programa em C! #include <stdio.h> int main() { printf("%s está a %d milhões de milhas do sol","Vênus",67); }

#include <stdio.h> int main( ) { printf(“Valor inteiro atribuído foi %d para o caracter %c e um float foi de %f “,9,a,1.45);

#include <stdio.h> int main() { printf(“Se quisesse imprimir uma string : %s“,”Minha string!”); }

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 %

Por default, a maioria dos compiladores C exibem os números de ponto flutuante com seis casas decimais.

Para alterar este número podemos acrescentar .n ao código de formatação da saída, sendo n o número de casas decimais pretendido.

#include <stdio.h>

Embora o número digitado possua 10 casas decimais imprimirá respectivamente, 6, 10, 1, 2,3e 10 casas decimais.

Exercícios

1-Fazer um programa que imprima o nome da sua cidade natal. 2-Faça um programa que imprima na primeira linha seu nome, na segunda sua idade e na terceira sua altura. 3-Faça um programa que imprima o numero 75.7632489 com 1,2 e 5 casas decimais.

4.2-Leitura de dados - scanf()

Ela é o complemento de printf() e nos permite ler dados formatados da entrada padrão (teclado). Sua sintaxe:

scanf("expressão de controle", argumentos); Exemplo:

• %d indicativo do tipo, neste caso do tipo inteiro. • &m operador utilizado para obter o endereço de memória da variável.

Exemplo:

int main () { int idade;

Printf(“Digite a sua idade”); Scanf(“%d”,&idade); Printf(“A sua idade é %d”,idade); Return 0;

Exercícios:

1-Faça um programa que peça ao usuário para digitar sua altura, leia o dado digitado e imprima o valor. 2-Faça um programa o qual o usuário digite seu peso e o de mais duas pessoas, imprima os valores digitados.

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 seqüência de comandos seja executada (ou não executada)., dependendo do resultado de uma condição pré-estabelecida. Sua 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).

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, tendo a seguinte 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); if <condição 1> { <comandos if1> if <condição 2> { <comandos if2> } else { <comandos else2> }

} else { <comandos else1> if <condição 3> { <comandos if3> }

Exemplo:

int main() { int IDADE; printf("Informe sua idade: "); scanf("%d",&IDADE); if (IDADE < 20) { if (IDADE < 13) printf("Infantil."); else printf("Adolescente"); } else (IDADE < 50) printf("Adulto"); else printf("Idoso"); return 0; }

Observe que as chaves não foram utilizadas nesse exemplo no segundo e terceiro else umas vez que dentro de cada else há apenas uma condição quando há mais que uma torna-se necessário a utilização de chaves.

Exercícios: 1. Faça um programa para ler dois números reais, faça a divisão do primeiro número pelo segundo (se o segundo for diferente de zero). 2. Faça um programa para ler dois números reais e verificar se ambos são maiores que zero. Caso positivo, informar “Valores são válidos”. Caso contrário, informar “Valores inválidos”.

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 seqüê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: int 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"); } return 0; }

Exercícios: 1-Qual é a saída do programa. int main() { int x = 10, y = 3; if (x < 10) printf(“Primeira Saida ”); else if (y < 4) if (x > 10) printf(“Segunda Saida ”); else printf(“Terceira Saida ”); return 0; }

2-Os funcionários de uma empresa receberam um aumento de salário: técnicos, 50%; gerentes,30%;demais funcionários, 20%. Escrever um algoritmo que receba como entrada o salário atual e o cargo do funcionário, e imprima o novo salário após o aumento. 3-Calculadora:Fazer um algoritmo para ler dois números e um dos símbolos das operações: +, -, * e /. Imprimir o resultado da operação efetuada sobre os números lidos.

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:

Exercícios: 1-Passar para linguagem C:

a) Inicio inteiro: NUM, QUADRADO; {imprime uma msg e lê o 1o. numero inteiro} 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; {e se CONT for zero?} imprima(“A media eh ”,MEDIA); fim.

8-Comando For:

O comando for é de alguma maneira encontrado em todas linguagens procedurais de programação. Em sua forma mais simples, a incializaçã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):

float, char,) não são suficientes para representar a

Em diversas situações os tipos básicos de dados (int, 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.

Exemplo: Definir a média das notas de 50 alunos de uma turma.

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 .

(Parte 1 de 2)

Comentários