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

03 Estrutura Sequencial

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1/ 43

Curso C# primeiros passos:

Lógica de Programação e Algoritmos


Capítulo: Estrutura sequencial
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Conteúdo
• Expressões aritméticas
• Variáveis e tipos básicos de C#
• Três operações básicas de programação
• Entrada de dados
• Processamento de dados
• Saída de dados
• Funções matemáticas em C#
• Nesta seção do curso:
• Explicações teórico-práticas
• Excelente para aprendizado e revisão
• PRÁTICA!
• Exercícios resolvidos
• Debug (execução passo a passo)
• URI Online Judge
• Exercícios resolvidos
• Exercícios propostos

Expressões aritméticas
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Expressões aritméticas

expressão resultado valor numérico

4+5 resultado 9

Operadores aritméticos

Operador Significado
+ adição
C, C++, - subtração
Java, C# * multiplicação
/ divisão
% resto da divisão ("mod")

1º lugar: * / %
Precedência: 2º lugar: + -
Exemplos de expressões aritméticas
2*6/3 Resultado = 4

3+2*4 Resultado = 11

(3 + 2) * 4 Resultado = 20

60 / (3 + 2) * 4 Resultado = 48

60 / ((3 + 2) * 4) Resultado = 3

Exemplos com o operador "mod"


14 % 3 Resultado = 2

19 % 5 Resultado = 4

Pois:

14 3 19 5

2 4 4 3
Variáveis e tipos básicos em C#
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Visão geral
• Um programa de computador em execução lida com dados

• Como esses dados são armazenados?

• Em VARIÁVEIS!
Variáveis
Definição informal:
Em programação, uma variável é uma porção de memória (RAM) utilizada para armazenar
dados durante a execução dos programas.
Memória RAM:
(8 Giga Bytes)

Desenho 3 5000.0
esquemático:
x salario

"Maria"
nome

Declaração de variáveis
Sintaxe:
Memória RAM
<tipo> <nome> = <valor inicial>;
(opcional)
25 1.68 F
Exemplos:
int idade = 25; idade altura sexo
double altura = 1.68;
char sexo = 'F';

Uma variável possui:


• Nome (ou identificador)
• Tipo
• Valor
• Endereço
Tipos básicos em C#

Um bit pode armazenar 2 valores possíveis (0 ou 1)


Cada bit = 2 possibilidades
8 bits:

2 x 2 x 2 x 2 x 2 x 2 x 2 x 2 = 28 = 256 possibilidades
Tipos básicos em C#

Nomes de variáveis
• Não pode começar com dígito: use uma letra ou _
• Não pode ter espaço em branco
• Não usar acentos ou til
• Sugestão: use o padrão "camel case"

Errado: Correto:

int 5minutos; int _5minutos;


int salário; int salario;
int salário do funcionario; int salarioDoFuncionario;
Variáveis e tipos básicos em C#
• Conceito informal
• Declaração de variáveis: <tipo> <nome> = valor;
• Tipos básicos em C#
• Nomes de variáveis / padrão camel case

/educandoweb
/educandoweb

As três operações básicas de


programação
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Um programa de computador é capaz de realizar
essencialmente três operações:

Entrada Processamento Saída


de dados de dados de dados

Entrada de dados Dispositivo de ENTRADA

Usuário Programa
(dentro de variáveis)

Também chamada de
LEITURA:

"O programa está lendo dados."


Processamento de dados

É quando o programa realiza os cálculos

O processamento de
dados se dá por um
comando chamado
ATRIBUIÇÃO

media = (x + y) / 2.0;

Saída de dados Dispositivo de SAÍDA

Programa Usuário

Também chamada de
ESCRITA:

"O programa está escrevendo dados."


As três operações básicas de programação
• Entrada de dados (leitura)
• Processamento de dados
• Saída de dados (escrita)'

• VAMOS VER A SEGUIR COMO FAZER NA PRÁTICA CADA UMA DESSAS TRÊS
OPERAÇÕES

/educandoweb
/educandoweb

Saída de dados em C#
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Um programa de computador é capaz de realizar
essencialmente três operações:

Entrada Processamento Saída


de dados de dados de dados

Saída de dados Dispositivo de SAÍDA

Programa Usuário

Também chamada de
ESCRITA:

"O programa está escrevendo dados."


Para escrever na tela um texto qualquer
Sem quebra de linha ao final:

Console.Write("Bom dia!");

Com quebra de linha ao final:

Console.WriteLine("Bom dia!");

Para escrever o conteúdo de uma variável com


