Aula01 introducao operacoes

78
Introdução a C Yuri Tavares dos Passos

Transcript of Aula01 introducao operacoes

Page 1: Aula01   introducao operacoes

Introdução a C

Yuri Tavares dos Passos

Page 2: Aula01   introducao operacoes

Histórico

● Nas universidades de Cambridge e de Londres criou-se a linguagem CPL (Combined Programming Language) em 1963.

● Martin Richards (Cambridge) cria a linguagem BCPL (Basic Combined Programming Language).

● Ken Tompson do Laboratório Bell cria a linguagem B em 1970 para o computador PDP-11.

Page 3: Aula01   introducao operacoes

Histórico

● O Unix é re-escrito na linguagem B, linguagem interpretada, portanto lenta.

● Como o PDP-11 era orientado por palavra em vez de byte, assim apareceu a necessidade de uma sucessora de B.

● Denis Ritchie do Laboratório Bell cria linguagem C em 1972.

Page 4: Aula01   introducao operacoes

Histórico

● O Unix foi desenvolvido em 1969 sendo codificado em Assembly e foi re-escrito em C em 1973. Desse fato gerou a história de C ser conhecido como uma linguagem de desenvolvimento de sistemas operacionais.

Page 5: Aula01   introducao operacoes

Características

● É uma linguagem de programação imperativa.● Esta forma de programação também é

conhecida como programação modular, ou programação procedural.

● É uma extensão da programação estruturada, que afirma que todo programa pode ser feito utilizando apenas sequências de comandos, seleções e repetições.

Page 6: Aula01   introducao operacoes

Características

● O nome modular vem da palavra módulos.● Isto quer dizer que seu programa pode ser

dividido em módulos que possuem um objetivo específico e resolvem um pequeno problema.

● A união de todos os módulos forma a solução de um problema maior que é o objetivo do sistema computacional a ser escrito em programação modular.

Page 7: Aula01   introducao operacoes

Características

● A programação imperativa descreve um programa por etapas que correspondem a ações do que o computador deve fazer para alcançar um objetivo.

● Verbos no modo imperativo são usados para denotar estas ações.

● Exemplo:

leia(numero)

escreva(2*numero)

Page 8: Aula01   introducao operacoes

Características

● O nome programação procedural vem da palavra procedimento.

● Baseia-se na declaração de funções e procedimentos para construção de sistemas. Em C, o programa principal é uma função que chama outras.

● Um módulo pode ser visto como cada uma destas funções ou procedimentos.

Page 9: Aula01   introducao operacoes

Características

● C é utilizada em programas que prezam pela execução rápida, como análises numéricas, processamento de imagens e vídeos, aplicações de tempo real, drivers de hardware, etc.

● C também pode ser usada para escrita de bibliotecas de procedimentos (Ex.: DLL) que podem servir como extensões ou plugins de softwares.

Page 10: Aula01   introducao operacoes

Características

● São exemplos de aplicações científicas com intenso processamento tais como meteorologia, oceanografia, física, astronomia, geofísica, engenharia e economia

Page 11: Aula01   introducao operacoes

Características

● C é uma linguagem de médio nível, pois ela também pode ser usada em conjunto com partes escritas em linguagem de máquina.– Uma linguagem de alto nível é mais próxima da

linguagem humana.● Ex.: Portuguol do Visualg.

– Uma linguagem de baixo nível é mais próxima da linguagem de máquina.

● Ex.: Assembly.

Page 12: Aula01   introducao operacoes

Características

● Possui os comandos clássicos de controle de execução.

● Possui uma sintaxe bem definida para a formação de programas.

● Faz distinção entre letras maiúsculas e minúsculas.– Nota ≠ nota

– Valor ≠ valor

– F ≠ f

Page 13: Aula01   introducao operacoes

Características

● Um comando em C é terminado com “;” (ponto-e-vírgula).

● Um programa em C:

1) Importação de módulos (ou bibliotecas) contendo outras funções ou comandos;

2) Execução do bloco principal, representado pela função int main().

Page 14: Aula01   introducao operacoes

Características

/* Inclusão de módulos ou bibliotecasde funções (opcional) */#include <módulo>#include “módulo”

int main(){

/* Bloco principal */

return 0;}

Page 15: Aula01   introducao operacoes

Primeiro programa

Page 16: Aula01   introducao operacoes

Identificadores

● São os nomes utilizados para criação de componentes dos programas, tais como variáveis e constantes.

● Possuem regras rígida de definição– Utilizar apenas letras, números e o caractere “_”

