Download - Aula01 introducao operacoes
Introdução a C
Yuri Tavares dos Passos
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.
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.
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.
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.
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.
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)
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.
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.
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
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.
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
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().
Características
/* Inclusão de módulos ou bibliotecasde funções (opcional) */#include <módulo>#include “módulo”
int main(){
/* Bloco principal */
return 0;}
Primeiro programa
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.
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: '\''
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
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.
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
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
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 =.
Variáveis e atribuições
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
Variáveis e atribuições
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.
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
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:
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.
Modificadores de tipos
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.
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\"."
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.
Variáveis para literais (strings)● Exemplos:
– char texto[255];
– char msg[120];
– char nome[100];
– char palavra[10];
– char msg1[100], msg2[40];
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 */
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
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 = ??
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.
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
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
Operadores relacionais
● Exemplos:– altura > 19
– idade < 10
– faltas == 0
– media != 6.0
– salario >= 800.00
– valor <= 100
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).
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)
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.
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.
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
Operadores binários
● Exemplos:– char valor = 2; //valor = 0000 0010
– valor = valor << 2; //valor = 0000 1000
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;
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;
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;
Operadores abreviados
● O mesmo ocorre com -=, *=, /=, <<=, >>=, &= e |=.
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.
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")
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.
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.
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.
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
Comando de escrita (impressão)
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.
Comando de escrita (impressão)
Comando de escrita (impressão)
Comando de escrita (impressão)
Comando de escrita (impressão)
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.
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);
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);
Comando de leitura
Code::Blocks
Code::Blocks
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
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
Linha de comando (Linux)
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.
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.
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.
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.
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));}
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.