0% acharam este documento útil (0 voto)
14 visualizações11 páginas

Taco 3

O documento aborda a linguagem de programação C, detalhando tipos de dados, variáveis, operadores, estruturas de controle, funções, e macros. Ele também inclui exemplos de código e exercícios práticos para ilustrar conceitos como entrada e saída, manipulação de caracteres e operações aritméticas. Além disso, discute a importância de protótipos de função e diferenças entre funções e macros.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd
0% acharam este documento útil (0 voto)
14 visualizações11 páginas

Taco 3

O documento aborda a linguagem de programação C, detalhando tipos de dados, variáveis, operadores, estruturas de controle, funções, e macros. Ele também inclui exemplos de código e exercícios práticos para ilustrar conceitos como entrada e saída, manipulação de caracteres e operações aritméticas. Além disso, discute a importância de protótipos de função e diferenças entre funções e macros.
Direitos autorais
© © All Rights Reserved
Levamos muito a sério os direitos de conteúdo. Se você suspeita que este conteúdo é seu, reivindique-o aqui.
Formatos disponíveis
Baixe no formato PDF, TXT ou leia on-line no Scribd

Linguagem C

dados
char caracteres (-128 a 127) ‘a’, ‘b’, ‘\xDB’ 1 byte

int números inteiros 10, 3, 56, 0 32 bits

float números reais 32 bits

long aumentar tamanho


long int= 32 bits (plataforma de 16 bits)
long int = 64 bits (plataforma de 32 bits)

short diminui o tamanho


short int = 16 bits

unsigned suprime o sinal


char = -128 a 127
unsigned char = 0 a 255

double long float 1.80, 0.2 64 bits

variáveis
●​ declaração ( int idade;​ float peso;​ double peso;)
●​ valor (idade = 18;​ peso = 80;​ altura = 1.80;)

entrada e saída padrão


●​ printf() = print
○​ printf(“Bom dia”);
●​ scanf() = input
○​ & extrai o endereço da variável
○​ scanf(“%d %f %lf”, &idade, &peso, &altura);

caracteres especiais
\n avanço de linha

\t tabulação

\b retrocesso

\f avanço de página

\a alarme

especificações de formato

%c exibe caracter ASCII

%d exibe número inteiro


%s exibe uma string

%f exibe um float

%lf exibe um double

%u exibe um unsigned

%o exibe um número octal

%x exibe um número em hexadecimal em minúsculo

%X exibe um número em hexadecimal em maiúsculo

especificadores de tamanho de campo


%2d

%5.2f

%.3lf

operadores

aritméticos
+ adição a+=1 a++ ou ++a

- subtração a-=1 a - - ou - - a

* multiplicação a*=1

/ divisão a/=1

% resto da divisão
em uma expressão a++ != ++a
Incremento pós-fixo: a++;
Incremento pré-fixo: ++a;

relacionais

== igual

> maior

< menor

>= maior ou igual

<= menor ou igual

!= diferente
lógicos
&& and

|| or

! not

decisão
if (condição)
​ (ação para verdadeira)
else
​ (ação para falsa)

laços de repetição
●​ while (condição)
○​ (repetição com teste no início)
●​ for (inicialização; teste; incremento)
○​ (repetição com contador)
●​ do {---} while (condição)
○​ (repetição com teste no fim)

diretivas pré-processador
#define : define constantes simbólicas e macros
#define : realiza substituição de textos
#include : inclui arquivos de cabeçalho na compilação
ex:
#include <stdio.h> standard input output.header
#define soma(a,b) ((a)+(b))
#define prod(a,b) ((a)*(b))

int main()
{
int i = 2, j = 3;

printf("%d", 2*soma(i,j));
printf("%d", prod(i+j,j-i));
return 0;
}

