• Nenhum resultado encontrado

Estrutura de um programa em C.

N/A
N/A
Protected

Academic year: 2022

Share "Estrutura de um programa em C."

Copied!
33
0
0

Texto

(1)

Prof. Santiago Valdés Ravelo santiago.ravelo@inf.ufrgs.br

Estrutura de um

programa em C .

INF01202

Algoritmos e programação.

(2)

1 Criação de programas

2 Elementos da linguagem C

(3)

Criação de programas

Solução de um problema

Problema Análise

Algoritmo Programa

(4)

Criação de programas

Problemas

I Calcular a quantidade de azulejos (quadrados) necessários para cobrir uma parede retangular.

I Determinar o último dígito de um número inteiro.

(5)

Criação de programas

Definição dos problemas

I Calcular a quantidade de azulejos (quadrados) necessários para cobrir uma parede retangular.

Entrada três números positivos: a largura dos azulejos, a largura e a altura da parede.

Saída um número inteiro positivo: o menor número de azulejos cuja soma das áreas é maior ou igual que a área da parede.

I Determinar o último dígito de um número inteiro.

Entrada um número inteiro.

Saída um número inteiro entre 0 e 9 igual ao último dígito do número da entrada.

(6)

Criação de programas

Algoritmo para um problema. Exemplo

Algoritmo AzulejosParede

/*Calcula a quantidade de azulejos quadrados necessária para cobrir uma parede retangular.

Entrada: largura dos azulejos, largura e altura da parede Saída: quantidade de azulejos*/

1. INÍCIO 2. LerlarguraAz 3. LerlarguraPar 4. LeralturaPar 5. areaAzlarguraAz2

6. areaParlarguraPar*alturaPar 7. divisaoareaPar/areaAz 8. quantidade← ddivisaoe 9. Imprimirquantidade 10. FIM

(7)

Criação de programas

Algoritmo para um problema. Exemplo

Algoritmo AzulejosParede

/*Calcula a quantidade de azulejos quadrados necessária para cobrir uma parede retangular.

Entrada: largura dos azulejos, largura e altura da parede Saída: quantidade de azulejos*/

1. INÍCIO 2. LerlarguraAz 3. LerlarguraPar 4. LeralturaPar

5. quantidade← d(larguraParalturaPar)/(larguraAz2)e 6. Imprimir quantidade

7. FIM

(8)

Criação de programas

Algoritmo para um problema. Exemplo

Algoritmo UltimoDigito

/*Imprime o último dígito de um número inteiro.

Entrada: número inteiro

Saída: último dígito do número*/

1. INÍCIO 2. Ler numero

3. digito ← numero(mod 10) 4. Imprimir digito

5. FIM

(9)

Criação de programas

Processo de codificação INÍCIO

codificação

compilação

Erro de compilação:

léxico/sintático/semântico

Sucesso compilando

Erro de execução: semântico

Sucesso testando

FIM Teste

(10)

Elementos da linguagemC

Elementos léxicos (átomos ou tokens)

I Identificadores: sequências de caracteres conformadas por:

I letrasmaiúsculaseminúsculas(sem acentos!!!),

I dígitos de0 a9,

I o símbolo_(sublinhado).

Observação: identificadores não podem começar com dígitos!!

I Números: sequências de dígitos de 0a9, podendo conter um . (ponto) e podendo começar com um- (menos).

I Textos: sequências de caracteres entre“ ” (aspas duplas, pode ser vazia) ou um único caractere entre’ ’ (aspas simples).

I Símbolos: {}[]()&|#;, .:><! = +− ∗/%.

(11)

Elementos da linguagemC

Palavras reservadas

Identificadores associados a elementos que compõem uma linguagem de programação.

C tem 32 palavras reservadas:

auto break case char const continue default do double else enum extern float forgoto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while

Evitar o uso degoto, pois fere o paradigma estruturado!!!!

(12)

Elementos da linguagemC