– Começar com uma letra ou o caractere “_”

– Exemplos válidos● Nome1, NomePessoa, nome_pessoa, nome5, _nome_

– Exemplos inválidos● 2nome, nome pessoa, p$nome, p-nome.

Page 17: Aula01   introducao operacoes

Tipos de dados básicos

● char– Usado para representa um caractere apenas. Cada

caractere representa um número, letra ou símbolo que pode ser inserido via teclado ou representado pelo computador.

– Um caractere constante pode ser representado por uma letra, dígito ou símbolo entre aspas simples.

● Ex: 'a', '0', '&', '*'

– Se for necessário utilizar a própria aspas siples deve-se utilizar o caractere \ antes.

● Ex: '\''

Page 18: Aula01   introducao operacoes

Tipos de dados básicos

● int– Representa números inteiros.

● float– Representa números reais com precisão baixa.

● double– Números reais com precisão dupla.

● As casas decimais dos números reais são representados por ponto.– Ex: 13.456

Page 19: Aula01   introducao operacoes

Tipos de dados básicos

● O char apesar de representar caracteres, ele também pode ser usado para representar números pequenos de apenas um byte.

● Na realidade, um caractere é um número inteiro que o computador sabe representar em símbolos.

Page 20: Aula01   introducao operacoes

Tipos de dados básicos

● Tabela de símbolos (excerto)Binário Decimal Hexadecimal Glifo

0100 0000 64 0x40 @

0100 0001 65 0x41 A

0100 0010 66 0x42 B

0100 0011 67 0x43 C

0100 0100 68 0x44 D

0100 0101 69 0x45 E

0100 0110 70 0x46 F

0100 0111 71 0x47 G

0100 1000 72 0x48 H

0100 1001 73 0x49 I

Page 21: Aula01   introducao operacoes

Tipos básicos Tamanho Precisão

char -> p/ caracteres 1 byte - 128 a + 127

int -> p/ inteiros 4 bytes* -2147483648 a 2147483647

float -> p/ reais 4 bytes* -3.4E-38 a +3.4E+38double -> p/ reais 8 bytes* -1.7E-308 a +1.7E+308

* Variam a depender do processador

Tipos de dados básicos

Page 22: Aula01   introducao operacoes

Variáveis e atribuições

● As variáveis podem ser declaradas em qualquer parte do código. Não existem uma parte específica onde devem ser declaradas.

● As atribuições em C são feitas utilizando o simbolo =.

Page 23: Aula01   introducao operacoes

Variáveis e atribuições

Page 24: Aula01   introducao operacoes

Variáveis e atribuições

● Por conta disso, surge o conceito de declaração local e global.

● Uma declaração é local se apenas uma parte do código consegue utilizar o que foi declarado.

● Uma declaração é global quando todo o programa consegue utilizar o que foi declarado

Page 25: Aula01   introducao operacoes

Variáveis e atribuições

Page 26: Aula01   introducao operacoes

Variáveis e atribuições

● A área de código que uma declaração de variável abrange dentro do código é conhecida como escopo desta variável.

Page 27: Aula01   introducao operacoes

Modificadores de tipos

● Os tipos básicos podem ser modificados utilizando-se palavras chaves especiais.

● São elas:

Tipo Descrição

unsigned Não usa o bit de sinal

long Aumenta o número de bytes usados

register Usa os registradores da CPU para a variável

signed Usa o bit de sinal (padrão)

short Utiliza o tamanho padrão

Page 28: Aula01   introducao operacoes

Modificadores de tipos

Tipo Tamanho Precisão

Unsigned int 4 bytes* 0 a 4294967295Long [int] 8 bytes* -263 a 263-1Unsigned long [int] 8 bytes* 0 a 264 - 1long double 12 bytes 96 bits em IEEE 754

* Variam a depender do processador

● Exemplos:

Page 29: Aula01   introducao operacoes

Modificadores de tipos

● Existe também o modificador const que torna uma variável constante.

● Assim, o valor daquela variável será atribuído somente uma vez, não podendo ser alterado novamente durante a execução do programa.

Page 30: Aula01   introducao operacoes

Modificadores de tipos

Page 31: Aula01   introducao operacoes

Frases literais

● Frases escritas em tela devem ser usadas com aspas duplas.

● Se forem utilizados caracteres especiais, devem ser usados com \ antes.– Se existir a necessidade de escrever frases contendo aspas

duplas também

● Caracteres especiais mais comuns:– \n: Quebra de linha

– \\: Uma barra \