função
●​ declaração: nome, tipo, lista de parâmetros
double fmax(int pi, double pd);
●​ definição: implementação
double fmax(int pi, double pd)
{
double ret;
ret = 43.67 * pd + 3 * pi;
return ret;
}
●​ chamada: uso dela em um programa
#include <stdio.h>
int main()
{
int codigo;
double medida, produto;

printf("\nEntre com o código e a medida:");


scanf("%d %lf", &codigo, &medida);

produto = fmax(codigo, medida);


printf("\nProduto: %lf", produto);
return 0;
}

variaveis
#include <stdio.h>
int glb = 10; /* variável global */
int main()
{
int i = 5, j = 6, res; /* variáveis locais*/
res = func1(i, j);
printf("%d %d %d %d", i, j, res, glb);
return 0;
}
int func1(int a, int b) /* parâmetros */
{
int c; /* variável local */
c = 3 * a + b;
a++;
b++;
glb++;
return c;
}

exercícios
O seguinte programa mostra todos os caracteres da tabela ASCII:
#include <stdio.h>
int main()
{
​ int c;
​ for(i=0; i<256; i++)
​printf("%3d %02X %c", i, i, i);
​ return 0;
}

1.

a) ( F ) MAIN é uma palavra chave da Linguagem C.

MAIN em maiúsculo não é palavra chave

b) ( F ) Podemos guardar em um long int valores até 2 vezes


maior que num int, não mais do que isso.

Podemos guardar em um long int muito mais que o dobro do que


se guarda num int.

c) ( F ) ’\t’ representa uma tabulação, ‘\2t’ representa duas


tabulações.

Não existe o caracter ‘\2t’.

d) ( V ) x+=2*t+y; é equivalente a x=x+2*t+y;

e) ( V ) O formato %c imprime caracteres ASCII.

f) ( F ) O formato %C imprime caracteres ASCII em maiúsculo.

Não existe o formato %C.

g) ( F ) O formato %b imprime números em binário.

Não existe o formato %b.

h) ( V ) O formato %x imprime números em hexadecimal.

i) ( V ) O formato %X imprime números em hexadecimal, dígitos


alfabéticos em maiúsculo.

j) ( F ) Seja a declaração: int i=0x0F0F; assim, a expressão


(!i==~i) é verdadeira.

A negação lógica não é igual ao complemento de um.


k) ( V ) A diretiva #define prod(a,b) a*b garante a
precedência do operador * sobre o operador +.

l) ( F ) A chamada de uma função sem o protótipo presente


causa erro de compilação em qualquer compilador.

Não causa erro de compilação nos compiladores antigos.

II - Qual a saída dos programas a seguir?

a) #include <stdio.h>

void main(void)

int al=25;

if(50>=al>=10)

printf(“\nEstá dentro do intervalo”);

A expressão 50 >= al >= 10 resulta falso, pois calcula


primeiro 50 >= al que é verdadeiro, resultando 1. Depois testa
1 >= 10, resultando falso. O certo é: al>=10 && al<=50.

b)#include <stdio.h>

#define soma(a,b) a+b

#define prod(a,b) a*b

void main(void)

int i=3, j=5;

printf(“%d”, 2*soma(i,j));

printf(“%d”, prod(i+j,j-i));

Não produz os valores esperados, pois as macros foram


definidas sem os parentheses.
O certo é:

#define soma(a,b) ((a)+(b))

#define prod(a,b) ((a)*(b))

c)#include <stdio.h>

void main(void)

double x = sqrt(2.0); /* raiz de 2 */printf(“%lf”, x);

O protótipo da função sqrt() não está presente. Falta por no


inicio do programa:

#include <math.h>

d)#include <stdio.h>

void main(void)

unsigned char ch;

for(ch=0; ch<256; ch++)

printf(“\n%3d\t%02X\t%c”, ch,ch,ch);

Se declararmos ch como unsigned char, vai variar de 0 a 255,


não podendo assumir o valor 256, para parar o laço de
repetição. O certo é declarar ch como int.

e) #include <stdio.h>

void main(void)

unsigned int mascara = 0x8000;

int valor;

printf("\nDigite um valor:");
scanf("%d", &valor);