Comentários

I Permitem incluir observações para auxiliar na compreensão do código.

I EmC podem adotar duas formas:

// qualquer sequência de caracteres em uma linha após//é um comentário.

/*...*/ qualquer sequência de caracteres após/*e antes de*/é um comentário (podendo ter várias linhas).

I DESEJÁVEL: Incluir comentário na primeira linha de código para descrever o objetivo do programa!!!

(13)

Elementos da linguagemC

Tipos de dados

Determinam o conteúdo e tamanho da área na memória reservada para um dado.

Tipos de dados básicos emC Nome Tamanho Valores válidos Inteiro int 2 ou 4 bytes [−216,216)ou[−232,232) Inteiros maiores long 4 ou 8 bytes [−232,232)ou[−264,264) Decimal, precisão 6 casas float 4 bytes [1.2e−38,3.4e+38] Decimal, precisão 15 casas double 8 bytes [2.3e−308,1.7e+308]

Caractere char 1 byte Caracteres do código ASCII

double: pode variar de acordo com a arquitetura da máquina ou o sistema operacional.

Modificadores de tamanho e sinal:short,long,signed,unsigned. Usados na frente do tipo, ex:unsigned char,long long,short int.

(14)

Elementos da linguagemC

Sintaxe

REGRASde combinar os átomos para conformar frases ou sentenças da linguagem.

Construções sintáticas:

I Bibliotecas.

I Declarações.

I Expressões.

I Estruturas de controle.

(15)

Elementos da linguagemC

Bibliotecas

ContêmFUNÇÕES PRÉ-DEFINIDAS, utilizadas para executar AÇÕES ESPECÍFICAS.

Para incluir uma biblioteca emC se deve usar a diretiva#include Exemplos de bibliotecas disponíveis emC:

Biblioteca Descrição

#include<stdio.h> Funções de entrada e saída

#include<stdlib.h> Funções padrão

#include<math.h> Funções matemáticas

#include<system.h> Funções do sistema

#include<string.h> Funções de texto

(16)

Elementos da linguagemC

#include<stdio.h>

Duas funções importantes sãoscanfpara ler dados e printf para imprimir mensagens.

Formas de uso:

I scanf(“formatos”, &var1, &var2, · · ·);

I printf(“formatos”, exp1, exp2,· · ·);

Osformatos para as duas funções dependem do tipo de dado:

Tipo de dado Formato

int

%d ou %i

float

%f

double

%lf

char

%c

%d: para inteiros com base 10. %i: para inteiros, detectando a base 10 ou 16.

(17)

Elementos da linguagemC

Ler. Exemplos de uso

Para ler sempre há que colocar o valor em uma variável, usando o

&na frente dela!!!!!

1. scanf(“%i”,&x);/*lê um inteiro, detectando a base e coloca o valor na variável x*/

2. scanf(“%d %f”,&a, &b); /*lê um inteiro em base 10 e um real separados por espaço, coloca o inteiro na variávela e o real na b*/

(18)

Elementos da linguagemC

Imprimir. Exemplos de uso

Para imprimir pode ser o valor de uma variável, de uma expressão ou o resultado de chamar uma função!!

1. printf(“Ela nasceu em %d e morou em %d paises\n”, ano, p);

/*substitui no texto o primeiro %d pelo valor da variábel ano e o segundo pelo da variável p*/

2. printf(“A soma dos valores dos preços foi: %f”, x+y+z);

/*substitui o %f pelo resultado da soma dos valores associados às variáveis x, y e z*/

3. printf(“A soma dos valores dos preços foi: %.2f”, x+y+z);

/*semelhante ao anterior mas imprime o resultado com somente duas casas decimais!*/

Para formatar números reais a serem impressos com no mínimoxdígitos antes da vírgula e atéycasas decimais, se usa: %x.yf

(19)

Elementos da linguagemC

Imprimir. Alguns caracteres especiais