ponto flutuante
Suponha uma variável tipo double declarada e iniciada: %n = quebra de linha
(independente de
double x = 10.35784; plataforma)

Console.WriteLine(x);

Console.WriteLine(x.ToString("F2"));
Console.WriteLine(x.ToString("F4"));

Console.WriteLine(x.ToString("F2", CultureInfo.InvariantCulture));

using System.Globalization;
Para concatenar vários elementos em um mesmo
comando de escrita
Regra geral:

elemento1 + elemento2 + elemento3 + ... + elementoN

Console.WriteLine("RESULTADO = " + x);

Console.WriteLine("O valor do troco é " + x + " reais");

Console.WriteLine("O valor do troco é " + x.ToString("F2") + " reais");

using System;
using System.Globalization;

namespace Curso {
class Program {
static void Main(string[] args) {

double x = 10.35784;
int y = 32;
string z = "Maria";
char w = 'F';

Console.Write("Olá mundo!");
Console.WriteLine("Bom dia!");
Console.WriteLine("Até mais!");

Console.WriteLine();
Console.WriteLine(x);
Console.WriteLine(x.ToString("F2"));
Console.WriteLine(x.ToString("F4"));
Console.WriteLine(x.ToString("F2", CultureInfo.InvariantCulture));

Console.WriteLine();
Console.WriteLine("RESULTADO = " + x);
Console.WriteLine("O valor do troco é " + x + " reais");
Console.WriteLine("O valor do troco é " + x.ToString("F2") + " reais");

Console.WriteLine();
Console.WriteLine("A paciente " + z + " tem " + y + " anos e seu sexo é: " + w);

Console.ReadLine();
}
}
}
Saída de dados em C#
• Console.Write
• Console.WriteLine
• x.ToString("F2")
• CultureInfo.InvariantCulture
• Como concatenar vários elementos em um mesmo write
• Exemplo completo

/educandoweb
/educandoweb

Processamento de dados em C#,


Casting
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Processamento de dados
Comando de atribuição.

Sintaxe: REGRA:

1) A expressão é calculada
<variável> = <expressão>;
2) O resultado da expressão é
armazenado na variável

Lê-se “recebe”

Exemplo 1
int x, y;

x = 5;

y = 2 * x;

Console.WriteLine(x);
Console.WriteLine(y);
Exemplo 2
int x;
double y;

x = 5;

y = 2 * x;

Console.WriteLine(x);
Console.WriteLine(y);

b=6
Exemplo 3
h=5

double b, B, h, area; B=8

b = 6.0; (𝑏 + 𝐵)
𝑎𝑟𝑒𝑎 = ×ℎ
B = 8.0; 2
h = 5.0;
No exemplo:
area = (b + B) / 2.0 * h; (6 + 8)
𝑎𝑟𝑒𝑎 = ×5
2
Console.WriteLine(area); 14
= × 5 = 7 × 5 = 35
2
double b, B, h, area; Boa prática:

b = 6.0; Sempre indique o tipo do número, se a


expressão for de ponto flutuante (não
B = 8.0;
inteira).
h = 5.0;
Para double use:
area = (b + B) / 2.0 * h; .0

Console.WriteLine(area); Para float use:


f

float b, B, h, area; Boa prática:

b = 6f; Sempre indique o tipo do número, se a


expressão for de ponto flutuante (não
B = 8f;
inteira).
h = 5f;
Para double use:
area = (b + B) / 2f * h; .0

Console.WriteLine(area); Para float use:


f
Exemplo 4
int a, b;
double resultado;

a = 5;
b = 2;

resultado = a / b;

Console.WriteLine(resultado);

Casting
É a conversão explícita de um tipo para outro.

É necessário quando o compilador não é capaz de “adivinhar” que o


resultado de uma expressão deve ser de outro tipo.
Exemplo 4
int a, b;
double resultado;

a = 5;
b = 2;

resultado = a / b;

Console.WriteLine(resultado);

Exemplo 4
int a, b;
double resultado;

a = 5;
b = 2;

resultado = (double) a / b;

Console.WriteLine (resultado);
Exemplo 5
double a;
int b;

a = 5.0;
b = a;

Console.WriteLine(b);

Processamento de dados / Casting


• Comando de atribuição
• Casting

/educandoweb
/educandoweb
Entrada de dados em C# - Parte 1
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Comando
Console.ReadLine();

• Lê da entrada padrão até a quebra de linha.


• Retorna os dados lidos na forma de string.
Console:

Checklist Bom dia!


