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

Ed Lab01 C

Enviado por

Victor Queiroz
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)
24 visualizações37 páginas

Ed Lab01 C

Enviado por

Victor Queiroz
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
Você está na página 1/ 37

Estruturas de Dados

 Antes de iniciar o estudo recomenda-se ter instalado no computador um dos seguintes


programa: Microsoft Visual C++ Express Edition (que poder ser baixado e instalado
gratuitamente), Codeblocks ou Colab (Online). Estes programas são recomendados
principalmente pela compatibilidade na administração de memória utilizada nos exemplos e
exercícios de estrutura de dados.
 colab.research.google.com
Google Colab

O Colab, ou “Colaboratory”, permite escrever e executar Python no navegador e conta


com o seguinte:
 Nenhuma configuração necessária.
 Acesso gratuito a GPUs.
 Compartilhamento fácil.
 Trabalha em ambiente Linux.
 Utiliza os recursos da linguagem C do Colab.
Iniciando o ambiente

 Carregando o notebook
 Editar em célula de código
 Editor
 Compilação
 Comandos auxiliares (rm -rf ./* e ls –l)

 Estrutura módulo 1-1:2:3 (C, Vetores, Struct)


Introdução à linguagem C

 A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas da Bell
Laboratories
 O C é uma linguagem de propósito geral, sendo adequada à programação estruturada. No
entanto é mais utilizada escrever compiladores, analisadores léxicos, bancos de dados,
editores de texto, etc..
 A linguagem C pertence a uma família de linguagens cujas características são: portabilidade,
modularidade, compilação separada, recursos de baixo nível, geração de código eficiente,
confiabilidade, regularidade, simplicidade e facilidade de uso
ESPECIFICAÇÕES DA LINGUAGEM

 ·Linguagem compilada
 ·Linguagem de médio nível
 ·Linguagem multiplataforma (Há compiladores para Unix, Linux, Windows e para outros
sistemas operacionais).
 ·Linguagem Estruturada
 ·Linguagem para programadores
 ·Linguagem poderosa (utilizada em microprocessadores e para desenvolvimento de drivers
para periféricos de computador)
 Sintaxe
ESPECIFICAÇÕES DA LINGUAGEM

 Todo programa C inicia sua execução chamando a função main(), sendo obrigatória a sua
declaração no programa principal.
 Comentários no programa são colocados entre /* e */ não sendo considerados na
compilação.
 Uso do ponto virgula (Delimitador de instruções)
 Ao final de cada instrução colocar ponto e virgula (;), assim você informa o compilador o final de
uma instrução.
 Exemplo:

main() /* função obrigatória
*/ {
printf("oi");
}
ESPECIFICAÇÕES DA LINGUAGEM

 O C é case sensitive
 As Palavras chaves
 O C possui 32 palavras chaves (ANSI) (ou palavras reservadas) que, combinadas com a sintaxe
formal de C, forma a linguagem de programação C

auto double int struct


break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Estrutura de um programa em C

#include <stdio.h>
/*
Meu primeiro programa em C
*/

int main()
{
printf ("Meu primeiro programa em C");
return 0;
}
Entrada e saída

 stdio.h
 printf(formato, argumentos); Função para saída de valores segundo um determinado
formato.
 scanf(formato, lista de endereços); Função para capturar e armazenar valores
fornecidos via teclado.
Máscara tipo
%c char
%d int
%u unsigned int
%f double ou float
%e double ou float (científico)
%s cadeia de caracteres
\n quebra de linha
\t tabulação
\” caractere ”
\\ caractere \
Controle de visualização

Máscara
\n Nova Linha
\t Tabulação
\” Aspas
\\ \
\’
printf

 exemplos

printf ("%d %g\n", 33, 5.3); //resultado a impressão :


33 5.3

printf ("Inteiro = %d Real = %g\n", 33, 5.3);

Inteiro = 33 Real = 5.3


Variáveis inteiras

Char [0,128) igual a signed char ou unsigned char


signed char (-128,128) inteiro de pelo menos 8 bits
unsigned char (0,2256) mesmo que signed char sem negativos

Short (2 ,2 inteiro de pelo menos 16 bits tamanho pelo


menos igual a char

unsigned sort [0,2|6) mesmo tamanho que sort sem negativos

Int (2-l5,215) inteiro de pelo menos 16 bits; tamanho pelo


menos igual a short

unsigned int [0,2|6) mesmo tamanho que int sem negativos

Long (2 ,2) inteiro com sinal de pelo menos 32 bits;


tamanho pelo menos igual a int

unsigned log [0,232) mesmo tamanho que long sem valores


negativos
Variáveis Flutuantes

Float [3.4 , 3.4+ ] pelo menos 6 dígitos de precisão


decimal

Double (1.7-308,1.7+308) pelo menos 10 dígitos decimais e


precisão maior que do float

long double (1.7-308,1.7+308) pelo menos 10 dígitos decimais e


precisão maior que do double
Declaração de variáveis

Sintaxe:
Tipo de dado lista_de_nomes_de_variaveis ;

Exemplo:
int a; /* declara uma variável do tipo int */
int b; /* declara outra variável do tipo int */
float c; /* declara uma variável do tipo float */
a = 5; /* armazena o valor 5 em a */
b = 10; /* armazena o valor 10 em b */
c = 5.3; /* armazena o valor 5.3 em c */
int a, b; /* declara duas variáveis do tipo int */

int a;
a = 4.3; /* a variável armazenará o valor 4 */

int a = 5, b = 10; /* declara e inicializa as variáveis */


float c = 5.3;
Constantes de barra invertida

Código Significado
\b Retrocesso ("back")
\f Alimentação de formulário ("form feed")
\n Nova linha ("new line")
\r Retorno de carro ("carriage return")
\t Tabulação horizontal ("tab")
\" Aspas
\' Apóstrofo
\0 Nulo (0 em decimal)
\\ Barra invertida
\v Tabulação vertical
\a Sinal sonoro ("beep")
\N Constante octal (N é o valor da constante)
\xN Constante hexadecimal (N é o valor da constante)
Operadores
Operadores

A expressão É equivalente a

b=a++ b=a

a=a+1

b=++a a=a+1

b=a
Operadores de atribuição
Operadores relacionais e lógicos

< menor que


> maior que
<= menor ou igual que
>= maior ou igual que
== igual a
! = diferente de

&& operador binário E (AND)

|| operador binário OU (OR)

! operador unário de NEGAÇÃO (NOT)


Conversão de tipo

 O programador pode explicitamente requisitar uma conversão de tipo através do uso do


operador de molde de tipo (operador cast).

int a, b; a = (int) 3.5;


b = (int) 3.5 % 2;
printf
scanf

scanf (formato, lista de endereços das variáveis...);


%c especifica um char
%d especifica um int
%u especifica um unsigned int
%f,%e,%g Especificam um float
%lf, %le, %lg Especificam um double
%s especifica uma cadeia de caracteres
O operador & retorna o endereço de uma variável. Assim, para ler um
inteiro, devemos ter:
int n;
scanf ("%d", &n);

scanf ("%d:%d", &h, &m);


Algoritmo Consumo Medio #include <stdio.h>
Var CM, DIST, VOL: Real; void main(){
Início float CM, DIST, VOL;
Escreva("Algoritmo para calcular o consumo."); printf("Algoritmo para calcular o consumo.");
Escreva("Distância total percorrida (Km): "); printf("Distância total percorrida (Km): ");
Leia(DIST); scanf("%f",&DIST);
Escreva("Volume de combustível gasto (L): "); printf("\nVolume de combustível gasto (L): ");
Leia(VOL); scanf("%f",&VOL);
CM <- DIST/VOL; CM = DIST/VOL;
Escreva("Consumo mádio =", CM, "Km/l"); printf("Consumo mádio =%10.2f Km/l\n",CM);
Fim }
Algoritmo dias_vividos #include <stdio.h>
Constante Dias 365 void main(){
variáveis nome: caractere; int Dias=365;
dias_viv, idade: inteiro; int dias_viv, idade;
Inicio char nome[30];
Escreva (“Digite seu nome:”) printf("Digite seu nome:");
Leia nome scanf("%s",&nome);
Escreva (“Digite sua idade” ) printf("\nDigite sua idade");
Leia (idade) scanf("%d",&idade);
dias_viv<-dias *idade; dias_viv=Dias *idade;
Escreva (nome, “, você tem” , dias_viv printf("\n %s você tem %d dias
, “dias vividos”); vividos\n",nome,dias_viv);
Fim. }
Decisões com if

if é o comando de decisão básico em C. Sua forma pode ser:


if (expr) {
bloco de comandos 1
}
ou
if ( expr ) {
bloco de comandos 1
}
else {
bloco de comandos 2
}
Caso tenha apenas um comando:
if ( expr )
comandol;
else
comando2;
 Exemplo

void main() {
int a, b;
printf("Digite dois numeros inteiros:");
scanf("%d%d",&a,&b);
if ((a%2 == 0) && (b%2 == 0))
printf ( "Voce digitou dois numeros pares!\n");
}
Operador condicional

Sua forma geral é:


condição ? expressãol : expressão2;
se a condição for verdadeira, a expressãol é avaliada; caso contrário,
avalia-se a expressão2.

if ( a > b )
maximo = a;
else
maximo = b;

Equivale a:
maximo = a > b ? a : b ;
Seleção

 Além da construção else-if, C provê um comando (switch) para selecionar um dentre um conjunto de
possíveis casos. Ela obedece as regras do Escolha Caso, exceto pelo fato do programa continuar a
executar os comandos até encontrar um break; então indo para o final do bloco. Sua forma geral é:

switch ( expr )
{
case op1:
... /* comandos executados se expr == op1 */
break;
case op2:
... /* comandos executados se expr == op2 */
break;
case op3:
... /* comandos executados se expr == op3 */
break;
default:
... /* executados se expr for diferente de todos */
break;
}
/* calculadora de quatro operações */
Exemplo #include <stdio.h>
void main ()
{
float num1, num2;
char op;
printf("Digite: numero op numero\n");
scanf ("%f %c %f", &num1, &op, &num2);
switch (op)
{
case '+':
printf(" = %f\n", num1+num2);
break;
case '-':
printf(" = %f\n", num1-num2);
break;
case '*':
printf(" = %f\n", num1*num2);
break;
case '/':
printf(" = %f\n", num1/num2);
break;
default:
printf("Operador invalido!\n");
break;
}
}
Construções com laços

 Enquanto faça:

while (expr) {
bloco de comandos
}
Exemplo Enquanto faça:

 Calculo de fatorial
/* Fatorial */
#include <stdio.h>
void main(){
int i; int n; int f = 1;
printf("Digite um número inteiro nao negativo:");
scanf("%d", &n);
/* calcula fatorial */ i = 1;
while (i <= n) {
f *= i;
i++;
}
printf(" Fatorial = %d \n", f);
}
Construções com laços

 Para até que


for (expr inicial; expr booleana; expr de incremento)
{
bloco de comandos
}

 Comparando com o laço enquanto:

Expr inicial ;
while (expr booleana)
{
bloco de comandos

expr de incremento
}
Exemplo

 Cálculo de fatorial 2:

/* Fatorial (versao 2) */
#include <stdio.h>
void main(){
int i; int n;
int f = 1;
printf("Digite um número inteiro nao negativo:"); scanf("%d", &n);
/* calcula fatorial */
for (i = 1; i <= n; i++) {
f *= i;
}
printf(" Fatorial = %d \n", f);
}
Construções com laços

 Repita enquanto:

do {
bloco de comandos
} while (exprbooleana);
Exemplo Enquanto faça:

 Calculo de fatorial

/* Fatorial (versao 3) */
#include <stdio.h>
void main () {
int i; int n;
int f = l;
/* requisita valor do usuário */
do {
printf("Digite um valor inteiro nao negativo:");
scanf ("%d", &n);
} while (n<Q);
/* calcula fatorial */ for (i = l; i <= n; i++) f *= i;
printf(" Fatorial = %dXn", f) ;
}
ATÉ A PRÓXIMA!

Você também pode gostar