– \xNN: um caractere cujo código em hexadecimal é NN.

Page 32: Aula01   introducao operacoes

Frases literais

● Exemplos:● "Olá, mundo!"● "Este exemplo possui aspas: \"Olá, mundo!\""● "Uma linha.\nDuas linhas.\nTrês linhas."● "O operador \\ é usado no Visualg para realizar a

operação \"quociente\"."

Page 33: Aula01   introducao operacoes

Variáveis para literais (strings)● Frases ou textos literais são conhecidos na

programação como string ou cadeia.● Uma string é uma sequência de caracteres.

Para declarar uma variável do tipo string deve-se:

1) usar a palavra char,

2) declarar o nome da variável,

3) em seguida indicar a quantidade máxima de caracteres que esta variável deve armazenar.

Page 34: Aula01   introducao operacoes

Variáveis para literais (strings)● Exemplos:

– char texto[255];

– char msg[120];

– char nome[100];

– char palavra[10];

– char msg1[100], msg2[40];

Page 35: Aula01   introducao operacoes

Comentários

● São trechos de código que não são compilados.● Servem para documentar o código, explicando partes

do código fonte, com o intuito de auxiliar quem está lendo.

● Comentário de uma linha:

// comentário

● Comentário de bloco, com várias linhas:

/* comentário comentário comentário */

Page 36: Aula01   introducao operacoes

Operadores aritméticos

● Os operadores aritméticos utilizados são:

Operação Símbolo Descrição

Adição + Realiza a soma entre dois operandosSubtração - Realiza a subtração entre dois operandosMultiplicação * Realiza a mutiplicação entre dois operandosDivisão / Realiza a divisão entre dois operandos

A precedência é a mesma da usada nos algoritmos, podendo ser alterada através do uso de parênteses. Exemplos: 2 * pi * raio (n1 + n2 + n3) / 3

Page 37: Aula01   introducao operacoes

Operadores aritméticos

● Observação sobre divisão– Caso os dois argumentos sejam inteiros, o resultado

será um número inteiro

– Caso qualquer um dos argumentos seja número real (float, double, etc.) o resultado será um número real.

● Exemplos:

3/2 = ?? 1/2 = ??

3/2.0 = ?? 1.0/2 = ??

Page 38: Aula01   introducao operacoes

Valores lógicos em C

● Na linguagem C, não existe variáveis do tipo lógico.

● Para isto, C utiliza variáveis inteiras para expressar valores lógicos.

● Assim, um valor inteiro igual a 0, representa falso. Um valor inteiro diferente de zero é considerado verdadeiro.– Costuma-se usar 1 para representar verdadeiro em

C.

Page 39: Aula01   introducao operacoes

Operadores relacionais

● São utilizados para construção de expressões lógicas.

● Em C, os operadores relacionais retornam 0 ou 1.

Relação Operando Exemplo Descrição

Igual == a == b Verifica se a é igual a bDiferente != a != b Verifica se a é diferente de bMaior > a > b Verifica se a é maior que b

Page 40: Aula01   introducao operacoes

Operadores relacionais

Relação Operando Exemplo Descrição

Menor < a < b Verifica se a é menor a bMaior ou igual

>= a >= b Verifica se a é maior ou igual a b

Menor ou igual

<= a <= b Verifica se a é menor ou igual a b

Page 41: Aula01   introducao operacoes

Operadores relacionais

● Exemplos:– altura > 19

– idade < 10

– faltas == 0

– media != 6.0

– salario >= 800.00

– valor <= 100

Page 42: Aula01   introducao operacoes

Operadores lógicos

● Operadores capazes de conectar expressões relacionas ou lógicas. Em C, retornam 0 ou 1.

Operação Resultado

&& Será 1, quando todos os operandos forem diferentes de 0, caso contrário será 0.

|| Será 0, quando todos os operandos forem 0, caso contrário será 1.

! Inverte o valor da expressão lógica (Qualquer valor diferente de 0 passa a ser 0 e 0 passa a ser 1).

Page 43: Aula01   introducao operacoes

Operadores lógicos

● Precedência:

1º) não: !

2º) e: &&

3º) ou: || ● Exemplos:

– Considere a = 2, b = 3, c = 4 e d = 5.

– !(a > b) && (c <= d)

– (a == b) || (c != d)

Page 44: Aula01   introducao operacoes

Operadores binários

● São operadores que manipulam os bits de uma variável. São eles:

Operação Operador Exemplo DescriçãoE binário & A &B Aplica um E bit a bit nos