Vermelho
Verde
Azul
• Ler um texto até a quebra Amarelo Laranja Cinza
de linha e armazenar em
uma variável
Memória:

• Ler três palavras, uma em


cada linha, armazenando "Bom dia!"
cada uma em uma variável frase

"Vermelho" "Green" "Blue"


• Ler três palavras na mesma x y z
linha, separadas por
espaço, armazenando cada
uma em uma variável "Amarelo" "Laranja" "Cinza"
a b c

Split Console:
batata tomate abacaxi

string s = Console.ReadLine();

string[] vet = s.Split(' '); "tomate" "abacaxi


"batata"
string p1 = vet[0]; "
p1 p2 p3
string p2 = vet[1];
string p3 = vet[2];

0 "batata"
1 "tomate"
2 "abacaxi"
"batata tomate abacaxi" vet
s
Demo

string frase = Console.ReadLine();


string x = Console.ReadLine();
string y = Console.ReadLine();
string z = Console.ReadLine();

string[] v = Console.ReadLine().Split(' ');


string a = v[0];
string b = v[1];
string c = v[2];

Console.WriteLine("Você digitou: ");


Console.WriteLine(frase);
Console.WriteLine(x);
Console.WriteLine(y);
Console.WriteLine(z);
Console.WriteLine(a);
Console.WriteLine(b);
Console.WriteLine(c);

Entrada de dados em C# - Parte 2


http://educandoweb.com.br
Prof. Dr. Nelio Alves
Console:

Checklist 35
F
4.32
Maria F 23 1.68
• Ler um número inteiro

• Ler um caractere Memória:

• Ler um número double 35 'F' 4.32


n1 ch n2
• Ler um nome (única palavra), sexo
(caractere F ou M), idade (inteiro) e
altura (double) na mesma linha, "Maria" 'F' 23 1.68
armazenando-os em quatro nome sexo idade altura
variáveis com os devidos tipos

Demo
int n1 = int.Parse(Console.ReadLine());
char ch = char.Parse(Console.ReadLine());
double n2 = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

string[] vet = Console.ReadLine().Split(' ');


string nome = vet[0];
char sexo = char.Parse(vet[1]);
int idade = int.Parse(vet[2]);
double altura = double.Parse(vet[3], CultureInfo.InvariantCulture);

Console.WriteLine("Você digitou:");
Console.WriteLine(n1);
Console.WriteLine(ch);
Console.WriteLine(n2.ToString("F2", CultureInfo.InvariantCulture));
Console.WriteLine(nome);
Console.WriteLine(sexo);
Console.WriteLine(idade);
Console.WriteLine(altura.ToString("F2", CultureInfo.InvariantCulture));
Exercício de fixação
Fazer um programa para executar a seguinte interação com o SAÍDA ESPERADA (NÚMEROS
usuário, lendo os valores destacados em vermelho, e depois
mostrar os dados na tela: REAIS COM DUAS CASAS
DECIMAIS):
Entre com seu nome completo:
Alex Green Alex Green
Quantos quartos tem na sua casa? 3
3 500.50
Entre com o preço de um produto: Green
500.50 21
Entre seu último nome, idade e altura (mesma linha): 1.73
Green 21 1.73

(correção na próxima página)

using System;
using System.Globalization;
namespace Course {
class Program {
static void Main(string[] args) {

Console.WriteLine("Entre com seu nome completo:");


string fullName = Console.ReadLine();
Console.WriteLine("Quantos quartos tem na sua casa?");
int bedrooms = int.Parse(Console.ReadLine());
Console.WriteLine("Enter product price:");
double price = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
Console.WriteLine("Entre seu último nome, idade e altura (mesma linha):");
string[] vect = Console.ReadLine().Split(' ');
string lastName = vect[0];
int age = int.Parse(vect[1]);
double height = double.Parse(vect[2], CultureInfo.InvariantCulture);

Console.WriteLine(fullName);
Console.WriteLine(bedrooms);
Console.WriteLine(price.ToString("F2", CultureInfo.InvariantCulture));
Console.WriteLine(lastName);
Console.WriteLine(age);
Console.WriteLine(height.ToString("F2", CultureInfo.InvariantCulture));
}
}
}
Funções matemáticas
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Algumas funções matemáticas em C#

Exemplo Significado
A = Math.Sqrt(x); Variável A recebe a raiz quadrada de x
A = Math.Pow(x, y); Variável A recebe o resultado de x elevado a y
A = Math.Abs(x); Variável A recebe o valor absoluto de x
using System;
using System.Globalization;