while(mascara) {

printf("%d", (valor & mascara) ? 1 : 0);

mascara >>= 1;

Escreve valor em binário de 16 bits.

1) Lê caracteres do teclado enquanto não se digitar ESC(ASCII


27). Para cada caracter lido, classificá-lo como:

- Caracter de controle: 0 a 31 e 127

- Caracter alfabético maiúsculo: 65 a 90

- Caracter alfabético minúsculo: 97 a 122

- Caracter numérico: 48 a 57

- Caracter de pontuação: imprimível, não alfabético e não


numérico.

Obs.: Caracter imprimível: 32 a 126. Caracter alfabético:


maiúsculos + minúsculos

#include <stdio.h>

#include <conio.h>

#define controle(c) ((c)>=0 && (c)<=31 || (c)==127)

#define maiusculo(c) ((c)>=65 && (c)<=90)

#define minusculo(c) ((c)>=97 && (c)<=122)

#define numérico(c) ((c)>=48 && (c)<=57)

#define letra(c) (maiusculo(c) || minusculo(c))

#define imprimivel(c) ((c)>=32 && (c)<=126)


#define pontuacao(c) (imprimivel(c) && !letra(c) &&
!numerico(c))

int main()

int ch;

printf(“\nDigite um caracter”);

ch = getch();

while(ch != 27) {

if(controle(ch))

printf(“\nCaracter de controle”);

else if(maiusculo(ch))

printf(“\nCaracter alfabético maiúsculo”);

else if(minusculo(ch))

printf((“Caracter alfabetico minuscule”);

else if(numerico(ch))

printf(“\nCaracter numerico”);

else if(pontuacao(ch))

printf(“\nCaracter de pontuação”);

printf(“\nDigite um character”);

ch = getch();

return 0;

2) Lê do teclado 5 números inteiros, e fornece:

- A média aritmética

- O produto dos 3 primeiros.


- Quantidade de dígitos (casas) do primeiro valor, através de
sucessivas divisões por 10.

#include <stdio.h>

int main()

int i1, i2, i3, i4, i5, cont=0, media, produto;

int dig;

printf(“\nDigite 5 numeros”);

scanf(“%d %d %d %d %d”, &i1, &i2, &i3, &i4, &i5);

media = (i1+i2+i3+i4+i5)/5;

printf(“\nA media é: “, media);

produto = i1*i2*i3;

printf(“\nProduto dos 3 primeiros: %d”, produto);

while(i1 != 0){

dig = i1 % 10;

cont++;

i1 /= 10;

printf(“\nO numero %d tem %d digitos”, i1, cont);

return 0;

3) Lê 3 números double em 3 variáveis: a, b e c. Em seguida,


faz troca de valores entre as variáveis de modo que: a <= b &&
b <= c.

Este exercício vai ser desconsiderado.

IV – Escrever macros:

1) bissexto(ano);
Esta macro deverá retornar 1 se ano for um ano bissexto, i.e,
divisível por 4 e não por 100, ou divisível por 400; e 0 se
não for.

#define bissexto(a) (((a)%4)==0 && ((a)%100)!=0 ||


((a)%400)==0)

2) para_maiusculo(ch)

Se ch é letra minúscula, retornar a letra maiúscula


correspondente, senão, retornar o próprio ch.

#define para_maiusculo(c) ((minúsculo(c))? (c)-32 : (c)))

V - Explique com suas próprias palavras:

1) O que é e qual a principal importância de um protótipo de


função

Informar ao compilador o nome da função, tipo e lista de


parâmetros.

2) Qual a principal diferença entre um função e uma macro


parametrizada?

Enquanto que uma função é um segmento de programa à parte, a


macro é estendida em linha no programa.

3) O que caracteriza um deslocamento de bits à direita do tipo


aritmético?

Deslocamento à direita que mantém o sinal do número.

4) Por que quando se escreve uma macro parametrizada, o


parâmetro e a expressão completa devem ser escritos entre
parênteses?

A macro é simplesmente uma substituição de textos. Não faz


avaliação da expressão.

Você também pode gostar