Caractere Explicação

\\ O próprio caractere \

\n Troca de linha

\t Tabulação

\’ O caractere ’

\“ O caractere “

(20)

Elementos da linguagemC

#include<math.h>

Função Uso Descrição

ceil ceil(x) Arredonda x para acima: ceil(3.2)=4

cos cos(x) Cosseno de x em radianos

fabs fabs(x) Valor absoluto de x: fabs(-2)=fabs(2)=2 floor floor(x) Arredonda x para baixo: floor(3.2)=3

exp exp(x) Constante e elevada a x: ex

log log(x) Logaritmo natural de x: lnx= logex log10 log10(x) Logaritmo em base 10 de x:log10x

pow pow(x,y) Potência de x elevado a y:xy

(21)

Elementos da linguagemC

#include<math.h>

Função Uso Descrição

round round(x) Arredonda x para o inteiro mais próximo

sin sin(x) Seno de x em radianos

sqrt sqrt(x) Raíz quadrada de x:

x

tan tan(x) Tangente de x em radianos

(22)

Elementos da linguagemC

Declaração de constantes

Sintaxe:

#define<IDENTIFICADOR> <VALOR>

I Ex: #define PI 3.1416

I Identificadores cujos valores nunca mudam.

I Geralmente declarados e usados após as linhas de inclusão de bibliotecas.

I Por padrão se escreve o identificador da contante sempre em maiúsculas.

I Entre o identificador e o valor só pode haver espaços.

I Durante a compilação estes identificadores são substituídos pelos valores.

(23)

Elementos da linguagemC

Declaração de variáveis

Sintaxe: (padrão, escrever identificadores de variáveis com minúsculas)

I . <tipo> <identificador>;

I charconceito;

I floatsalario;

I . <tipo> <identificador> =<expressão>;

I charconceito= ’A’;

I floatsalario= 5432.10+1234.5;

I . <tipo> <identificador_1>,· · · ,<identificador_n>;

I intdia,ano;

I charconceitoAP= ’A’,conceitoCalc = ’B’;

(24)

Elementos da linguagemC

Expressões aritméticas

Sintaxe: <operando> <operador> <operando>

Operando: valor de uma constante, variável, função ou expressão aritmética.

Operador Uso Descrição

+ x + y Soma os valores de x e y

- x - y Subtrai o valor de y do valor de x

* x * y Multiplica os valores de x e y

/ x / y Divide o valor de x pelo de y

% x % y Resto da divisão inteira do valor de x pelo de y Quando os valores de x e y são inteiros: x/y também é inteiro. Para usar o operador

% tanto x quanto y devem ser inteiros!!

O tipo da expressão é sempre o tipo mais geral entre os operandos!!!

(25)

Elementos da linguagemC

Precedência de operadores

Ordem Operadores

1o funções

2o * / %

3o + -

Para modificar a precedência se devem usar parêntesis:

v = a * 5 + b;// multiplica primeiro a vezes 5 e soma o resultado com b v = a * (5 + b);// soma primeiro 5 com b e multiplica o resultado com a

(26)

Elementos da linguagemC

Atribuição

Operador Uso Significado

= x = y Atribui a x o valor de y

+= x += y x = x + y

-= x -= y x = x - y

*= x *= y x = x * y

/= x /= y x = x / y

%= x %= y x = x % y

++ x ++ x += 1 ou x = x + 1

- - x - - x -= 1 ou x = x - 1

x precisa ser uma variável, y pode ser uma expressão!

(27)

Elementos da linguagemC

Expressões aritméticas. Funcionamento

float x = 2;//declara um real com precisão simples int y = 1, z = 2;//declara dois inteiros

double w;//declara um real com dupla precisão w=x * (y/2 +z /2);

int int int int

| {z } | {z }

0 1

int int

| {z }

1

float int

| {z }

2 float

| {z }

2 double

(28)

Elementos da linguagemC

Casting