namespace curso {
class Program {
static void Main(string[] args) {

double x = 3.0;
double y = 4.0;
double z = -5.0;
double A, B, C;

A = Math.Sqrt(x);
B = Math.Sqrt(y);
C = Math.Sqrt(25.0);
Console.WriteLine("Raiz quadrada de " + x + " = " + A);
Console.WriteLine("Raiz quadrada de " + y + " = " + B);
Console.WriteLine("Raiz quadrada de 25 = " + C);

A = Math.Pow(x, y);
B = Math.Pow(x, 2.0);
C = Math.Pow(5.0, 2.0);
Console.WriteLine(x + " elevado a " + y + " = " + A);
Console.WriteLine(x + " elevado ao quadrado = " + B);
Console.WriteLine("5 elevado ao quadrado = " + C);

A = Math.Abs(y);
B = Math.Abs(z);
Console.WriteLine("Valor absoluto de " + y + " = " + A);
Console.WriteLine("Valor absoluto de " + z + " = " + B);

Console.ReadLine();
}
}
}

Incluindo funções em expressões maiores

delta = Math.Pow(b, 2.0) - 4*a*c;

x1 = (-b + Math.Sqrt(delta)) / (2.0 * a);


x2 = (-b - Math.Sqrt(delta)) / (2.0 * a);
Funções matemáticas
• sqrt – raiz quadrada
• pow – potenciação
• abs – valor absoluto
• Exemplos

/educandoweb
/educandoweb

Como utilizar o Debug no Visual


Studio (execução passo a passo)
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Exercício resolvido 01
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Fazer um programa para ler as medidas da largura e comprimento de um terreno


retangular com uma casa decimal, bem como o valor do metro quadrado do
terreno com duas casas decimais. Em seguida, o programa deve mostrar o valor
da área do terreno, bem como o valor do preço do terreno, ambos com duas
casas decimais, conforme exemplo.

Exemplo:

Entrada: Saída:
10.0 AREA = 300.00
30.0 PRECO = 60000.00
200.00
using System;
using System.Globalization;

namespace curso {
class Program {
static void Main(string[] args) {

double largura, comprimento, precoMetroQuadrado, area, preco;

largura = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);


comprimento = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
precoMetroQuadrado = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

area = largura * comprimento;


preco = area * precoMetroQuadrado;

Console.WriteLine("AREA = " + area.ToString("F2", CultureInfo.InvariantCulture));


Console.WriteLine("PRECO = " + preco.ToString("F2", CultureInfo.InvariantCulture));

Console.ReadLine();
}
}
}

Como executar o debug do Visual Studio


• Para marcar uma linha de breakpoint:
• Depurar -> Alternar ponto de interrupção (F9)
• Para iniciar o debug:
• Depurar -> Iniciar depuração (F5)
• Para executar uma linha:
• F10
• Para interromper o debug:
• SHIFT + F5

/educandoweb
/educandoweb
Nosso primeiro exercício no URI
Online Judge
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Nosso primeiro exercício no URI Online Judge

• Cadastrar no URI Online Judge


• Selecionar um problema para resolver
• Enviar a solução do problema
• Prevenção de erros:
• Wrong answer
• Presentation error
Exercício URI 1001

using System;

namespace Curso {
class Program {
static void Main(string[] args) {

int A, B, X;

A = int.Parse(Console.ReadLine());
B = int.Parse(Console.ReadLine());

X = A + B;

Console.WriteLine("X = " + X);


}
}
}

Exercícios propostos - PARTE 1


http://educandoweb.com.br
Prof. Dr. Nelio Alves
• Exercícios resolvidos:
• Resolvido 01
• URI 1001

• Exercícios propostos do URI:


• 1002, 1003, 1004, 1007, 1008, 1010, 1014, 1016, 1017
• 1005, 1006 - média ponderada

• Soluções:
https://github.com/acenelio/curso-logica-de-programacao-csharp

Exercício resolvido 02
http://educandoweb.com.br
Prof. Dr. Nelio Alves
Fazer um programa para ler as medidas da base e altura de um retângulo. Em
seguida, mostrar o valor da área, perímetro e diagonal deste retângulo, com quatro
casas decimais, conforme exemplo.

Exemplo:
Entrada: Saída:
5.0 AREA = 20.0000
4.0 PERIMETRO = 18.0000
DIAGONAL = 6.4031

4.0

á𝑟𝑒𝑎 = 𝑏𝑎𝑠𝑒 × 𝑎𝑙𝑡𝑢𝑟𝑎


