Transcript aula

Linguagem C
Prof. Ana Emilia de Melo Queiroz
1
Sumário
•
As origens do C.
–
–
–
–
–
–
–
–
–
•
C é uma linguagem de Médio Nível
C é uma linguagem Estruturada
C é uma linguagem para Programadores
Compiladores X Interpretadores
A Forma de um programa em C
A Biblioteca e a Linkedição
Compilação Separada
Compilando um programa C
O Mapa de Memória C
Expressões em C.
–
–
–
–
O cinco tipos básicos de C
Variáveis Locais de declaração, variáveis locais, Parâmetros formais, variáveis globais.
Inicialização de variáveis.
Cosntantes, Hexadecimais, Octais, String, Caracteres e Barra invertida.
Prof. Ana Emilia de Melo Queiroz
2
Sumário
•
•
•
Operadores, atribuição, conversão de tipos em atribuições, atribuições múltiplas,
operadores aritméticos, Incremento e Decremento, Operadores relacionais e lógicos.
Matrizes Unidimensionais – Vetores
Matrizes Bidimensionais e multidimensionais– Matriz
– Matriz e String.
– Inicialização de Matrizes.
Prof. Ana Emilia de Melo Queiroz
3
Origens do C
•
•
•
•
C nasceu de BCPL, que influenciou uma linguagem chamada B.
Na década de 70, B levou ao desenvolvimento do C.
C foi padronizado pela ANSI(American National Standards Instituite) em 1983.
O livro C completo total adota o padrão ANSI e exemplifica outras implementações.
Prof. Ana Emilia de Melo Queiroz
4
Nível da Linguagem C
•
•
•
•
•
•
C é uma linguagem de médio nível, pois
combina elementos das linguagens de
alto nível com elementos de linguagem
com assembler.
Permite manipulação de Bits.
Suportam o conceito de tipos de
dados.(Inteiros, Caracter, Real).
Linguagem estruturada(apesar da
restrição de não ser formalmente)
C é uma linguagem para programadores
profissionais.
Inicialmente utilizada para fazer
programas de sistemas.
– Sistemas Operacionais
– Interpretadores
– Editores
– Programas de planilhas eletrônicas
– Compiladores
– Gerenciador de Banco de Dados
Nível mais alto
Ada
Modula-2
Pascal
Cobol
Fortran
Basic
Médio Nível
C++
C
Forth
Nível mais baixo
Macro Assember
Assembler
Prof. Ana Emilia de Melo Queiroz
5
Compiladores X Interpretadores
A Biblioteca e a LinkEdição
•
•
•
•
•
•
•
Referem-se ao modo como um programa é executado.
Um interpretador lê o código-fonte do seu programa uma linha por vez
executando a instrução específica contida nessa linha.
Um compilador lê o programa inteiro e converte-o para código-objeto. O
código Objeto é uma tradução do código fonte do programa em uma forma
que o computador possa executar diretamente.
O código objeto também conhecido como código de máquina
Todo Compilador C vem com a biblioteca C padrão.
Muitas das funções que se precisa implementar já estão na biblioteca C
padrão. Elas agem com blocos básicos que o programador pode combinar.
Se o programador escrever uma função que irá utilizar muitas vezes, ela
pode ser colocada em uma biblioteca.
Prof. Ana Emilia de Melo Queiroz
6
Compilação Separada e Mapa de Memória
•
•
•
•
Muitos programas C podem estar contidos num mesmo arquivo.
Caso o tamanho cresça muito ele deve ser dividido em vários arquivos, os
quais podem se compilados separadamente.
Quando todos os arquivos estiverem todos compilados eles serão
linkeditados para formar o código-objeto completo.
O gerenciamento da memória é feita da seguinte forma:
–
–
–
–
Quatro regiões de memória, que possuem funções específicas
A primeira contém o código-fonte
A segunda contém as variáveis globais
A terceira contém a pilha
• Possui os endereços de retorno
• Argumentos para funções e variáveis locais
– A quarta contém o Heap – Estrutura de dados.
• Área de alocação dinâmica de C, que podem ser utilizadas em listas encadeadas e
árvores.
Prof. Ana Emilia de Melo Queiroz
7
•
•
As expressões são formadas pelos elementos básicos de C. Dados e
operadores, os dados podem ser representados por variáveis ou
constantes.
Os principais tipos de C são:
tipo
char
int
float
double
Long ou Long int
Unsigned Char
Unsigned
int
bytes
1
2
4
8
escala
-128 a 127
-32.768 a 32.767
3.4e-38 a 3.4e+38
1.7e-308 a 1.7e+308
(4 bytes)
(0 a 255)
(0 a 65.535)
obs: int tem sempre o tamanho da palavra da máquina
Prof. Ana Emilia de Melo Queiroz
8
Comandos básicos
Entrada
de Dados
Processamento
de dados
Saída
de
Dados
Instruções de E/S
Prof. Ana Emilia de Melo Queiroz
9
Variável
•
•
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
Main ( )
{
int idade;
idade = 30;
printf (“ A idade é : %d”, idade);
}
Prof. Ana Emilia de Melo Queiroz
10
Nomes e declaração 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 ......
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;
Prof. Ana Emilia de Melo Queiroz
11
Constantes, Hexadecimais, Octais, String, Caracteres e Barra
invertida.
•
Referem-se a valores fixos que o programa não pode alterar.
–
–
–
–
–
Podem ser de qualquer tipo de dados básicos
Sua representação depende do seu tipo.
Constantes de caractere são envolvidas por aspas simples. Ex:’a’
Constantes inteiras são preenchidas com números fracionários. Ex: 10 e -100
Constantes em ponto flutuante requerem o ponto decimal seguido pela parte
fracionária do número. Ex: 11.123
– C também que seja utilizada uma notação científica para representar números
em ponto flutuante.
– Existem dois tipos de números em ponto flutuante:
• float
• double.
– Constantes Hexadecimais e Octais
• Hexadecimal – sistema numérico de base 16 dígitos de 0 a 9 + os caracteres A a F, que
representam os números 10, 11, 12, 13, 14 e 15.
• Octal – sistema numérico de base 8 – dígitos de 0 a 7
Prof. Ana Emilia de Melo Queiroz
12
Linguagem Programação C
•
•
•
•
•
Estrutura Básica de um Programa em C
Meu primeiro programa
A função printf
Códigos Especiais
Códigos printf()
Prof. Ana Emilia de Melo Queiroz
13
Estrutura Básica da Linguagem
• main()
{
}
• main () {}
• main ()
{
}
• main
•
(
)
{
}
main
() {}
Prof. Ana Emilia de Melo Queiroz
14
Primeiro Programa
• Main()
{
printf (“Meu primeiro programa”);
}
• Main(){printf (“Meu primeiro programa”);}
Prof. Ana Emilia de Melo Queiroz
15
A função printf
printf (“Meu primeiro programa”,<argumentos>);
printf (“Este é o número: %d”,2);
– Este é o número: 2
printf (“%s esta a %d milhões de milhas\ndo sol.”,”Venus”,67);
– Venus esta a 67 milhões de milhas
do sol.
printf (“A letra %c ”,’j’);
printf (“Pronuncia-se %s”,”jota”);
– A letra j procuncia-se jota
Prof. Ana Emilia de Melo Queiroz
16
Códigos Especiais
•
•
•
•
•
•
•
•
\n
\r
\t
\b
\”
\\
\f
\0
Nova linha
Retorno do cursor
Tab
Retrocesso (backspace)
Aspas
Barra
Salta página de formulário
Nulo (zero)
Prof. Ana Emilia de Melo Queiroz
17
Códigos Printf
•
•
•
•
•
•
•
•
•
•
•
%c
%d
%e
%f
%g
%o
%s
%u
%x
%ld
%lf
Caracter Simples
Decimal
Notação Científica
Ponto Flutuante
%e ou %f, o mais curto
Octal
Cadeia de caracteres
Decimal sem sinal
Hexadecimal
Decimal Longo
Ponto Flutuante Longo (Double)
Prof. Ana Emilia de Melo Queiroz
18
Printf – Tamanho na Impressão
main()
{
printf(“Os alunos são %2d.\n”,350);
printf(“Os alunos são %4d.\n”,350);
printf(“Os alunos são %5d.\n”,350);
}
A saída será
Os alunos são 350.
Os alunos são 350.
Os alunos são 350.
Prof. Ana Emilia de Melo Queiroz
19
Printf – Tamanho na Impressão
main()
{
printf(“%4.2f\n”,3456.78);
printf(“%3.2f\n”,3456.78);
printf(“%3.1f\n”,3456.78);
printf(“%10.3f\n”,3456.78);
}
A saída será
3456.78
3456.78
3456.7
3456.780
Prof. Ana Emilia de Melo Queiroz
20
Printf – Complementando com 0
main()
{
printf(“\n%04d”,21);
printf(“\n%06d”,21);
printf(“\n%6.4d”,21);
printf(“\n%6.0d”,21);
A saída será
}
Prof. Ana Emilia de Melo Queiroz
0021
000021
0021
21
21
Printf – Imprimindo Caracters
• printf(“%d %c %x %o \n”, ‘A’, ‘A’, ‘A’, ‘A’ );
Saída = 65 A 41 101
• printf(“%c %c %c %c \n”, ‘A’, 65, 0x41, 0101 );
Saída = A A A A
Prof. Ana Emilia de Melo Queiroz
22
Estruturas de Controle
• Estruturas de seleção ou decisão
– Estrutura de Seleção Simples
– Estrutura de Seleção Composta
– Estrutura de Seleção Encadeada
– Estrutura de seleção de Múltipla Escolha
Prof. Ana Emilia de Melo Queiroz
23
Enunciado – Seleção Simples
• Verifique se um
número fornecido
pelo usuário é
ímpar. Se for
exiba a
mensagem: “O
número é ímpar”.
#include <conio.c>
main()
{
int mnum;
printf("Informe um número");
scanf("%d", &mnum);
if (mnum % 2 == 1)
printf("O número %d é
ímpar.",mnum);
getch();
}
Prof. Ana Emilia de Melo Queiroz
24
Enunciado – Seleção Composta
• A empresa X Ltda. Concedeu bônus de 20% do valor do
salário a todos funcionários com tempo de trabalho na
empresa igual ou superior a cinco anos e de 10% aos
demais. Calcular e exibir o valor do bônus.
• Percebem a condição e o bloco de instrução respectivo?
• Programa
Prof. Ana Emilia de Melo Queiroz
25
Sel. Composta - Programa
#include <conio.c>
main()
{
int mtem;
float msal, mbonus;
printf("Informe o tempo de serviço\n");
scanf("%d", &mtem);
printf("Informe o salário\n");
scanf("%f", &msal);
if (mtem >= 5)
mbonus = msal * 0.2;
else
mbonus = msal * 0.1;
printf("O bônus é de: %10.2f",mbonus);
getch();
}
Prof. Ana Emilia de Melo Queiroz
26
Enunciado – Seleção Encadeada
• Faça algoritmo que receba 03 valores que representarão
os lados de um triângulo. Verifique se os valores formam
um triângulo e classifique esse triângulo como:
– Eqüilátero
- três lados iguais
– Isóscele
- dois lados iguais
– Escaleno
- três lados diferentes
– Lembre-se que para formar um triângulo nenhum dos
lados pode ser igual a zero e um lado não pode ser
maior que a soma dos outros dois.
Prof. Ana Emilia de Melo Queiroz
27
main() {
int mladoa, mladob, mladoc;
printf("Informe os lados de um triângulo\n");
scanf("%d %d %d", &mladoa, &mladob, &mladoc);
if (mladoa == 0 || mladob == 0 || mladoc == 0)
printf("A figura não é um triângulo\n");
else {
if (mladoa > mladob+mladoc ||
mladob > mladoa+mladoc || mladoc >mladoa+mladob)
printf("A figura não é um triângulo\n");
else {
if (mladoa == mladob && mladob == mladoc)
printf("A figura é um triângulo equilátero\n");
else {
if (mladoa == mladob || mladoa == mladoc || mladob == mladoc)
printf("A figura é um triângulo isóceles\n");
else
printf("A figura é um triângulo escaleno\n");
}
}
Prof. Ana Emilia de Melo Queiroz
}
}
28
Seleção Múltipla Escolha
…
opcao = getche();
switch(opcao)
{
case ‘A’ :
printf(“Você seleconou opção A”); break;
case ‘E’ :
printf(“Você seleconou opção E”); break;
case ‘X’ :
printf(“Você seleconou opção X”); break;
case ‘I’ :
printf(“Você seleconou opção I”); break;
default
printf(“Escolha incorreta”);
}
Prof. Ana Emilia de Melo Queiroz
…
29
Algumas funções em C
• scanf(“%d %c”, &a, &b);
Lê um tipo de variável (d,c) e armazena em um endereço de memória (variável a, b)
• Car = getch()
Lê um caracter do teclado (Enter desnecessário). Não echoa na tela.
• Car = getche()
Lê um caracter do teclado (Enter desnecessário). Eechoa na tela.
• Car = getchar()
Lê próximo caracter de entrada. Termina com Enter. (stdio.h)
• putchar(car)
Imprime um caracter de entrada. Termina com Enter. (stdio.h)
Prof. Ana Emilia de Melo Queiroz
30
Estruturas de Repetição
• Laço while
• Laço do – while
• Laço for
– Repetição (laço) deve ser finito
– Quando se usa teste, em algum momento os
comandos modificam a condição de teste
para torná-la falsa.
Prof. Ana Emilia de Melo Queiroz
31
Laço While
…
while (conta < 10)
{
total+=conta;
}
Printf(“Total = %d”, total);
…
Prof. Ana Emilia de Melo Queiroz
32
Laço while
• Ler 850 números
fornecidos pelo
usuário e calcular
média.
main()
{
float soma, num, media;
int cont ;
soma = 0;
cont = 0;
while (cont < 850)
{
scanf(“%d”, &num);
soma += num;
cont += 1;
}
media = media / cont;
printf(“A média é: %d“,media);
}
Prof. Ana Emilia de Melo Queiroz
33
Laço do - while
…
do {
total+=conta;
} while (conta < 10)
Printf(“Total = %d”, total);
…
Prof. Ana Emilia de Melo Queiroz
34
Laço do - while
• Ler 850 números
fornecidos pelo
usuário e calcular
média.
main()
{
float soma, num, media;
int cont ;
soma = 0;
cont = 0;
do {
scanf(“%d”, &num);
soma += num;
cont += 1;
} while (cont >= 850)
media = media / cont;
printf(“A média é: %d“,media);
}
Prof. Ana Emilia de Melo Queiroz
35
Laço for
• Sintaxe
For (conta = 0; conta < 10; conta ++)
Inicio
Teste
Incremento
• Flexibilidades
Prof. Ana Emilia de Melo Queiroz
36
Laço for
• Ler 850 números
fornecidos pelo
usuário e calcular
média.
main()
{
float soma, num, media;
int cont ;
soma = 0;
for (cont = 0; cont < 850, cont++)
{
scanf(“%d”, &num);
soma += num;
}
media = media / cont;
printf(“A média é: %d“,media);
}
Prof. Ana Emilia de Melo Queiroz
37
Laço for - flexibilidades
• Qualquer expressão do laço for pode ter
várias instruções separadas por vírgula;
For (x=0, y=0; x+y < 100; x++, y=y+1)
• Podemos usar caracteres em vez de
inteiros
For (ch=a; ch <= z; ch++)
Prof. Ana Emilia de Melo Queiroz
38
Laço for - Flexibilidades
• Podemos usar chamadas a funções em qualquer uma
das expressões do laço
For (ch=getch(); ch != `X`; ch=getch()))
• Qualquer parte do laço for pode ser omitida mas os ;
devem permanecer
For ( ; (ch = getch()) != `X`; )
For ( ; (ch = getch()) != `X`; printf(“%c”,c+1))
For ( ; ; ) = Laço infinito
Prof. Ana Emilia de Melo Queiroz
39