Sintaxe:

(<TIPO>) <EXPRESSÃO>

Altera o tipo da expressão!!

Exemplo:

float x = 2;//declara um real com precisão simples int y = 1, z = 2;//declara dois inteiros

double w;//declara um real com dupla precisão w =x* ( (float)y/2 +z/ 2);

No exemplo o valor final de w é 3 ao invés de 2. Pois o valor y é levado parafloat antes da divisão!!

(29)

Elementos da linguagemC

Estrutura de um programa em C

/*Comentário inicial descrevendo objetivos do programa*/

#include<stdio.h>//para entrada e saída de dados //outras bibliotecas necessárias

//outras declarações

intmain (){//função principal (obrigatória)

//declarações antes das instruções //intruções

return 0;//para encerrar o programa normalmente }

(30)

Elementos da linguagemC

Exemplo

/*Calcular a quantidade de azulejos quadrados para cobrir uma parede retangular*/

#include<stdio.h>//biblioteca de entrada/saída

#include<math.h>//biblioteca de funções matemáticas intmain(){//função principal

floatlarguraAz, larguraPar, alturaPar;//declaração dos dados de entrada intquantidade;//declaração dos dados de saída

printf(“Informe a largura dos azulejos:\n”);//imprime mensagem scanf(“%f”,&larguraAz);//Lê largura dos azulejos

printf(“Informe a largura e a altura da parede:\n”);//imprime mensagem scanf(“%f %f”,&larguraPar,&alturaPar);//Lê largura e altura da parede quantidade= ceil( ( larguraPar*alturaPar )/ (larguraAz*larguraAz));

printf(“Precisa %d azulejos para cobrir a parede\n”, quantidade);

return 0;//encerra o programa }

(31)

Elementos da linguagemC

Exemplo

/*Imprimir o último dígito de um número inteiro*/

#include<stdio.h>//biblioteca de entrada/saída intmain(){//função principal

intnumero;//declaração dos dados de entrada intdigito;//declaração dos dados de saída

printf(“Informe o inteiro:\n”);//imprime mensagem scanf(“%d”,&numero);//Lê o número

digito = numero% 10;//obtém o último dígito

printf(“O ultimo digito de %d resulta: %d\n”, numero, digito);

return 0;//encerra o programa }

(32)

Elementos da linguagemC

Último dígito

O que acontece se o número inteiro for negativo?

Por exemplo, o resultado de −123 (mod 10) é 3?

(33)

Prof. Santiago Valdés Ravelo santiago.ravelo@inf.ufrgs.br

Estrutura de um

programa em C .

INF01202

Algoritmos e programação.

Referências

Documentos relacionados

Nessa situação temos claramente a relação de tecnovívio apresentado por Dubatti (2012) operando, visto que nessa experiência ambos os atores tra- çam um diálogo que não se dá

Local de realização da avaliação: Centro de Aperfeiçoamento dos Profissionais da Educação - EAPE , endereço : SGAS 907 - Brasília/DF. Estamos à disposição

Note on the occurrence of the crebeater seal, Lobodon carcinophagus (Hombron &amp; Jacquinot, 1842) (Mammalia: Pinnipedia), in Rio de Janeiro State, Brazil.. On May 12, 2003,

A clínica gestáltica tem o intuito de desenvolver um trabalho baseado na relação dialógica, que facilita o processo de autorregulação e ajustamento criativo para as pessoas.. Tais

O destaque é dado às palavras que abrem signi- ficados e assim são chaves para conceitos que fluem entre prática poética na obra de arte e sua reflexão em texto científico..

- Se o estagiário, ou alguém com contacto direto, tiver sintomas sugestivos de infeção respiratória (febre, tosse, expetoração e/ou falta de ar) NÃO DEVE frequentar

In this study, we describe the fish demersal assemblage along the continental shelf of the northeast Brazilian coast 5°-9°S, specifically the ecological descriptors and the