bits de A e de B.OU binário | A | B Aplica um OU bit a bit

nos bits de A e de B.NÃO binário ~ ~A Aplica o NÃO em cada

bit de A.

Page 45: Aula01   introducao operacoes

Operadores binários

Operação Operador Exemplo DescriçãoDeslocamento à direita

>> A >> B Desloca os bits de A para direita, B vezes. B deve ser um número inteiro. São colocados zeros nos bits da extrema esquerda.

Deslocamento à esquerda

<< A << B Desloca os bits de A para esquerda, B vezes. B deve ser um número inteiro. São colocados zeros nos bits da extrema direita.

Page 46: Aula01   introducao operacoes

Operadores binários

● Exemplos:– char a = 2, b = 15; //a = 0000 0010 b = 0000

1111

– char c = a & b; //c = 0000 0010

– c = a | b; //c = 0000 1111

– c = ~a; //c = 1111 1101

Page 47: Aula01   introducao operacoes

Operadores binários

● Exemplos:– char valor = 2; //valor = 0000 0010

– valor = valor << 2; //valor = 0000 1000

Page 48: Aula01   introducao operacoes

Operadores abreviados● São operadores que abreviam operações usuais em

programação. O uso delas pode tornar a execução do executável mais rápida.

● Incremento e decremento de 1:

++: incremento de 1

-- : decremento de 1

● Exemplos:– valor++;

– quantidade--;

– ++folhas;

– --faltas;

Page 49: Aula01   introducao operacoes

Operadores abreviados

● A posição deles influencia– valor++ será executado por último após outros

comandos.

– ++valor será a primeira coisa a executar numa linha.

● Exemplos:– Suponha v = x = 1:

float A = v++ /2.0;

float B = ++x /2.0;

Page 50: Aula01   introducao operacoes

Operadores abreviados

● +=: incremento de um valor arbitrário.● Uso:

<variável> += <expressão>;

● Significa o mesmo que:

<variável> = <variável> + <expressão>;

● Exemplos:– valor+=3; //valor = valor + 3;

– x += y*2; //x = x + y*2;

Page 51: Aula01   introducao operacoes

Operadores abreviados

● O mesmo ocorre com -=, *=, /=, <<=, >>=, &= e |=.

Page 52: Aula01   introducao operacoes

Comando de escrita (impressão)● Para escrever algo na tela é necessário

incluir o módulo stdio.h. Dentro deste módulo, existe o comando:

printf()

● O comando printf() possui 1 ou mais argumentos.– O primeiro argumento é um literal.

– Os demais argumentos são opcionais.

Page 53: Aula01   introducao operacoes

Comando de escrita (impressão)● Com um argumento podemos apenas

escrever frases.● Exemplos:

– printf("Olá, mundo!")

– printf("Olá, mundo!\n")

– printf("1\n2\n3\n4")

Page 54: Aula01   introducao operacoes

Comando de escrita (impressão)● Para escrevermos os valores das variáveis

com printf, deve-se utilizar os argumentos opcionais, de tal forma que cada argumento corresponde a aparição da variável na frase que será escrita.

● Além disso, é necessário especificar a posição na frase em que a variável irá aparecer e o tipo de variável.

Page 55: Aula01   introducao operacoes

Comando de escrita (impressão)● Existem várias especificações de tipos que

podem ser impressos pelo printf. Apenas os mais usuais serão mostrados a seguir.

Page 56: Aula01   introducao operacoes

Comando de escrita (impressão)● %i ou %d: números inteiros decimais.● %x, %X: números inteiros hexadecimais

com letras minúsculas e letras maíusculas, respectivamente.

● %f: números reais.● %e, %E: representa em notação científica

com e ou E, respectivamente.

Page 57: Aula01   introducao operacoes

Comando de escrita (impressão)● %g: Usa a menor versão entre %f e %e.● %G: Usa a menor versão entre %f e %E.● %c: caracteres● %s: frases literais armazenadas em

variáveis (strings)● %p: ponteiros

Page 58: Aula01   introducao operacoes

Comando de escrita (impressão)

Page 59: Aula01   introducao operacoes

Comando de escrita (impressão)● Formatação da saída.

– A forma como os valores das variáveis são escritas na tela podem ser modificadas no printf. É possível:

● fixar a quantidade de casas decimais de um número real;

● Preencher com espaços à esquerda, caso o número seja pequeno;

● Preencher com zeros à esquerda;● Etc.

Page 60: Aula01   introducao operacoes

Comando de escrita (impressão)