5.0 5.0
𝑝𝑒𝑟𝑖𝑚𝑒𝑡𝑟𝑜 = 2 × 𝑏𝑎𝑠𝑒 + 2 × 𝑎𝑙𝑡𝑢𝑟𝑎

𝑑𝑖𝑎𝑔𝑜𝑛𝑎𝑙 = 𝑏𝑎𝑠𝑒 + 𝑎𝑙𝑡𝑢𝑟𝑎


4.0
Exercício resolvido: estrutura sequencial
• Funções matemáticas
• sqrt
• pow

• Precedência de operadores e uso de parêntesis

• Código fonte na próxima página

using System;
using System.Globalization;

namespace Curso {
class Program {
static void Main(string[] args) {

double b, a, area, perimetro, diagonal;

b = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);
a = double.Parse(Console.ReadLine(), CultureInfo.InvariantCulture);

area = b * a;
perimetro = 2 * (b + a);
diagonal = Math.Sqrt(Math.Pow(b, 2.0) + Math.Pow(a, 2.0));

Console.WriteLine("AREA = " + area.ToString("F4", CultureInfo.InvariantCulture));


Console.WriteLine("PERIMETRO = " + perimetro.ToString("F4", CultureInfo.InvariantCulture));
Console.WriteLine("DIAGONAL = " + diagonal.ToString("F4", CultureInfo.InvariantCulture));

Console.ReadLine();
}
}
}
Exercício resolvido 03
http://educandoweb.com.br
Prof. Dr. Nelio Alves

Fazer um programa para ler o nome (apenas uma palavra) e idade de duas pessoas.
Ao final mostrar uma mensagem com os nomes e a idade média entre essas pessoas,
com uma casa decimal, conforme exemplo.

Exemplo:
Entrada: Saída:
Maria 19 A idade média de Maria e Joaquim é de 19.5 anos
Joaquim 20
Exercício resolvido: estrutura sequencial
• Aplicamos:
• String
• Casting

• Código fonte na próxima página

using System;
using System.Globalization;

namespace Curso {
class Program {
static void Main(string[] args) {

string nome1, nome2;


int idade1, idade2;
double media;
string[] vet;

vet = Console.ReadLine().Split(' ');


nome1 = vet[0];
idade1 = int.Parse(vet[1]);

vet = Console.ReadLine().Split(' ');


nome2 = vet[0];
idade2 = int.Parse(vet[1]);

media = (double)(idade1 + idade2) / 2.0;

Console.WriteLine("A idade média de " + nome1 + " e " + nome2 + " é de "
+ media.ToString("F1", CultureInfo.InvariantCulture) + " anos");

Console.ReadLine();
}
}
}
Exercícios propostos - PARTE 2
http://educandoweb.com.br
Prof. Dr. Nelio Alves

• Exercícios resolvidos:
• Resolvidos 02 e 03

• Exercícios propostos do URI:


• 1009 - string
• 1011 - casting
• 1012 - geometria
• 1013 - abs
• 1015 - sqrt, pow

• Soluções:
https://github.com/acenelio/curso-logica-de-programacao-csharp
Exercício resolvido 04 - URI 1019
http://educandoweb.com.br
Prof. Dr. Nelio Alves

ANÁLISE:
1 minuto = 60 segundos

1 hora = 60 minutos = 3600 segundos

140153 segundos contém quantas horas?

140153 / 3600 = 38,931388...

38 x 3600 = 136800
SOBRA: 3353

3353 / 60 = 55,8833...

55 x 60 = 3300
SOBRA: 53
Exercício resolvido: estrutura sequencial
• URI 1019

• Aplicamos:
• Operador % ("mod")

• Código fonte na próxima página

using System;

namespace Curso {
class Program {
static void Main(string[] args) {

int N, resto, horas, minutos, segundos;

N = int.Parse(Console.ReadLine());

horas = N / 3600;
resto = N % 3600;

minutos = resto / 60;


segundos = resto % 60;

Console.WriteLine(horas + ":" + minutos + ":" + segundos);

Console.ReadLine();
}
}
}
Exercícios propostos - PARTE 3
http://educandoweb.com.br
Prof. Dr. Nelio Alves

• Exercício resolvido:
• URI 1019

• Exercícios propostos do URI:


• 1018 - mod
• 1020 - mod
• 1021 - mod / (desafio - casting)
• 1061 - mod / string (desafio - interpretação)

• Soluções:
https://github.com/acenelio/curso-logica-de-programacao-csharp

Você também pode gostar