39
Prof. Ana Emilia de Melo Queiroz 1 Linguagem C

Linguagem C

  • Upload
    sally

  • View
    70

  • Download
    0

Embed Size (px)

DESCRIPTION

Linguagem C. 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 - PowerPoint PPT Presentation

Citation preview

Page 1: Linguagem C

Prof. Ana Emilia de Melo Queiroz 1

Linguagem C

Page 2: Linguagem C

Prof. Ana Emilia de Melo Queiroz 2

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.

Page 3: Linguagem C

Prof. Ana Emilia de Melo Queiroz 3

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

Sumário

Page 4: Linguagem C

Prof. Ana Emilia de Melo Queiroz 4

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.

Page 5: Linguagem C

Prof. Ana Emilia de Melo Queiroz 5

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

Page 6: Linguagem C

Prof. Ana Emilia de Melo Queiroz 6

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.

Page 7: Linguagem C

Prof. Ana Emilia de Melo Queiroz 7

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.

Page 8: Linguagem C

Prof. Ana Emilia de Melo Queiroz 8

• 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 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

Long ou Long int (4 bytes)Unsigned Char (0 a 255)Unsigned int (0 a 65.535) obs: int tem sempre o tamanho da palavra da máquina

Page 9: Linguagem C

Prof. Ana Emilia de Melo Queiroz 9

Comandos básicos

Instruções de E/S

Entrada de

DadosProcessamento

de dados

Saída de

Dados

Page 10: Linguagem C

Prof. Ana Emilia de Melo Queiroz 10

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);}

Page 11: Linguagem C

Prof. Ana Emilia de Melo Queiroz 11

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,...,nomenEX: char nome; int idade, num;

Page 12: Linguagem C

Prof. Ana Emilia de Melo Queiroz 12

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

Page 13: Linguagem C

Prof. Ana Emilia de Melo Queiroz 13

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()

Page 14: Linguagem C

Prof. Ana Emilia de Melo Queiroz 14

Estrutura Básica da Linguagem

• main(){}

• main () {}• main ()

{ }

• mainmain(()){{}}

• mainmain() {}() {}

Page 15: Linguagem C

Prof. Ana Emilia de Melo Queiroz 15

Primeiro Programa

• Main(){

printf (“Meu primeiro programa”);}

• Main(){printf (“Meu primeiro programa”);}

Page 16: Linguagem C

Prof. Ana Emilia de Melo Queiroz 16

A função printfprintf (“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

Page 17: Linguagem C

Prof. Ana Emilia de Melo Queiroz 17

Códigos Especiais

• \n Nova linha• \r Retorno do cursor• \t Tab• \b Retrocesso (backspace)• \” Aspas• \\ Barra• \f Salta página de formulário• \0 Nulo (zero)

Page 18: Linguagem C

Prof. Ana Emilia de Melo Queiroz 18

Códigos Printf• %c Caracter Simples• %d Decimal• %e Notação Científica• %f Ponto Flutuante• %g %e ou %f, o mais curto• %o Octal• %s Cadeia de caracteres• %u Decimal sem sinal• %x Hexadecimal• %ld Decimal Longo• %lf Ponto Flutuante Longo (Double)

Page 19: Linguagem C

Prof. Ana Emilia de Melo Queiroz 19

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.

Page 20: Linguagem C

Prof. Ana Emilia de Melo Queiroz 20

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áA saída será3456.783456.783456.783456.783456.73456.7

3456.7803456.780

Page 21: Linguagem C

Prof. Ana Emilia de Melo Queiroz 21

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áA saída será00210021000021000021 00210021

2121

Page 22: Linguagem C

Prof. Ana Emilia de Melo Queiroz 22

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

Page 23: Linguagem C

Prof. Ana Emilia de Melo Queiroz 23

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

Page 24: Linguagem C

Prof. Ana Emilia de Melo Queiroz 24

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();}

Page 25: Linguagem C

Prof. Ana Emilia de Melo Queiroz 25

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

Page 26: Linguagem C

Prof. Ana Emilia de Melo Queiroz 26

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();}

Page 27: Linguagem C

Prof. Ana Emilia de Melo Queiroz 27

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.

Page 28: Linguagem C

Prof. Ana Emilia de Melo Queiroz 28

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"); } } }}

Page 29: Linguagem C

Prof. Ana Emilia de Melo Queiroz 29

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;

defaultprintf(“Escolha incorreta”);

}…

Page 30: Linguagem C

Prof. Ana Emilia de Melo Queiroz 30

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)

Page 31: Linguagem C

Prof. Ana Emilia de Melo Queiroz 31

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.

Page 32: Linguagem C

Prof. Ana Emilia de Melo Queiroz 32

Laço While

…while (conta < 10) {

total+=conta;}Printf(“Total = %d”, total);…

Page 33: Linguagem C

Prof. Ana Emilia de Melo Queiroz 33

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);}

Page 34: Linguagem C

Prof. Ana Emilia de Melo Queiroz 34

Laço do - while

……do {do {

total+=conta;total+=conta;} while (conta < 10) } while (conta < 10) Printf(“Total = %d”, Printf(“Total = %d”,

total);total);……

Page 35: Linguagem C

Prof. Ana Emilia de Melo Queiroz 35

Laço do - while

• Ler 850 Ler 850 números números fornecidos pelo fornecidos pelo usuário e usuário e calcular média.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);}

Page 36: Linguagem C

Prof. Ana Emilia de Melo Queiroz 36

Laço for

• SintaxeSintaxeFor (conta = 0; conta < 10; conta +For (conta = 0; conta < 10; conta +

+)+) Inicio Teste Inicio Teste IncrementoIncremento

• Flexibilidades

Page 37: Linguagem C

Prof. Ana Emilia de Melo Queiroz 37

Laço for• Ler 850 Ler 850

números números fornecidos pelo fornecidos pelo usuário e usuário e calcular média.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);}

Page 38: Linguagem C

Prof. Ana Emilia de Melo Queiroz 38

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 inteirosFor (ch=a; ch <= z; ch++)

Page 39: Linguagem C

Prof. Ana Emilia de Melo Queiroz 39

Laço for - Flexibilidades• Podemos usar chamadas a funções em qualquer uma

das expressões do laçoFor (ch=getch(); ch != `X`; ch=getch()))

• Qualquer parte do laço for pode ser omitida mas os ; devem permanecerFor ( ; (ch = getch()) != `X`; )

For ( ; (ch = getch()) != `X`; printf(“%c”,c+1))

For ( ; ; ) = Laço infinito