Page 61: Aula01   introducao operacoes

Comando de escrita (impressão)

Page 62: Aula01   introducao operacoes

Comando de escrita (impressão)

Page 63: Aula01   introducao operacoes

Comando de escrita (impressão)

Page 64: Aula01   introducao operacoes

Comando de leitura

● Para lermos valores e armazená-los em variáveis, usa-se o comando scanf.

● O primeiro argumento do scanf é um literal que deve especificar o tipo da variável, idêntico ao printf.

● O demais argumentos são as variáveis que serão lidas, todas começando com &.

● Cada variável armazena o valor apenas após ser lido o ENTER.

Page 65: Aula01   introducao operacoes

Comando de leitura

● Exemplos:

scanf("%c",&c1);

scanf("%c %c",&c1,&c2);

scanf("%i",&x);

scanf("%i %i %i",&x,&y,&z);

scanf("%f",&salario);

Page 66: Aula01   introducao operacoes

Comando de leitura

● Quando a variável a ser lida for do tipo literal (também conhecido como string), não utiliza &.

● Exemplo:

char frase[100], msg1[20], msg2[20];

scanf("%s", frase);

scanf("%s %s", msg1, msg2);

Page 67: Aula01   introducao operacoes

Comando de leitura

Page 68: Aula01   introducao operacoes

Code::Blocks

Page 69: Aula01   introducao operacoes

Code::Blocks

Page 70: Aula01   introducao operacoes

Linha de comando (Linux)

● Mudar para o diretório onde estão seus códigos em C. Suponha que ele esteja no diretório /home/nome/c/:– cd /home/nome/c/

● Suponha que você tenha salvo um arquivo com nome aula01.c. Para compilá-lo pela linha de comando, digite:– gcc aula01.c

Page 71: Aula01   introducao operacoes

Linha de comando (Linux)

● Ao compilar, será gerado um arquivo com nome a.out. Se você quiser gerar um arquivo executável com nome próprio use a opção -o, assim:– gcc -o aula01 aula01.c

● Execute seu programa digitando ./ antes do nome do seu programa.– ./aula01

Page 72: Aula01   introducao operacoes

Linha de comando (Linux)

Page 73: Aula01   introducao operacoes

Exercícios

1) Elaborar um programa que receba a idade de uma pessoa em número de anos, calcule e escreva essa idade em meses, dias, horas e minutos.

2) Elaborar um programa para calcular a diferença de preços de um determinado produto, comparando os preços de compra atual e anterior. O programa deve obter os preços atual e anterior e exibir a diferença algébrica e percentual dos preços.

Page 74: Aula01   introducao operacoes

Exercícios

3) Escrever um programa para efetuar o cálculo da quantidade de litros de combustível gastos em uma viagem, sabendo-se que o veículo faz 9 km/litro. O usuário informará a velocidade média e o tempo despendido na viagem. (Obter o tempo em horas e minutos, em separado). O programa deve apresentar a distância percorrida e a quantidade de litros gastos.

Page 75: Aula01   introducao operacoes

Exercícios

4) Elaborar um programa para calcular o comprimento de um círculo, obtendo como entrada a medida do raio(r). A fórmula da área é 2*pi*raio.

5) Em certa disciplina, a nota média do aluno é calculada com base em três provas. A primeira prova tem peso 3, a segunda tem peso 3 e a terceira tem peso 4.  Fazer um programa para calcular e apresentar a nota média, tendo como dados de entrada o nome do aluno e as notas referentes as três provas e como saída o nome e a média calculada.

Page 76: Aula01   introducao operacoes

Exercícios

6) João deseja fazer um programa em C que imprima todos os números reais 0.333, 0.25, 0.20 e 0.166. Ele fez o seguinte programa para isto:

Mas seu programa só escreve zeros. Por quê?Corrija o programa dele usando o operador dadivisão.

Page 77: Aula01   introducao operacoes

Exercícios

7) O comando sizeof() pode ser usado para descobrir o tamanho de variáveis ou tipos de variáveis. O programa abaixo escreve 1 na tela, visto que char é sempre 1 byte.

Faça um programa em C que use o comando sizeof() para descobrir o tamanho dos seguintes tipos em sua máquina: int, unsigned int, long int, long, unsigned char, double, float.

#include <stdio.h>int main(){ printf(“%d\n”, sizeof(char));}

Page 78: Aula01   introducao operacoes

Exercícios

8) Faça um programa que escreva na tela os 15 primeiros números que são potência de 2 utilizando apenas operadores binários.