Upload
internet
View
111
Download
2
Embed Size (px)
Citation preview
ALGORITMOS I
UMA VISÃO GERAL DA LINGUAGEM C
Prof. Me. Jeime Nunes
Introdução Linguagem C
Breve Histórico
• Em 1973 Dennis Ritchie reescreveu o sistema operacional UNIX em uma linguagem de alto nível (Ling. C).
• Surgem diversas implementações utilizando C, porém os códigos gerados eram incompatíveis.
• ANSI (American National Standard Institute), em 1983 padronizou a ling. C.
2
Introdução Linguagem C
C comparado a outras linguagens
• Devemos entender Nível Alto como sendo a capacidade da linguagem em compreender instruções escritas em “dialetos” próximos do inglês (Ada e Pascal, por exemplo) e Nível Baixo para aquelas linguagens que se aproximam do assembly, que é a linguagem própria da máquina, compostas por instruções binárias e outras incompreensíveis para o ser humano não treinado para este propósito.
• Infelizmente, quanto mais clara uma linguagem for para o humano (simplicidade >) mais obscura o será para a máquina (velocidade <).
3
Introdução Linguagem C
C comparado a outras linguagens
Nível Baixo
Nível Médio
Nível Alto
Velocidade
Clareza
Assembler
CC++FORTH
JavaAdaModula -2PascalCOBOLFORTRANBASIC
4
Introdução Linguagem C
Aplicações escritas em C
• Sistema Operacional: UNIX
• Planilhas: 1,2,3 e Excel
• Banco de Dados: dBase III, IV e Access ( gerenciador
de base de dados).
• Aplicações Gráficas: Efeitos Especiais de filmes
como
Star Trek e Star War.
5
Introdução Linguagem C
Características da Linguagem C
• Portabilidade entre máquinas e sistemas operacionais.
• Alia características de linguagens de alto e baixo nível (liberdade ao programador).
• Programas Estruturados.
• Total interação com o Sistema Operacional.
• Código compacto e rápido, quando comparado ao código de outras linguagem de complexidade análoga.
6
Introdução Linguagem C
Características da Linguagem C
• C é uma linguagem compilada: lê todo o código fonte e gera o código objeto (ling. de máquina) uma única vez.
• Linguagens Interpretadas: lê o código fonte, traduz e executa cada vez que o programa for executado.
7
Introdução Linguagem C
Detalhes Importantes
• Sempre que o código fonte for alterado ele deve ser novamente compilado.
• C é “case senitive”
• Deve-se listar antecipadamente todas as variáveis utilizadas no programa.
8
Introdução Linguagem C
Palavras reservadas
• São palavras que têm um significado especial para a linguagem.
auto, break, case, if, for, while, begin, end, continue, return, const,....
• C entende tais palavras apenas em letras minúsculas
9
Introdução Linguagem C
Bibliotecas
• Conjunto de funções para realizar tarefas específicas.
• Biblioteca padrão C - ANSI - funções básicas.• As primeiras linhas do programa indicam as
bibliotecas utilizadas
#include “minha_biblioteca.h” ou#include <minha_biblioteca.h>Exemplo:
#include <stdio.h> #include <stdlib.h>
10
Introdução Linguagem C
Bibliotecas
• Stdlib.h (standard library) – é um arquivo cabeçalho da biblioteca de propósito
geral padrão da linguagem de programação C. Ela possui funções envolvendo alocação de memória, controle de processos, conversões e outras.
• Stdio.h – arquivo-cabeçalho utilizado para o uso de funções de
entrada e saída
11
Introdução Linguagem C
Estrutura de um programa C
12
Comentário
Arquivo-cabeçalho
Introdução Linguagem C
Estrutura de um programa C
13
ALGORITMOS I
EXPRESSÕES EM C
Prof. Me. Jeime Nunes de Andrade
Introdução Linguagem C
Primeiros Passos
• Compilador Dev C++
15
Introdução Linguagem C
Primeiros Passos
• Vejamos um primeiro programa em C:
16
Introdução Linguagem C
Primeiros Passos
• Arquivos de cabeçalho
– Diz ao compilador que ele deve incluir o
arquivo-cabeçalho stdio.h
– Este arquivo possui declarações de
funções úteis para entrada e saída de
dados
17
• Comentários
– Quando fazemos um programa, uma boa idéia
é usar comentários
– O compilador C desconsidera qualquer coisa
que esteja entre /* e */ ou linha que comece
com //
Introdução Linguagem C
Primeiros Passos
• Função main
– A linha int main indica que estamos definindo uma
funçao de nome main.
– Todos os programas em C têm que ter uma função
main, pois é esta função que será chamada quando
o programa for executado.
– O conteúdo da função é delimitado por chaves {}.
18
• return () - Indica o retorno de uma função
• Funções
• printf() função que coloca uma string
na tela.
• System () função que pause a tela de
visualização
ALGORITMOS I
EXPRESSÕES EM C
VARIÁVEIS
Prof. Me. Jeime Nunes
Introdução Linguagem C
Tipos Básicos de Dados
• Os tipos básicos de dados– Char:
• utilizado para conter valores defnidos pelo conjunto de caracteres ASCII
– Int: • utilizado para representar valores inteiros
– float e double: • utilizado para representar valores em ponto flutuante
( digitos com valores decimais)
20
EXPRESSÕES EM C
Introdução Linguagem C
• determinar um conjunto de valores e as possíveis operações realizadas sobre os mesmos ;
• informa a quantidade de memória (bytes);
tipo bytes escala
char 1 -128 a 127 int 2 -32.768 a 32.767 float 4 3.4e-38 a 3.4e+38 double 8 1.7e-308 a 1.7e+308
Tipos Básicos de Dados
21
Introdução Linguagem C
Long ou Long int (4 bytes)
Unsigned Char (0 a 255)
Unsigned int (0 a 65.535)
Diferentes tipos de inteiros
22
Introdução Linguagem C
Variáveis
• Variável: “objeto” que pode assumir diversos valores;• Espaço de memória de um certo tipo de dado associado a
um nome para referenciar seu conteúdo
23
Introdução Linguagem C
Variáveis
• Programas manipulam dados (valores) e esses dados são armazenados em variáveis
• Uma variável é uma posição na memória referenciada por um identificador (nome)
• Uma variável deve ser declarada informando o tipo de dado que ela armazenará e o nome dela
float total, media;int soma, subtração, x, y;
• Muitas variáveis podem ser criadas em uma declaração
24
Introdução Linguagem C
Variáveis
• Uma declaração de variável instrui o compilador:– a reservar um espaço de memória suficiente para armazenar o tipo de
dado declarado– o nome ao qual iremos referenciar esta posição de memória
• Só após a declaração da variável, é que esta pode ser referenciada (utilizada)
• Quando uma variável é referenciada no programa, o valor armazenado nela é utilizado
25
Introdução Linguagem C
Nomes de Variáveis
• Quantos caracteres quiser (32);• Comece com letras ou sublinhado:
Seguidos de letras, números ou sublinhados
• C é sensível ao caso:peso <> Peso <> pEso
• Não podemos definir um identificador com o mesmo nome que uma palavra chave
auto static extern int long if while do ......
26
Introdução Linguagem C
• Instrução para reservar uma quantidade de memória para um certo tipo de dado, indicando o nome pelo qual a área será referenciada
<tipo> <nome-da-variável>; ou<tipo> <nome1>, <nome2>,...,<nomen>;EX: char nome; int idade, num;
Declaração e Inicialização de Variáveis
27
Introdução Linguagem C
Atribuição
• Um comando de atribuição modifica o valor armazenado na variável
• O operador de atribuição é o sinal de “=“
int total;
total = 55;
total = 65;
• Só se pode atribuir a uma variável valores compatíveis com o tipo declarado da variável
28
EXPRESSÕES EM C
Variável total armazena valor 55
Valor 65 sobrescreve o valor armazenado antes
Qual é o valor da variável total?
Introdução Linguagem C
Inicialização de Variáveis
• variável pode ser inicializada com o comando de atribuição na hora de sua declaração
• Declara variável total do tipo int
int total = 55;
Em C, variáveis não são inicializadas automaticamente
29
EXPRESSÕES EM C
Inicializa total com valor 55
Introdução Linguagem C
Programa Exemplo – Tipos de Dados e Variáveis
30
Introdução Linguagem C
Desafio
• O que o programa a baixo faz?
31
EXPRESSÕES EM C
Introdução Linguagem C
Prática
• Crie um programa que troque os valores atribuidos a duas variáveis
32
EXPRESSÕES EM C
ALGORITMOS I
EXPRESSÕES EM C
COMANDOS BASICOS DE ENTREDA E SAÍDA
Prof. Me. Jeime Nunes
Introdução Linguagem C
Instruções de E/S
Entrada de
Dados
Processamento de dados
Saída de Dados
Comandos básicos
34
Introdução Linguagem C
• Leitura de dados tipados via teclado
• Scanf (“string de controle”, lista de argumentos);
Exemplo: scanf(“%d”,&idade);
OBS: Para seqüência de caracteres (%s), o caracter & não precisa ser usado.
Instruções de E/S – Scanf ( )
35
Introdução Linguagem C
• Escreva um programa que declare e imprima um conjunto de variáveis para atribuir os respectivos valores:o 10o 3.6o ‘A’
• Escreva um programa que imprima os dados de uma casa que esta a venda.o Rua: Nova Iguaçu o Bairro: Limeirao N: 34o Valor: R$ 100.000,00
Prática
36
Introdução Linguagem C
• Apresentação de dados no monitor• printf(“string de controle”, lista de
argumentos);
Exemplo:printf (“Digite a sua idade:\n”);scanf (“%d”, &idade);printf(“Sua idade é: %d”, idade);
Comandos de E/S – printf ( )
37
Introdução Linguagem C
%c ® caracter
%d ® inteiro
%e ® número ou notação científica
%f ® ponto flutuante
%o ® octal
%x ® hexadecimal
%s ® string (cadeia de caracteres)
%lf ® double
String de controle
38
Introdução Linguagem C
Digitando m: m = 109 em decimal, 155 em octal, 6d em
hexadecimal
Exemplo strings de controle
39
Introdução Linguagem C
• Um endereço de memória é o nome que o computador usa para identificar uma variável
• Toda variável ocupa uma área de memória e seu endereço é o primeiro byte por ela ocupado
Ex :
inteiro ® 2 bytesfloat ® 4 byteschar ® 1 byte
Operador de Endereço &
40
Introdução Linguagem C
• Quando usamos “&” precedendo uma variável estamos falando do endereço desta variável na memória
Ex:
Operador de Endereço &
41
Saída: valor = 2, endereço = 1230
Varia conforme memória da máquina
Introdução Linguagem C
\n nova linha \r enter\t tabulação (tab)\b retrocesso\” aspas\\ barra
Caracteres Especiais
42
Introdução Linguagem C
• É possível estabelecer o tamanho mínimo para a impressão de um campo
Formatando as saídas - printf
43
Saída: os alunos são 350 os alunos são 350 os alunos são 350
Introdução Linguagem C
Formatando as saídas - printf
44
• Adiciona espaço antes da string
Saída: 3456.8 3456.780
Introdução Linguagem C
• Faça um programa para ler e escrever na tela o seu nome e a sua idade.
Programando – Exercício 1
45
Digite o seu nome:jeimeDigite a sua idade:33A idade do(a) jeime é 33
ALGORITMOS I
Strings (Vetor de caracteres)
Prof. Me. Jeime Nunes
Introdução Linguagem C
Problema
• Nosso cliente precisa de um programa feito em C para que ele possa inserir um conjunto de palavras e exibir-las na tela
47
EXPRESSÕES EM C
Introdução Linguagem C
Caracteres
• Em C, o tipo char:• É usado para representar caracteres• Pode armazenar valores inteiros(em1 byte),
representando assim, 256 valores distintos• Uma constante char é escrita entre aspas
simples
48
EXPRESSÕES EM C
Introdução Linguagem C
Caracteres
• São representados internamente na memória do computador por códigos numéricos– A correspondência entre os caracteres e os seus códigos
numéricos é feita por uma tabela ASCII– Na tabela ASCII:
• Os dígitos são codificados em seqüência• as letras minúsculas e maiúsculas também formam dois grupos
sequenciais
49
EXPRESSÕES EM C
Introdução Linguagem C
Tabela ASCII
50
EXPRESSÕES EM C
Introdução Linguagem C
Impressão de Caracteres
• Podem ser impressos de duas formas diferentes usando o printf:
• Existe a função putchar da biblioteca stdio.h que permite a impressão de um caractere
51
EXPRESSÕES EM C
Introdução Linguagem C
Leitura de Caracteres
• Leitura de caracteres com a função scanf
• Existe a função getchar da biblioteca stdio.h que permite a leitura de um caractere
52
EXPRESSÕES EM C
Introdução Linguagem C
Leitura de Caracteres
• Função scanf e getchar obriga que a tecla <enter> seja pressionada após a entrada dos dados
• Existem funções para ler dados sem esperar pelo <enter> em C para ambientes Windows:– Função getche – definida em conio.h
• Lê um caractere e o exibe na tela
– Função getch – definida em conio.h• Lê um caractere e não o exibe na tela (invisível)
53
EXPRESSÕES EM C
Introdução Linguagem C
Vetor de Caracteres (String)
• É representada por um vetor do tipo char e terminada obrigatoriamente, pelo caractere nulo‘\0 ’
• O especificador de formato%s da função printf permite imprimir uma cadeia de caracteres
• A partir do endereço para o primeiro caractere, as funções processam caractere a caractere até que‘\0’seja encontrado
54
EXPRESSÕES EM C
Introdução Linguagem C
Inicialização de Strings
• Inicialização do vetor de caracteres na declaração
• Inicialização do vetor na declaração através da escrita dos caracteres entre aspas duplas
55
EXPRESSÕES EM C
Introdução Linguagem C
Inicialização de Strings
56
EXPRESSÕES EM C
Introdução Linguagem C
Leitura de Strings
• Especificador %s na função scanf captura somente uma seqüência de caracteres não brancos
• Limitação: somente nomes simples podem ser lidos
• Um caracter branco pode ser um:– espaço( ‘’)– Caractere de tabulação( ‘\t ’)– Caractere de nova linha( ‘\n ’)
57
EXPRESSÕES EM C
Introdução Linguagem C
Permitindo Ler Mais de um Nome com o scanf
• A função acima lê uma seqüência de caracteres até que seja digitado um <enter>
• A inclusão do espaço antes de % descartam espaços em brancos que precedem o nome
58
EXPRESSÕES EM C
Introdução Linguagem C
Permitindo Ler Mais de um Nome com o scanf
• Para limitar o número máximo de caracteres capturados:
59
EXPRESSÕES EM C
ALGORITMOS II
APRENDER A APRENDER
deve ser nossa meta.
EXPRESSÕES EM C
OPERADORES
Prof. Me. Leandro Oliveira de Souza
Introdução Linguagem C
OPERADOR
AÇÃO
+ Adição* Multiplicação/ Divisão% Resto da divisão
inteira- Subtração (unário)-- Decremento
++ Incremento
Operadores Aritméticos
61
Introdução Linguagem C
Operador Ação> Maior que
>= Maior ou igual que
< Menor que
<= Menor ou igual que
== Igual a
!= Diferente de
&& Condição “E”
|| Condição “OU”
! Não
Operadores Relacionais e Lógicos
62
Introdução Linguagem C
• Em C o resultado da comparação será ZERO se resultar em FALSO e DIFERENTE DE ZERO no caso de obtermos VERDADEIRO num teste qualquer.
Operadores - Observação
63
Introdução Linguagem C
Operadores - Exemplo
64
Saída: Verd.=1 Falso = 0
Introdução Linguagem C
• Observemos antes de mais nada que ++x é diferente de x++!
Se x = 10; y = ++x;
/* x=x+1; y=x; */então x = 11 e y = 11
Porém Se x = 10; y = x++; /* y=x; x=x+1 */então x = 11 e y = 10
Comparações e Testes
65
Introdução Linguagem C
Programa Exemplo – Pre/Pos Incremento
66
Quais são as saídas deste programa ?
Introdução Linguagem C
int x = 1;int y = 2;printf(“%d == %d e’ %d\n”, x, y, x==y );
Qual seria a saída deste comando?
resultaria em 1 == 2 0
(pois a expressão é falsa)
Comparações e Testes
67
Introdução Linguagem C
if (10 > 4 && !(10 < 9) || 3 <= 4)
Como seria avaliado esta instrução?
resultaria em Verdadeiro, pois dez é maior que quatro E dez não é menor que nove OU três é menor ou igual a quatro
Comparações e Testes
68
Introdução Linguagem C
• Este operador retorna o tamanho da variável ou tipo que está em seu operando.
• Por exemplo “sizeof(char)” resultaria em 1.
Operador Sizeof
69
Introdução Linguagem C
• Quando forem misturadas variáveis de diferentes tipos, o compilador C converterá os operandos para o tipo de operando maior, de acordo com as regras descritas a seguir:
• 1-Todo char e short int é convertido para int. Todo float é convertido para double.
• 2-Para os demais pares de operandos valem as seguintes regras em seqüência:– 2.1- Se um operando for long double, o outro também o
será.– 2.2- Se um operando for double, o outro também o será.– 2.3- Se um operando for long, o outro também o será.– 2.4- Se um operando for unsigned, o outro também o será.
Conversões de Tipos
70
Introdução Linguagem C
• Nota: Devemos observar que o compilador C é bastante flexível e pouco vigilante, comportando-se de maneira muito diferente de um compilador Clipper ou Pascal, sempre vigilantes com relação aos tipos das variáveis. De fato aqueles compiladores podem gerar executáveis misturando tipos, porém a ocorrência de erros de execução é quase inevitável. Ao contrário destes compiladores, os compiladores C “ajeitam” as coisas para o programa funcionar da “melhor maneira possível”, o que não significa em hipótese alguma que os resultados serão os esperados por programadores “relapsos”. Assim esta boa característica dos compiladores C, pode transformar-se numa autêntica “bomba relógio” para programas não muito bem elaborados.
Conversões de Tipos - NOTA
71
Dúvidas ou sugestões
72Introdução Linguagem C
Dúvidas ou sugestões
73Introdução Linguagem C